CWEweakness
CWE-180 Incorrect Behavior Order: Validate Before Canonicalize
- Abstraction
- Variant
- Structure
- Simple
- Status
- Draft
- Languages
- Not Language-Specific, Python
- CWE version
- 5.0
Description
The product validates input before it is canonicalized.
Common consequences
• Access Control: Bypass Protection Mechanism — This prevents the product from detecting data
that becomes invalid after the canonicalization
step. An attacker can bypass the validation and launch
attacks that expose weaknesses that would otherwise be
prevented, such as injection.
Potential mitigations
• [Implementation] 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.
Observed examples
• CVE-2002-0433: List files in web server using "*.ext"
• 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.
Related
Attack pattern · CAPEC (6)
- CAPEC-267 Leverage Alternate Encoding attack pattern
- CAPEC-3 Using Leading 'Ghost' Character Sequences to Bypass Input Filters attack pattern
- CAPEC-71 Using Unicode Encoding to Bypass Validation Logic attack pattern
- CAPEC-78 Using Escaped Slashes in Alternate Encoding attack pattern
- CAPEC-79 Using Slashes in Alternate Encoding attack pattern
- CAPEC-80 Using UTF-8 Encoding to Bypass Validation Logic attack pattern
Observed example · CVE (5)
- CVE-2004-2363 Validate-Before-Canonicalize vulnerability in the checkURI function in functions.inc.php in PHPX 3.0 through 3.2.6 allows remote attackers… vulnerability
- CVE-2003-0332 The ISAPI extension in BadBlue 1.7 through 2.2, and possibly earlier versions, modifies the first two letters of a filename extension after… vulnerability
- CVE-2002-0802 The multibyte support in PostgreSQL 6.5.x with SQL_ASCII encoding consumes an extra character when processing a character that cannot be… vulnerability
- CVE-2002-0433 Pi3Web 2.0.0 allows remote attackers to view restricted files via an HTTP request containing a "*" (wildcard or asterisk) character. vulnerability
- CVE-2000-0191 Axis StorPoint CD allows remote attackers to access administrator URLs without authentication via a .. vulnerability
Child of · CWE (1)
- CWE-179 Incorrect Behavior Order: Early Validation weakness
Referenced by CAPEC · weakness (6)
- CAPEC-267 Leverage Alternate Encoding attack pattern
- CAPEC-3 Using Leading 'Ghost' Character Sequences to Bypass Input Filters attack pattern
- CAPEC-71 Using Unicode Encoding to Bypass Validation Logic attack pattern
- CAPEC-78 Using Escaped Slashes in Alternate Encoding attack pattern
- CAPEC-79 Using Slashes in Alternate Encoding attack pattern
- CAPEC-80 Using UTF-8 Encoding to Bypass Validation Logic attack pattern
Referenced by CVE · weakness (45)
- CVE-2026-118662 Vite is a frontend tooling framework for JavaScript. vulnerability
- CVE-2026-114622 baserCMS is a website development framework. vulnerability
- CVE-2026-93630 A hostname canonicalization vulnerability in the email HTML sanitizers of Zimbra Collaboration Suite (ZCS) allows an unauthenticated sender… vulnerability
- CVE-2026-110306 fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. vulnerability
- CVE-2026-112003 ProjectSend 2.0.0 before 2.7.0 contains a path validation flaw in OrphanFileScanner::isOrphan() that allows staff with import_orphans… vulnerability
- CVE-2026-100409 OpenNext Cloudflare is an open Next.js adapter for Cloudflare. vulnerability
- CVE-2026-110846 n8n before 2.41.4 and 2.42.x before 2.42.1 contains a signature bypass in the waiting-webhook endpoint, which selects Send-and-Wait… vulnerability
- CVE-2026-93326 A build step for a Git source, crafted in a specific way, can bypass some policy validation rules. vulnerability
- CVE-2026-105050 PeaZip before 11.3.0, in a non-default configuration, is vulnerable to OS command injection via a filename in an archive because "quotation… vulnerability
- CVE-2026-102269 PyJWT is a Python implementation of JSON Web Token standards. vulnerability
- CVE-2026-100547 OpenClaw is a coding agent distributed as the npm package `openclaw`. vulnerability
- CVE-2026-100674 stoatchat before 0.15.5 fails to revalidate usernames after Unicode sanitization, allowing attackers to create usernames with forbidden… vulnerability
- CVE-2026-100230 Input Leap (aka input-leap) through 3.0.3, when the non-default --enable-drag-drop option is used on Windows or macOS, mishandles the /… vulnerability
- CVE-2026-95811 Lemonldap::NG::Handler versions from 2.0.0 before 2.16.10, from 2.17.0 before 2.21.6, from 2.22.0 before 2.23.4 for Perl allow an… vulnerability
- CVE-2026-97764 django-allauth before 65.19.4 does not have the expected limits on failed login attempts because, in some common configurations, an… vulnerability
- CVE-2026-90813 A vulnerability was detected in cosmicstack-labs mercury-agent up to 1.1.13. vulnerability
- CVE-2026-79300 SEP sesam before 5.2.0.24 mishandles User Authorization with MFA. vulnerability
- CVE-2026-82736 Incorrect Behavior Order: Validate Before Canonicalize vulnerability in ash-project ash lets an attacker store a case-insensitive string… vulnerability
- CVE-2026-82481 The cohttp package before 6.3.0 for OCaml allows directory traversal. vulnerability
- CVE-2026-76203 Incorrect Behavior Order: Validate Before Canonicalize in the report theme CSS sanitizer in maalfer Pentestify 1.2.0 through 2.3.2 allows… vulnerability
- CVE-2026-73416 jupyterlab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Architecture. vulnerability
- CVE-2026-73420 NextAuth.js provides authentication for Next.js. vulnerability
- CVE-2026-72917 AnythingLLM is an application that turns pieces of content into context that any LLM can use as references during chatting. vulnerability
- CVE-2026-69245 Guzzle is an extensible PHP HTTP client. vulnerability
- CVE-2026-69246 Guzzle is an extensible PHP HTTP client. vulnerability
- CVE-2026-62999 Copier is a library and CLI app for rendering project templates. vulnerability
- CVE-2026-15704 In Eclipse BaSyx Go Components versions up to and including 1.0.0, ABAC-enabled deployments are vulnerable to an authorization bypass… vulnerability
- CVE-2026-7120 @fastify/static evaluates the allowedPath callback before normalizing dot segments and duplicate path separators in the pathname used for… vulnerability
- CVE-2026-52747 ModSecurity is an open source, cross platform web application firewall (WAF) engine for Apache, IIS and Nginx. vulnerability
- CVE-2026-49984 Kestra is an open-source, event-driven orchestration platform. vulnerability
Referenced by CWE · child of (1)
- CWE-647 Use of Non-Canonical URL Paths for Authorization Decisions weakness