Description
The product performs a comparison between entities that must consider multiple factors or characteristics of each entity, but the comparison does not include one or more of these factors.
Potential Impact
Integrity, Access Control
Alter Execution Logic, Bypass Protection Mechanism
Demonstrative Examples
public class Truck {
private String make;private String model;private int year;
public boolean equals(Object o) {
if (o == null) return false;if (o == this) return true;if (!(o instanceof Truck)) return false;
Truck t = (Truck) o;
return (this.make.equals(t.getMake()) && this.model.equals(t.getModel()));
}
}/* Ignore CWE-259 (hard-coded password) and CWE-309 (use of password system for authentication) for this example. */
char *username = "admin";char *pass = "password";
int AuthenticateUser(char *inUser, char *inPass) {if (strncmp(username, inUser, strlen(inUser))) {logEvent("Auth failure of username using strlen of inUser");return(AUTH_FAIL);}if (! strncmp(pass, inPass, strlen(inPass))) {logEvent("Auth success of password using strlen of inUser");return(AUTH_SUCCESS);}else {logEvent("Auth fail of password using sizeof");return(AUTH_FAIL);}}
int main (int argc, char **argv) {
int authResult;if (argc < 3) {ExitError("Usage: Provide a username and password");}authResult = AuthenticateUser(argv[1], argv[2]);if (authResult == AUTH_SUCCESS) {DoAuthenticatedTask(argv[1]);}else {ExitError("Authentication failed");}}ppapaspassDetection Methods
- Manual Static Analysis — Thoroughly test the comparison scheme before deploying code into production. Perform positive testing as well as negative testing.
Real-World CVE Examples
| CVE ID | Description |
|---|---|
| CVE-2005-2782 | PHP remote file inclusion in web application that filters "http" and "https" URLs, but not "ftp". |
| CVE-2014-6394 | Product does not prevent access to restricted directories due to partial string comparison with a public directory |
Related Weaknesses
Frequently Asked Questions
What is CWE-1023?
CWE-1023 (Incomplete Comparison with Missing Factors) is a software weakness identified by MITRE's Common Weakness Enumeration. It is classified as a Class-level weakness. The product performs a comparison between entities that must consider multiple factors or characteristics of each entity, but the comparison does not include one or more of these factors.
How can CWE-1023 be exploited?
Attackers can exploit CWE-1023 (Incomplete Comparison with Missing Factors) to alter execution logic, bypass protection mechanism. This weakness is typically introduced during the Implementation phase of software development.
How do I prevent CWE-1023?
Follow secure coding practices, conduct code reviews, and use automated security testing tools (SAST/DAST) to detect this weakness early in the development lifecycle.
What is the severity of CWE-1023?
CWE-1023 is classified as a Class-level weakness (High abstraction). It has been observed in 2 real-world CVEs.