CWE-285: Improper Authorization
Description
The product does not perform or incorrectly performs an authorization check when an actor attempts to access a resource or perform an action.
- Abstraction
- ClassAn abstract weakness, independent of any specific language or technology.
- Likelihood of exploit
- High
- Status
- Draft
Common consequences
- Confidentiality
Read Application Data; Read Files or Directories
An attacker could read sensitive data, either by reading the data directly from a data store that is not properly restricted, or by accessing insufficiently-protected, privileged functionality to read the data.
- Integrity
Modify Application Data; Modify Files or Directories
An attacker could modify sensitive data, either by writing the data directly to a data store that is not properly restricted, or by accessing insufficiently-protected, privileged functionality to write the data.
- Access Control
Gain Privileges or Assume Identity; Execute Unauthorized Code or Commands
When access control checks are not applied consistently - or not at all - an attacker could gain privileges and execute unauthorized code or commands by modifying or reading critical data directly, or by accessing insufficiently-protected, privileged functionality.
Potential mitigations
- Architecture and Design
Divide the product 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 checks may be different than the access control checks that you apply to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor.
- Architecture and DesignLibraries or Frameworks
Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid. For example, consider using 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.
- System ConfigurationInstallation
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.
Related weaknesses
Parent weaknesses
Child weaknesses
- CWE-552Files or Directories Accessible to External Parties
- CWE-732Incorrect Permission Assignment for Critical Resource
- CWE-862Missing Authorization
- CWE-863Incorrect Authorization
- CWE-926Improper Export of Android Application Components
- CWE-927Use of Implicit Intent for Sensitive Communication
- CWE-1230Exposure of Sensitive Information Through Metadata
- CWE-1256Improper Restriction of Software Interfaces to Hardware Features
- CWE-1297Unprotected Confidential Information on Device is Accessible by OSAT Vendors
- CWE-1328Security Version Number Mutable to Older Versions
CAPEC attack patterns that exploit it
- CAPEC-1Accessing Functionality Not Properly Constrained by ACLs
- CAPEC-13Subverting Environment Variable Values
- CAPEC-17Using Malicious Files
- CAPEC-39Manipulating Opaque Client-based Data Tokens
- CAPEC-45Buffer Overflow via Symbolic Links
- CAPEC-51Poison Web Service Registry
- CAPEC-59Session Credential Falsification through Prediction
- CAPEC-60Reusing Session IDs (aka Session Replay)
- CAPEC-76Manipulating Web Input to File System Calls
- CAPEC-77Manipulating User-Controlled Variables
- CAPEC-87Forceful Browsing
- CAPEC-104Cross Zone Scripting
- CAPEC-127Directory Indexing
- CAPEC-402Bypassing ATA Password Security
- CAPEC-647Collect Data from Registries
- CAPEC-668Key Negotiation of Bluetooth Attack (KNOB)