Insufficient Encapsulation

Incomplete Class
Structure: Simple
Description

This weakness occurs when a software component exposes too much of its internal workings, such as data structures or implementation logic. This lack of proper boundaries allows other parts of the system to interact with it in unintended ways, potentially leading to corrupted data, unexpected behavior, or hidden dependencies.

Extended Description

Insufficient encapsulation creates a fragile codebase where changes in one module can have unpredictable ripple effects across the system. This directly increases maintenance costs and complexity, as developers must spend extra time tracing these unintended couplings instead of focusing on core functionality or security fixes. From a security perspective, this architectural flaw indirectly introduces risk. It becomes harder to identify and patch vulnerabilities because the code's behavior is less predictable and more scattered. Furthermore, the constant need to work around these exposed internals makes it easier for developers to accidentally introduce new security bugs during routine maintenance or feature development.

Demonstrative Examples 1

ID : DX-212

The following example shows a basic user account class that includes member variables for the username and password as well as a public constructor for the class and a public method to authorize access to the user account.

Code Example:

Bad
C++
c++

// if the username and password in the input parameters are equal to*

c++
c++
However, the member variables username and password are declared public and therefore will allow access and changes to the member variables to anyone with access to the object. These member variables should be declared private as shown below to prevent unauthorized access and changes.

Code Example:

Good
C++
c++
Observed Examples 1
CVE-2010-3860variables declared public allow remote read of system properties such as user name and home directory.
References 1
Encapsulation (computer programming)
Wikipedia
ID: REF-969