1565
Likelihood Of Exploit
Low
Common Consequences
Scope Impact Likelihood
Integrity
Confidentiality
Availability
Access Control
Other
Gain Privileges or Assume Identity
Read Application Data
Modify Application Data
Execute Unauthorized Code or Commands
Other
Exposing critical functionality essentially provides
an attacker with the privilege level of the exposed
functionality. This could result in the modification or
exposure of sensitive data or possibly even execution of
arbitrary code.
Detection Methods
Automated Static Analysis
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 searching for potentially-vulnerable patterns that connect "sources" (origins of input)
with "sinks" (destinations where the data interacts with external components, a lower layer such
as the OS, etc.)
Effectiveness = High
Potential Mitigations
Phase: Architecture and Design
If you must expose a method, make sure to perform input validation on all arguments, limit
access to authorized parties, and protect against all possible vulnerabilities.
Phase: Architecture and Design
Phase: Implementation
Strategy = Attack Surface Reduction
Identify all exposed functionality. Explicitly list all functionality that must be exposed to some user
or set of users. Identify which functionality may be: accessible to all users restricted to a small set
of privileged users prevented from being directly accessible at all Ensure that the implemented
code follows these expectations. This includes setting the appropriate access modifiers where
applicable (public, private, protected, etc.) or not marking ActiveX controls safe-for-scripting.
Demonstrative Examples
Example 1:
In the following Java example the method removeDatabase will delete the database with the name
specified in the input parameter.
Example Language: Java (Bad)
public void removeDatabase(String databaseName) {
try {
Statement stmt = conn.createStatement();
stmt.execute("DROP DATABASE " + databaseName);
} catch (SQLException ex) {...}
}
CWE Version 4.14
CWE-749: Exposed Dangerous Method or Function
CWE-749: Exposed Dangerous Method or Function