CWE-287: Improper AuthenticationWeakness ID: 287 Vulnerability Mapping:
DISCOURAGEDThis CWE ID should not be used to map to real-world vulnerabilities Abstraction: ClassClass - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource. |
Description When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct. | |
Alternate Terms
authentification: | An alternate term is "authentification", which appears to be most commonly used by people from non-English-speaking countries. |
AuthN: | "AuthN" is typically used as an abbreviation of "authentication" within the web application security community. It is also distinct from "AuthZ," which is an abbreviation of "authorization." The use of "Auth" as an abbreviation is discouraged, since it could be used for either authentication or authorization. |
AuthC: | "AuthC" is used as an abbreviation of "authentication," but it appears to used less frequently than "AuthN." |
Common Consequences This table specifies different individual consequences associated with the weakness. The Scope identifies the application security area that is violated, while the Impact describes the negative technical impact that arises if an adversary succeeds in exploiting this weakness. The Likelihood provides information about how likely the specific consequence is expected to be seen relative to the other consequences in the list. For example, there may be high likelihood that a weakness will be exploited to achieve a certain impact, but a low likelihood that it will be exploited to achieve a different impact.Scope | Impact | Likelihood |
---|
Integrity Confidentiality Availability Access Control
| Technical Impact: Read Application Data; Gain Privileges or Assume Identity; Execute Unauthorized Code or Commands This weakness can lead to the exposure of resources or functionality to unintended actors, possibly providing attackers with sensitive information or even execute arbitrary code. | |
Potential Mitigations
Phase: Architecture and Design Strategy: Libraries or Frameworks Use an authentication framework or library such as the OWASP ESAPI Authentication feature. |
Relationships This table shows the weaknesses and high level categories that are related to this weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to similar items that may exist at higher and lower levels of abstraction. In addition, relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user may want to explore. Relevant to the view "Research Concepts" (CWE-1000) Nature | Type | ID | Name |
---|
ChildOf | Pillar - a weakness that is the most abstract type of weakness and represents a theme for all class/base/variant weaknesses related to it. A Pillar is different from a Category as a Pillar is still technically a type of weakness that describes a mistake, while a Category represents a common characteristic used to group related things. | 284 | Improper Access Control | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 295 | Improper Certificate Validation | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 306 | Missing Authentication for Critical Function | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 645 | Overly Restrictive Account Lockout Mechanism | ParentOf | Class - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource. | 1390 | Weak Authentication | CanFollow | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 613 | Insufficient Session Expiration |
This table shows the weaknesses and high level categories that are related to this weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to similar items that may exist at higher and lower levels of abstraction. In addition, relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user may want to explore. Relevant to the view "Weaknesses for Simplified Mapping of Published Vulnerabilities" (CWE-1003) Nature | Type | ID | Name |
---|
MemberOf | View - a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). | 1003 | Weaknesses for Simplified Mapping of Published Vulnerabilities | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 290 | Authentication Bypass by Spoofing | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 294 | Authentication Bypass by Capture-replay | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 295 | Improper Certificate Validation | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 306 | Missing Authentication for Critical Function | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 307 | Improper Restriction of Excessive Authentication Attempts | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 521 | Weak Password Requirements | ParentOf | Class - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource. | 522 | Insufficiently Protected Credentials | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 640 | Weak Password Recovery Mechanism for Forgotten Password | ParentOf | Base - a weakness
that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. | 798 | Use of Hard-coded Credentials |
This table shows the weaknesses and high level categories that are related to this weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to similar items that may exist at higher and lower levels of abstraction. In addition, relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user may want to explore. Relevant to the view "Architectural Concepts" (CWE-1008) Nature | Type | ID | Name |
---|
MemberOf | Category - a CWE entry that contains a set of other entries that share a common characteristic. | 1010 | Authenticate Actors |
This table shows the weaknesses and high level categories that are related to this weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to similar items that may exist at higher and lower levels of abstraction. In addition, relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user may want to explore. Relevant to the view "CISQ Data Protection Measures" (CWE-1340) Nature | Type | ID | Name |
---|
ChildOf | Pillar - a weakness that is the most abstract type of weakness and represents a theme for all class/base/variant weaknesses related to it. A Pillar is different from a Category as a Pillar is still technically a type of weakness that describes a mistake, while a Category represents a common characteristic used to group related things. | 284 | Improper Access Control |
Modes Of Introduction The different Modes of Introduction provide information about how and when this weakness may be introduced. The Phase identifies a point in the life cycle at which introduction may occur, while the Note provides a typical scenario related to introduction during the given phase.Phase | Note |
---|
Architecture and Design | | Implementation | REALIZATION: This weakness is caused during implementation of an architectural security tactic. |
Likelihood Of Exploit Demonstrative Examples Example 1 The following code intends to ensure that the user is already logged in. If not, the code performs authentication with the user-provided username and password. If successful, it sets the loggedin and user cookies to "remember" that the user has already logged in. Finally, the code performs administrator tasks if the logged-in user has the "Administrator" username, as recorded in the user cookie. (bad code) Example Language: Perl
my $q = new CGI;
if ($q->cookie('loggedin') ne "true") {
if (! AuthenticateUser($q->param('username'), $q->param('password'))) { ExitError("Error: you need to log in first"); } else {
# Set loggedin and user cookies. $q->cookie( -name => 'loggedin', -value => 'true' );
$q->cookie( -name => 'user', -value => $q->param('username') );
}
}
if ($q->cookie('user') eq "Administrator") { DoAdministratorTasks(); }
Unfortunately, this code can be bypassed. The attacker can set the cookies independently so that the code does not check the username and password. The attacker could do this with an HTTP request containing headers such as:
GET /cgi-bin/vulnerable.cgi HTTP/1.1 Cookie: user=Administrator Cookie: loggedin=true
[body of request]
By setting the loggedin cookie to "true", the attacker bypasses the entire authentication check. By using the "Administrator" value in the user cookie, the attacker also gains privileges to administer the software. Example 2 In January 2009, an attacker was able to gain administrator access to a Twitter server because the server did not restrict the number of login attempts [REF-236]. The attacker targeted a member of Twitter's support team and was able to successfully guess the member's password using a brute force attack by guessing a large number of common words. After gaining access as the member of the support staff, the attacker used the administrator panel to gain access to 33 accounts that belonged to celebrities and politicians. Ultimately, fake Twitter messages were sent that appeared to come from the compromised accounts. Example 3 In 2022, the OT:ICEFALL study examined products by 10 different Operational Technology (OT) vendors. The researchers reported 56 vulnerabilities and said that the products were "insecure by design" [REF-1283]. If exploited, these vulnerabilities often allowed adversaries to change how the products operated, ranging from denial of service to changing the code that the products executed. Since these products were often used in industries such as power, electrical, water, and others, there could even be safety implications. Multiple vendors did not use any authentication or used client-side authentication for critical functionality in their OT products. Observed Examples Reference | Description |
| Chat application skips validation when Central Authentication Service (CAS) is enabled, effectively removing the second factor from two-factor authentication |
| Python-based authentication proxy does not enforce password authentication during the initial handshake, allowing the client to bypass authentication by specifying a 'None' authentication type. |
| Chain: Web UI for a Python RPC framework does not use regex anchors to validate user login emails ( CWE-777), potentially allowing bypass of OAuth ( CWE-1390). |
| TCP-based protocol in Programmable Logic Controller (PLC) has no authentication. |
| Condition Monitor uses a protocol that does not require authentication. |
| Safety Instrumented System uses proprietary TCP protocols with no authentication. |
| Distributed Control System (DCS) uses a protocol that has no authentication. |
| SCADA system only uses client-side authentication, allowing adversaries to impersonate other users. |
| Chain: Python-based HTTP Proxy server uses the wrong boolean operators ( CWE-480) causing an incorrect comparison ( CWE-697) that identifies an authN failure if all three conditions are met instead of only one, allowing bypass of the proxy authentication ( CWE-1390) |
| 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 unexpected files, as exploited in the wild per CISA KEV. |
| IT management product does not perform authentication for some REST API requests, as exploited in the wild per CISA KEV. |
| Firmware for a WiFi router uses a hard-coded password for a BusyBox shell, allowing bypass of authentication through the UART port |
| Bluetooth speaker does not require authentication for the debug functionality on the UART port, allowing root shell access |
| Default setting in workflow management product allows all API requests without authentication, as exploited in the wild per CISA KEV. |
| Stack-based buffer overflows in SFK for wifi chipset used for IoT/embedded devices, as exploited in the wild per CISA KEV. |
| Mail server does not properly check an access token before executing a Powershell command, as exploited in the wild per CISA KEV. |
| Chain: user is not prompted for a second authentication factor ( CWE-287) when changing the case of their username ( CWE-178), as exploited in the wild per CISA KEV. |
| Authentication bypass by appending specific parameters and values to a URI, as exploited in the wild per CISA KEV. |
| Mail server does not generate a unique key during installation, as exploited in the wild per CISA KEV. |
| LDAP Go package allows authentication bypass using an empty password, causing an unauthenticated LDAP bind |
| login script for guestbook allows bypassing authentication by setting a "login_ok" parameter to 1. |
| admin script allows authentication bypass by setting a cookie value to "LOGGEDIN". |
| VOIP product allows authentication bypass using 127.0.0.1 in the Host header. |
| product uses default "Allow" action, instead of default deny, leading to authentication bypass. |
| chain: redirect without exit ( CWE-698) leads to resultant authentication bypass. |
| product does not restrict access to a listening port for a critical service, allowing authentication to be bypassed. |
| product does not properly implement a security-related configuration setting, allowing authentication bypass. |
| authentication routine returns "nil" instead of "false" in some situations, allowing authentication bypass using an invalid username. |
| authentication update script does not properly handle when admin does not select any authentication modules, allowing authentication bypass. |
| use of LDAP authentication with anonymous binds causes empty password to result in successful authentication |
| product authentication succeeds if user-provided MD5 hash matches the hash in its database; this can be subjected to replay attacks. |
| chain: product generates predictable MD5 hashes using a constant value combined with username, allowing authentication bypass. |
Detection Methods
Automated Static Analysis Automated static analysis is useful for detecting certain types of authentication. A tool may be able to analyze related configuration files, such as .htaccess in Apache web servers, or detect the usage of commonly-used authentication libraries. Generally, automated static analysis tools have difficulty detecting custom authentication schemes. In addition, the software's design may include some functionality that is accessible to any user and does not require an established identity; an automated technique that detects the absence of authentication may report false positives. |
Manual Static Analysis This weakness can be detected using 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. Manual static analysis is useful for evaluating the correctness of custom authentication mechanisms. Note: These may be more effective than strictly automated techniques. This is especially the case with weaknesses that are related to design and business rules. |
Manual Static Analysis - Binary or Bytecode According to SOAR, the following detection techniques may be useful: Cost effective for partial coverage: Effectiveness: SOAR Partial |
Dynamic Analysis with Automated Results Interpretation According to SOAR, the following detection techniques may be useful: Cost effective for partial coverage: Web Application Scanner Web Services Scanner Database Scanners
Effectiveness: SOAR Partial |
Dynamic Analysis with Manual Results Interpretation According to SOAR, the following detection techniques may be useful: Cost effective for partial coverage: Fuzz Tester Framework-based Fuzzer
Effectiveness: SOAR Partial |
Manual Static Analysis - Source Code According to SOAR, the following detection techniques may be useful: Cost effective for partial coverage: Effectiveness: SOAR Partial |
Automated Static Analysis - Source Code According to SOAR, the following detection techniques may be useful: Cost effective for partial coverage: Effectiveness: SOAR Partial |
Automated Static Analysis According to SOAR, the following detection techniques may be useful: Cost effective for partial coverage: Effectiveness: SOAR Partial |
Architecture or Design Review According to SOAR, the following detection techniques may be useful: Inspection (IEEE 1028 standard) (can apply to requirements, design, source code, etc.) Formal Methods / Correct-By-Construction
|
Functional Areas Memberships This MemberOf Relationships table shows additional CWE Categories and Views that reference this weakness as a member. This information is often useful in understanding where a weakness fits within the context of external information sources. Vulnerability Mapping Notes Usage: DISCOURAGED (this CWE ID should not be used to map to real-world vulnerabilities) | Reason: Frequent Misuse | Rationale: This CWE entry might be misused when lower-level CWE entries are likely to be applicable. It is a level-1 Class (i.e., a child of a Pillar). | Comments: Consider children or descendants, beginning with CWE-1390: Weak Authentication or CWE-306: Missing Authentication for Critical Function. | Suggestions: CWE-ID | Comment |
---|
CWE-1390 | Weak Authentication | CWE-306 | Missing Authentication for Critical Function |
|
Notes Relationship This can be resultant from SQL injection vulnerabilities and other issues. Maintenance The Taxonomy_Mappings to ISA/IEC 62443 were added in CWE 4.10, but they are still under review and might change in future CWE versions. These draft mappings were performed by members of the "Mapping CWE to 62443" subgroup of the CWE-CAPEC ICS/OT Special Interest Group (SIG), and their work is incomplete as of CWE 4.10. The mappings are included to facilitate discussion and review by the broader ICS/OT community, and they are likely to change in future CWE versions. Taxonomy Mappings Mapped Taxonomy Name | Node ID | Fit | Mapped Node Name |
PLOVER | | | Authentication Error |
OWASP Top Ten 2007 | A7 | CWE More Specific | Broken Authentication and Session Management |
OWASP Top Ten 2004 | A3 | CWE More Specific | Broken Authentication and Session Management |
WASC | 1 | | Insufficient Authentication |
ISA/IEC 62443 | Part 3-3 | | Req SR 1.1 |
ISA/IEC 62443 | Part 3-3 | | Req SR 1.2 |
ISA/IEC 62443 | Part 4-2 | | Req CR 1.1 |
ISA/IEC 62443 | Part 4-2 | | Req CR 1.2 |
References Content History Submissions |
---|
Submission Date | Submitter | Organization |
---|
2006-07-19 (CWE Draft 3, 2006-07-19) | PLOVER | | | Contributions |
---|
Contribution Date | Contributor | Organization |
---|
2024-02-29 (CWE 4.15, 2024-07-16) | Abhi Balakrishnan | | Provided diagram to improve CWE usability | Modifications |
---|
Modification Date | Modifier | Organization |
---|
2008-07-01 | Eric Dalci | Cigital | updated Time_of_Introduction | 2008-08-15 | | Veracode | Suggested OWASP Top Ten 2004 mapping | 2008-09-08 | CWE Content Team | MITRE | updated Alternate_Terms, Common_Consequences, Relationships, Relationship_Notes, Taxonomy_Mappings | 2008-10-14 | CWE Content Team | MITRE | updated Relationships | 2009-01-12 | CWE Content Team | MITRE | updated Name | 2009-05-27 | CWE Content Team | MITRE | updated Description, Related_Attack_Patterns | 2009-07-27 | CWE Content Team | MITRE | updated Relationships | 2009-10-29 | CWE Content Team | MITRE | updated Common_Consequences, Observed_Examples | 2009-12-28 | CWE Content Team | MITRE | updated Applicable_Platforms, Common_Consequences, Demonstrative_Examples, Detection_Factors, Likelihood_of_Exploit, References | 2010-02-16 | CWE Content Team | MITRE | updated Alternate_Terms, Detection_Factors, Potential_Mitigations, References, Relationships, Taxonomy_Mappings | 2010-06-21 | CWE Content Team | MITRE | updated Relationships | 2011-03-29 | CWE Content Team | MITRE | updated Relationships | 2011-06-01 | CWE Content Team | MITRE | updated Common_Consequences | 2012-05-11 | CWE Content Team | MITRE | updated Relationships | 2013-07-17 | CWE Content Team | MITRE | updated Relationships | 2014-02-18 | CWE Content Team | MITRE | updated Relationships | 2014-06-23 | CWE Content Team | MITRE | updated Relationships | 2014-07-30 | CWE Content Team | MITRE | updated Detection_Factors, Relationships | 2015-12-07 | CWE Content Team | MITRE | updated Relationships | 2017-01-19 | CWE Content Team | MITRE | updated Relationships | 2017-05-03 | CWE Content Team | MITRE | updated Related_Attack_Patterns, Relationships | 2017-11-08 | CWE Content Team | MITRE | updated Demonstrative_Examples, Likelihood_of_Exploit, Modes_of_Introduction, References, Relationships | 2018-03-27 | CWE Content Team | MITRE | updated References, Relationships | 2019-01-03 | CWE Content Team | MITRE | updated Related_Attack_Patterns | 2019-06-20 | CWE Content Team | MITRE | updated Demonstrative_Examples, Related_Attack_Patterns, Relationships | 2019-09-19 | CWE Content Team | MITRE | updated Relationships | 2020-02-24 | CWE Content Team | MITRE | updated Relationships | 2020-08-20 | CWE Content Team | MITRE | updated Relationships | 2020-12-10 | CWE Content Team | MITRE | updated Relationships | 2021-03-15 | CWE Content Team | MITRE | updated Alternate_Terms, Demonstrative_Examples | 2021-07-20 | CWE Content Team | MITRE | updated Relationships | 2021-10-28 | CWE Content Team | MITRE | updated Relationships | 2022-06-28 | CWE Content Team | MITRE | updated Observed_Examples, Relationships | 2022-10-13 | CWE Content Team | MITRE | updated Applicable_Platforms, Demonstrative_Examples, Observed_Examples, References, Relationships | 2023-01-31 | CWE Content Team | MITRE | updated Description, Maintenance_Notes, Observed_Examples, Taxonomy_Mappings | 2023-04-27 | CWE Content Team | MITRE | updated Demonstrative_Examples, References, Relationships | 2023-06-29 | CWE Content Team | MITRE | updated Mapping_Notes, Relationships | 2023-10-26 | CWE Content Team | MITRE | updated Observed_Examples | 2024-02-29 (CWE 4.14, 2024-02-29) | CWE Content Team | MITRE | updated Observed_Examples | 2024-07-16 (CWE 4.15, 2024-07-16) | CWE Content Team | MITRE | updated Diagram | Previous Entry Names |
---|
Change Date | Previous Entry Name |
---|
2008-04-11 | Authentication Issues | | 2009-01-12 | Insufficient Authentication | |
More information is available — Please edit the custom filter or select a different filter.
|