Description
The product does not restrict or incorrectly restricts access to a resource from an unauthorized actor.
Access control involves the use of several protection mechanisms such as: When any mechanism is not applied or otherwise fails, attackers can compromise the security of the product by gaining privileges, reading sensitive information, executing commands, evading detection, etc. There are two distinct behaviors that can introduce access control weaknesses:
Potential Impact
Other
Varies by Context
Demonstrative Examples
def makeNewUserDir(username):
if invalidUsername(username):
#avoid CWE-22 and CWE-78
print('Usernames cannot contain invalid characters')return False
try:raisePrivileges()os.mkdir('/home/' + username)lowerPrivileges()
except OSError:print('Unable to create new user directory for user:' + username)return False
return Truefunction runEmployeeQuery($dbName, $name){mysql_select_db($dbName,$globalDbHandle) or die("Could not open Database".$dbName);
//Use a prepared statement to avoid CWE-89
$preparedStatement = $globalDbHandle->prepare('SELECT * FROM employees WHERE name = :name');$preparedStatement->execute(array(':name' => $name));return $preparedStatement->fetchAll();}
/.../
$employeeRecord = runEmployeeQuery('EmployeeDB',$_GET['EmployeeName']);Mitigations & Prevention
Very carefully manage the setting, management, and handling of privileges. Explicitly manage trust zones in the software.
Compartmentalize the system to have "safe" areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area. Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least
Real-World CVE Examples
| CVE ID | Description |
|---|---|
| CVE-2023-26463 | Chain: IPSec VPN product uses the same variable for multiple purposes in the same function (CWE-1109), leading to incorrect access control (CWE-284) and expired pointer dereference (CWE-825) |
| CVE-2022-24985 | A form hosting website only checks the session authentication status for a single form, making it possible to bypass authentication when there are multiple forms |
| CVE-2022-29238 | Access-control setting in web-based document collaboration tool is not properly implemented by the code, which prevents listing hidden directories but does not prevent direct requests to files in thos |
| CVE-2022-23607 | Python-based HTTP library did not scope cookies to a particular domain such that "supercookies" could be sent to any domain on redirect |
| CVE-2021-21972 | Chain: Cloud computing virtualization platform does not require authentication for upload of a tar format file (CWE-306), then uses .. path traversal sequences (CWE-23) in the file to access unexpecte |
| CVE-2021-37415 | IT management product does not perform authentication for some REST API requests, as exploited in the wild per CISA KEV. |
| CVE-2021-35033 | Firmware for a WiFi router uses a hard-coded password for a BusyBox shell, allowing bypass of authentication through the UART port |
| CVE-2020-10263 | Bluetooth speaker does not require authentication for the debug functionality on the UART port, allowing root shell access |
| CVE-2020-13927 | Default setting in workflow management product allows all API requests without authentication, as exploited in the wild per CISA KEV. |
| CVE-2010-4624 | Bulletin board applies restrictions on number of images during post creation, but does not enforce this on editing. |
Taxonomy Mappings
- PLOVER: — Access Control List (ACL) errors
- WASC: 2 — Insufficient Authorization
- 7 Pernicious Kingdoms: — Missing Access Control
Frequently Asked Questions
What is CWE-284?
CWE-284 (Improper Access Control) is a software weakness identified by MITRE's Common Weakness Enumeration. It is classified as a Pillar-level weakness. The product does not restrict or incorrectly restricts access to a resource from an unauthorized actor.
How can CWE-284 be exploited?
Attackers can exploit CWE-284 (Improper Access Control) to varies by context. This weakness is typically introduced during the Architecture and Design, Implementation, Operation phase of software development.
How do I prevent CWE-284?
Key mitigations include: Very carefully manage the setting, management, and handling of privileges. Explicitly manage trust zones in the software.
What is the severity of CWE-284?
CWE-284 is classified as a Pillar-level weakness (Foundational abstraction). It has been observed in 10 real-world CVEs.