This is a Vulnerability. To view all vulnerabilities, please see the Vulnerability Category page.
Last revision (mm/dd/yy): 07/9/2014
Creating Debug Binary
Debugging messages help attackers learn about the system and plan a form of attack.
ASP .NET applications can be configured to produce debug binaries. These binaries give detailed debugging messages and should not be used in production environments. The debug attribute of the <compilation> tag defines whether compiled binaries should include debugging information. Symbols (.pdb files) tell the debugger how to find the original source files for a binary, and how to map breakpoints in code to lines in those source files.
The use of debug binaries causes an application to provide as much information about itself as possible to the user. Debug binaries are meant to be used in a development or testing environment and can pose a security risk if they are deployed to production. Attackers can leverage the additional information they gain from debugging output to mount attacks targeted on the framework, database, or other resources used by the application.
To identify this vulnerablity, look for the following pattern on the compilation section within the system.web group of the Web.config file at the application's root directory:
<configuration> <compilation debug="true"/> </configuration>
We take the HTTP request:
GET / HTTP/1.1 Host: www.test.com User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: Token=dfe31f692334663ae9d466662be6d3 Connection: keep-alive
Change the parameters:
- We set the path to "/Test.aspx";
- Add the HTTP header "Command: stop-debug";
- Method set to "DEBUG";
- Remove, if present, the parameter 'ReturnUrl';
DEBUG /Test.aspx HTTP/1.1 HTTP/1.1 Cookie: Token=dfe31f692334663ae9d466662be6d3 Content-Length: 0 Accept: */* Accept-Language: it User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64;) Host: www.test.com Command: stop-debug
HTTP/1.1 200 OK Server: Microsoft-IIS/7.0 X-Powered-By: ASP.NET Date: Mon, 14 Apr 2014 12:19:45 GMT Content-Length: 2 OK
Follow the request in the browser:
Missing Custom Error Handling
An ASP .NET application must enable custom error pages in order to prevent attackers from mining information from the framework's built-in error responses.
ASP.NET applications should be configured to use custom error pages instead of the framework default page. In the event of an application exception, use the <customErrors> element to configure custom, generic error messages that should be returned to the client. The default error page provides detailed information about the error that occurred, and should not be used in production environments. Attackers can leverage the additional information provided by a default error page to mount attacks targeted on the framework, database, or other resources used by the application.
Make sure that the mode attribute is set to "RemoteOnly" in the web.config file as shown in the following example.
<customErrors mode="RemoteOnly" />
The mode attribute of the <customErrors> tag in the Web.config file defines whether custom or default error pages are used. It should be configured to use a custom page as follows:
<customErrors mode="On" defaultRedirect="YourErrorPage.htm" />
Related Threats Information leakage is the major threat due to the improper error handling. Error messages provide quite useful information to the attacker that can be used to launch further attacks such as SQL Injection. Below are a few examples of threats because of the improper error handling: A. Error messages can be used by an attacker to extract specific information about the System and Application. B. An unexpected error can be used to crack the application off line thus creating a denial-of-service attack by an attacker. C. Unexpected errors may provide an attacker with a buffer or stack overflow condition that sets the stage for an arbitrary code execution.
Examples Two typical misconfigurations:
<customErrors mode="Off" />
Custom error message mode is turned off. An ASP.NET error message with detailed stack trace and platform versions will be returned.
<customErrors mode="RemoteOnly" />
Custom error message mode for remote user only. No defaultRedirect error page specified. The local user on the web server will see a detailed stack trace. For remote users, an ASP.NET error message with the server customError configuration setting and the platform version will be returned.
Password in Configuration File
The clear-text passwords are in the configuration files. Clear-text passwords in the configuration files are subject to exposure in a variety of ways, including people getting access to the file, the file being served directly to a user due to a server error, a file download flaw, access to a backup copy, or some other exposure.
- Follow a common and standard approach for exception handling.
- Do not display detailed error messages to the end-user such as Path Information, Database related information, stack traces, etc. In short, disable or limit error messages.
- Override the default error handler so that it should always return a "200 OK" error message. This will reduce the ability of automated vulnerability scanning tools from making conclusions from any serious error message.
- Always provide customized error pages for any kind of error (i.e. Database of application error). Configure the Web Server to redirect to the customized error page in the event of an error.
Related Technical Impacts
- Web application threats and vulnerabilities Quiz
- Asp.Net Web.Config Configuration File
- OWASP Top 10 2007 - Information Leakage and Improper Error Handling