OWASP CRS Vulnerability Enables Charset Validation Bypass
A recently identified vulnerability in the OWASP Core Rule Set (CRS) has been disclosed, allowing attackers to bypass charset validation in web application firewalls (WAFs), thereby enabling harmful payloads to reach backend applications.
A recently identified vulnerability in the OWASP Core Rule Set (CRS) has been disclosed, allowing attackers to bypass charset validation in web application firewalls (WAFs), thereby enabling harmful payloads to reach backend applications.
The vulnerability, tracked as CVE-2026-21876 , affects CRS rule 922110. This flaw can expose applications to cross-site scripting (XSS) and other encoding-based attacks.
Administrators are advised to upgrade immediately and review historical logs for multipart requests using disallowed charsets.
CVE ID Component / Rule Vulnerability Type CVSS v3.1 / Severity
CVE-2026-21876 OWASP CRS rule 922110 Charset validation bypass 9.3 (CRITICAL)
The vulnerability, tracked as CVE-2026-21876 , affects CRS rule 922110.
How the Charset Validation Bypass Works
Rule 922110, a Paranoia Level 1 (PL1) rule, is designed to validate charset parameters in Content-Type headers of multipart/form-data requests and block risky encodings. However, a logic issue in ModSecurity’s processing of chained rules over multipart collections leads to only the charset of the last multipart section being validated.
This flaw allows attackers to insert a UTF-7–encoded XSS payload in the initial multipart part using charset=utf-7, followed by a benign final part with charset=utf-8. As a result, the WAF validates only the safe charset, enabling the request to go through.
The vulnerability affects CRS 3.3.x and CRS 4.0.0 through 4.21.0 across all supported engines, including ModSecurity 2.x, ModSecurity 3.x/libmodsecurity, and Coraza. The flaw is rated CRITICAL with a CVSS v3.1 score of 9.3, indicating network-based exploitation with no required authentication or user interaction.
The CRS team has redesigned rule 922110 and introduced helper rules 922140 and 922150. This fix involves storing each multipart Content-Type value in uniquely indexed transaction variables and validating every detected charset. Fixes were released in CRS 4.22.0 and CRS 3.3.8.
Administrators are strongly advised to upgrade immediately and review historical logs for suspicious multipart requests using disallowed charsets.
Based on reporting by GBHackers.
