The software does not perform or incorrectly performs access
control checks across all potential execution paths.
Extended Description
When access control checks are not applied consistently - or not at all -
users are able to access data or perform actions that they should not be
allowed to perform. This can lead to a wide range of problems, including
information leaks, denial of service, and arbitrary code execution.
Time of Introduction
Architecture and Design
Implementation
Operation
Applicable Platforms
Languages
All
Common Consequences
Scope
Effect
Availability
Confidentiality
Integrity
Allowing access to unauthorized users can result in an attacker
gaining access to the sensitive resources being protected, possibly
modifying or removing them, or performing unauthorized actions.
Likelihood of Exploit
High
Potential Mitigations
Phase
Description
Architecture and Design
Divide your application into anonymous, normal, privileged, and
administrative areas. Reduce the attack surface by carefully mapping
roles with data and functionality. Use role-based access control (RBAC)
to enforce the roles at the appropriate boundaries.
Note that this approach may not protect against horizontal
authorization, i.e., it will not protect a user from attacking others
with the same role.
Architecture and Design
Ensure that you perform access control checks related to your business
logic. These may be different than the access control checks that you
apply to the resources that support your business logic.
Architecture and Design
Use authorization frameworks such as the JAAS Authorization Framework
and the OWASP ESAPI Access Control feature.
Architecture and Design
For web applications, make sure that the access control mechanism is
enforced correctly at the server side on every page. Users should not be
able to access any unauthorized functionality or information by simply
requesting direct access to that page.
One way to do this is to ensure that all pages containing sensitive
information are not cached, and that all such pages restrict access to
requests that are accompanied by an active and authenticated session
token associated with a user who has the required permissions to access
that page.
Testing
Use tools and techniques that require manual (human) analysis, such as
penetration testing, threat modeling, and interactive tools that allow
the tester to record and modify an active session. These may be more
effective than strictly automated techniques. This is especially the
case with weaknesses that are related to design and business
rules.
System Configuration
Installation
Use the access control capabilities of your operating system and
server environment and define your access control lists accordingly. Use
a "default deny" policy when defining these ACLs.