CWEweakness

CWE-766 Critical Data Element Declared Public

Official page ↗
Abstraction
Base
Structure
Simple
Status
Incomplete
Languages
C#, C++, Java
CWE version
5.0

Description

The product declares a critical variable, field, or member to be public when intended security policy requires it to be private.

Common consequences

• Integrity, Confidentiality: Read Application Data, Modify Application Data — Making a critical variable public allows anyone with access to the object in which the variable is contained to alter or read the value. • Other: Reduce Maintainability — This issue makes it more difficult to maintain the product, which indirectly affects security by making it more difficult or time-consuming to find and/or fix vulnerabilities.

Potential mitigations

• [Implementation] Data should be private, static, and final whenever possible. This will assure that your code is protected by instantiating early, preventing access, and preventing tampering.

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.)

Observed examples

• CVE-2010-3860: variables declared public allow remote read of system properties such as user name and home directory.

Related

Observed example · CVE (1)

  • CVE-2010-3860 IcedTea 1.7.x before 1.7.6, 1.8.x before 1.8.3, and 1.9.x before 1.9.2, as based on OpenJDK 6, declares multiple sensitive variables as… vulnerability

Child of · CWE (2)

  • CWE-1061 Insufficient Encapsulation weakness
  • CWE-732 Incorrect Permission Assignment for Critical Resource weakness