CWE-497: Exposure of Sensitive System Information to an Unauthorized Control Sphere
Network-based products, such as web applications, often run on top of an operating system or similar environment. When the product communicates with outside parties, details the underlying system are expected to remain hidden, such as path names for data files, other OS users, installed packages, the application environment, etc. This system information may be provided by the product itself, or buried within diagnostic or debugging messages. Debugging information helps an adversary learn the system and form an attack plan.
An information exposure occurs when system data or debugging information leaves the program through an output stream or logging function that makes it accessible to unauthorized parties. Using other weaknesses, an attacker could cause errors to occur; the response to these errors can reveal detailed system information, along with other impacts. An attacker can use messages that reveal technologies, operating systems, and product versions to tune the attack against known vulnerabilities in these technologies. A product may use diagnostic methods that provide significant implementation details such as stack traces as part of its error handling mechanism.
Read Application Data
Architecture and Design; Implementation
Class: Not Language-Specific (Undetermined Prevalence)
Class: Not Technology-Specific (Undetermined Prevalence)
Class: Web Based (Undetermined Prevalence)
The following code prints the path environment variable to the standard error stream:
This code prints all of the running processes belonging to the current user.
If invoked by an unauthorized web user, it is providing a web page of potentially sensitive information on the underlying system, such as command-line arguments ( CWE-497 ). This program is also potentially vulnerable to a PATH based attack ( CWE-426 ), as an attacker may be able to create malicious versions of the ps or grep commands. While the program does not explicitly raise privileges to run the system commands, the PHP interpreter may by default be running with higher privileges than users.
The following code prints an exception to the standard error stream:
Depending upon the system configuration, this information can be dumped to a console, written to a log file, or exposed to a remote user. In some cases the error message tells the attacker precisely what sort of an attack the system will be vulnerable to. For example, a database error message can reveal that the application is vulnerable to a SQL injection attack. Other error messages can reveal more oblique clues the system. In the example above, the path could imply information the type of operating system, the applications installed on the system, and the amount of care that the administrators have put into configuring the program.
The following code constructs a database connection string, uses it to create a new connection to the database, and prints it to the console.
Depending on the system configuration, this information can be dumped to a console, written to a log file, or exposed to a remote user. In some cases the error message tells the attacker precisely what sort of an attack the system is vulnerable to. For example, a database error message can reveal that the application is vulnerable to a SQL injection attack. Other error messages can reveal more oblique clues the system. In the example above, the path could imply information the type of operating system, the applications installed on the system, and the amount of care that the administrators have put into configuring the program.
Note: this is a curated list of examples for users to understand the variety of ways in which this weakness can be introduced. It is not a complete list of all CVEs that are related to this CWE entry.
The full story
This article is one source in a clustered incident — the cluster page carries the summary, timeline and every other outlet covering it.
