---
id: "CVE-2026-62971"
page: "https://infrastack.ai/live/CVE-2026-62971"
kind: "vulnerability"
aliases: ["CVE-2026-62971"]
title: "OWASP CRS: XML attribute payloads bypass web application firewall rule detection"
severity: "high"
cvss: 7.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["apache", "modsecurity", "nginx", "owasp-crs", "package", "waf", "xml-api"]
not_affected_if: ["java-rules-only", "no-xml-requests", "non-crs-waf"]
published_at: "2026-11-11T18:19:47+00:00"
first_seen_at: "2026-11-11T18:28:43+00:00"
updated_at: "2026-11-11T18:29:28+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-62971", "first_seen_at": "2026-11-11T18:28:43+00:00"}]
exploit_sources: []
---

# OWASP CRS: XML attribute payloads bypass web application firewall rule detection

Link for people: https://infrastack.ai/live/CVE-2026-62971 (this .md is for agents)

The OWASP Core Rule Set's XML rules inspect only element text and skip attribute values, so attack payloads placed in XML attributes pass through unchecked. An attacker can send SQL injection, XSS or other attack strings in XML attributes to bypass the firewall's detection.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed CRS version in your WAF's rules directory or package manifest, for example `cat REQUEST-901-INITIALIZATION.conf` or the package version in your dependency file.
- Confirm whether your application accepts XML request bodies that reach the WAF with CRS rules from families 921 to 943 enabled.

## Fix

- OWASP CRS versions `3.3.10`, `4.25.1`, and `4.28.0` contain the patch; upgrade the branch you run to one of these.

## Timeline

- 2026-11-11T18:28:43+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-62971

## Documents

- [advisory] Vendor advisory: github.com https://github.com/coreruleset/coreruleset/security/advisories/GHSA-6jp8-c2w2-x7wr
- [fix] Patch: github.com https://github.com/coreruleset/coreruleset/commit/275d7616f1ceb6f1024c3bfbeb1f4ae2ae9ad010
- [fix] Patch: github.com https://github.com/coreruleset/coreruleset/commit/635cecf8f81908f02a687db4b5b13a55c3e3b9ed
- [fix] Patch: github.com https://github.com/coreruleset/coreruleset/commit/852036b6af5e81d60d7234f69137d47f4ecb89dc

## From the sources

The OWASP core rule set (CRS) is a set of generic attack detection rules for use with compatible web application firewalls. Prior to versions 3.3.10, 4.25.1, and 4.28.0, CRS rules in the 921 (protocol-attack), 930 (LFI), 931 (RFI), 932 (RCE), 933 (PHP), 934 (generic), 941 (XSS), 942 (SQLi), and 943 (session-fixation) families inspect XML request bodies via the XPath expression XML:/*. That expression matches only element text nodes — it does not match XML attribute values. As a result, an attacker who places an attack payload inside an XML attribute (e.g. <a href="javascript:alert(1)=window.name"></a> or <a value="' OR 1=1 --"></a>) bypasses CRS detection entirely. This is verified empirically against a local CRS test instance and against the public CRS sandbox. The bypass affects approximately 159 rules across 9 rule files and applies at every paranoia level (PL1 through PL4), since the variable list is more or less shared across PLs. The 944 (Java) family is the only one that correctly includes XML://@* in addition to XML:/* and is therefore unaffected. This issue has been patched in versions 3.3.10, 4.25.1, and 4.28.0.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
