Description
The product does not properly prevent sensitive system-level information from being accessed by unauthorized actors who do not have the same level of access to the underlying system as the product does.
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 about 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 about 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.
Potential Impact
Confidentiality
Read Application Data
Demonstrative Examples
char* path = getenv("PATH");...sprintf(stderr, "cannot find exe on path %s\n", path);//assume getCurrentUser() returns a username that is guaranteed to be alphanumeric (avoiding CWE-78)
$userName = getCurrentUser();$command = 'ps aux | grep ' . $userName;system($command);try {...} catch (Exception e) {e.printStackTrace();}try {...} catch (Exception e) {Console.Writeline(e);}string cs="database=northwind; server=mySQLServer...";SqlConnection conn=new SqlConnection(cs);...Console.Writeline(cs);Mitigations & Prevention
Production applications should never use methods that generate internal details such as stack traces and error messages unless that information is directly committed to a log that is not viewable by the end user. All error message text should be HTML entity encoded before being written to the log file to protect against potential cross-site scripting attacks against the viewer of the logs
Detection Methods
- Automated Static Analysis High — Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then sea
Real-World CVE Examples
| CVE ID | Description |
|---|---|
| CVE-2021-32638 | Code analysis product passes access tokens as a command-line parameter or through an environment variable, making them visible to other processes via the ps command. |
Related Weaknesses
Taxonomy Mappings
- 7 Pernicious Kingdoms: — System Information Leak
- The CERT Oracle Secure Coding Standard for Java (2011): ERR01-J — Do not allow exceptions to expose sensitive information
- Software Fault Patterns: SFP23 — Exposed Data
Frequently Asked Questions
What is CWE-497?
CWE-497 (Exposure of Sensitive System Information to an Unauthorized Control Sphere) is a software weakness identified by MITRE's Common Weakness Enumeration. It is classified as a Base-level weakness. The product does not properly prevent sensitive system-level information from being accessed by unauthorized actors who do not have the same level of access to the underlying system as the product doe...
How can CWE-497 be exploited?
Attackers can exploit CWE-497 (Exposure of Sensitive System Information to an Unauthorized Control Sphere) to read application data. This weakness is typically introduced during the Implementation phase of software development.
How do I prevent CWE-497?
Key mitigations include: Production applications should never use methods that generate internal details such as stack traces and error messages unless that information is directly committed to a log that is not viewable by t
What is the severity of CWE-497?
CWE-497 is classified as a Base-level weakness (Medium abstraction). It has been observed in 1 real-world CVEs.