The software does not perform access checks on a resource every
time the resource is accessed by an entity, which can create resultant
weaknesses if that entity's rights or privileges change over
time.
Extended Description
Time of Introduction
Architecture and Design
Implementation
Operation
Applicable Platforms
Languages
All
Common Consequences
Scope
Effect
Integrity
Confidentiality
A user might retain access to a critical resource even after
privileges have been revoked, possibly allowing access to privileged
functionality or sensitive information, depending on the role of the
resource.
Demonstrative Examples
Example 1
When executable library files are used on web servers, which is
common in PHP applications, the developer might perform an access check in
any user-facing executable, and omit the access check from the library file
itself. By directly requesting the library file (CWE-425), an attacker can
bypass this access check.
Example 2
When a developer begins to implement input validation for a web
application, often the validation is performed in each area of the code that
uses externally-controlled input. In complex applications with many inputs,
the developer often misses a parameter here or a cookie there. One
frequently-applied solution is to centralize all input validation, store
these validated inputs in a separate data structure, and require that all
access of those inputs must be through that data structure. An alternate
approach would be to use an external input validation framework such as
Struts, which performs the validation before the inputs are ever processed
by the code.
Server does not properly validate client
certificates when reusing cached connections.
Potential Mitigations
Phase
Description
Invalidate cached privileges, file handles or descriptors, or other
access credentials whenever identities, processes, policies, roles,
capabilities or permissions change. Perform complete authentication
checks before accepting, caching and reusing data, dynamic content and
code (scripts). Avoid caching access control decisions as much as
possible.
Identify all possible code paths that might access sensitive
resources. If possible, create and use a single interface that performs
the access checks, and develop code standards that require use of this
interface.
Weakness Ordinalities
Ordinality
Description
Primary
(where the
weakness exists independent of other weaknesses)