CWE-180: Incorrect Behavior Order: Validate Before Canonicalize
CWE版本: 4.18
更新日期: 2025-09-09
弱点描述
The product validates input before it is canonicalized, which prevents the product from detecting data that becomes invalid after the canonicalization step.
扩展描述
This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.
常见后果
影响范围: Access Control
技术影响: Bypass Protection Mechanism
潜在缓解措施
阶段: Implementation
策略: Input Validation
描述: Inputs should be decoded and canonicalized to the application's current internal representation before being validated (CWE-180). Make sure that the application does not decode the same input twice (CWE-174). Such errors could be used to bypass allowlist validation schemes by introducing dangerous inputs after they have been checked.
观察示例
参考: CVE-2002-0433
Product allows remote attackers to view restricted files via an HTTP request containing a "*" (wildcard or asterisk) character.
参考: CVE-2003-0332
Product modifies the first two letters of a filename extension after performing a security check, which allows remote attackers to bypass authentication via a filename with a .ats extension instead of a .hts extension.
参考: CVE-2002-0802
Database consumes an extra character when processing a character that cannot be converted, which could remove an escape character from the query and make the application subject to SQL injection attacks.
参考: CVE-2000-0191
Overlaps "fakechild/../realchild"
参考: CVE-2004-2363
Product checks URI for "<" and other literal characters, but does it before hex decoding the URI, so "%3E" and other sequences are allowed.
引入模式
| 阶段 | 说明 |
|---|---|
| Implementation | - |
适用平台
编程语言
分类映射
| 分类名称 | 条目ID | 条目名称 | 映射适配度 |
|---|---|---|---|
| PLOVER | - | Validate-Before-Canonicalize | - |
| OWASP Top Ten 2004 | A1 | Unvalidated Input | CWE More Specific |
| The CERT Oracle Secure Coding Standard for Java (2011) | IDS01-J | Normalize strings before validating them | Exact |
| SEI CERT Oracle Coding Standard for Java | IDS01-J | Normalize strings before validating them | Exact |
关键信息
CWE ID: CWE-180
抽象级别: Variant
结构: Simple
状态: Draft