---
id: "CVE-2026-103932"
kind: "vulnerability"
aliases: ["CVE-2026-103932"]
title: "ModSecurity: regex match-limit errors let rejected requests pass the WAF"
severity: "medium"
cvss: 5.8
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["apache", "iis", "modsecurity", "nginx", "package", "waf"]
not_affected_if: ["default-config", "no-rxglobal-rules", "pcre-limit-rules-absent"]
published_at: "2026-11-05T16:17:24+00:00"
first_seen_at: "2026-11-05T16:40:01+00:00"
updated_at: "2026-11-05T16:41:44+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-103932", "first_seen_at": "2026-11-05T16:40:01+00:00"}]
exploit_sources: []
---

# ModSecurity: regex match-limit errors let rejected requests pass the WAF

ModSecurity's PCRE2 @rxGlobal operator treats match-limit errors as no match, so rules that depend on the limit indicator do not run. An attacker can send input that exhausts SecPcreMatchLimit and get a request through that should have been blocked.

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

## How to check

- Confirm the ModSecurity version with the engine's version output, or check the installed package version, and see whether it falls in 3.0.5 through 3.0.17.
- Search rule sets for `@rxGlobal` used together with `MSC_PCRE_LIMITS_EXCEEDED` or the matching TX indicator.
- Check the server configuration for `SecPcreMatchLimit`.

## Fix

- ModSecurity 3: move to `3.0.17`.

## Timeline

- 2026-11-05T16:40:01+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-103932

## Documents

- [advisory] Vendor advisory: github.com https://github.com/owasp-modsecurity/ModSecurity/security/advisories/GHSA-5m93-4h75-3p2w
- [fix] Patch: github.com https://github.com/owasp-modsecurity/ModSecurity/commit/d92bdc3b2183824ba3c582154b7385ee8349ea7e
- [fix] Release notes: github.com https://github.com/owasp-modsecurity/ModSecurity/releases/tag/v3.0.17

## From the sources

ModSecurity is an open source, cross platform web application firewall (WAF) engine for Apache, IIS and Nginx. From 3.0.5 until 3.0.17, the PCRE2 implementation of @rxGlobal in src/utils/regex.cc converts pcre2_match match-limit errors into an ordinary no-match result instead of propagating a non-OK RegexResult. When attacker-controlled input exhausts SecPcreMatchLimit, rules that rely on MSC_PCRE_LIMITS_EXCEEDED or its TX compatibility indicator do not run, so a request that should be rejected can pass through the WAF. The issue affects PCRE2 deployments that use @rxGlobal with a limit-exhaustible expression and a compensating rule; it is not a universal WAF bypass. This issue is fixed in version 3.0.17.

---

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