Skip to content

Commit 3931838

Browse files
committed
docs: add blog post about recent changes in 2026.04
1 parent ec29494 commit 3931838

1 file changed

Lines changed: 110 additions & 0 deletions

File tree

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
---
2+
title: 'About CVE 2026-30923 and 2026-30923'
3+
date: '2026-04-28T00:00:00+02:00'
4+
author: airween
5+
---
6+
7+
We would like to share our take on [CVE-2026-30923](https://nvd.nist.gov/vuln/detail/CVE-2026-30923) and [CVE-2026-30923](https://nvd.nist.gov/vuln/detail/CVE-2026-30923), which were published on April 28, 2026, as well as some additional issues that were fixed.
8+
9+
<!--more-->
10+
11+
Two new CVE's were released recently and several other security issues were fixed. In this blog post we will explain the mechanics and impact of these issues.
12+
13+
### CVEs
14+
15+
#### CVE-2026-30923
16+
17+
The first reported vulnerability (CVE-2026-30923) was a stack buffer overflow (write via signed integer underflow in loop bound) in the transformation `t:hexDecode` (in libmodsecurity3 only). The original reporter was [@EsadCetiner](https://github.com/EsadCetiner), but later another security team (from [Cert.pl](https://cert.pl/en/) with leader [@fumfel](https://github.com/fumfel)) also reported this issue.
18+
19+
The effect of the overflow was that an attacker could craft a request that would cause a segmentation fault in the server when a rule used the `t:hexDecode` transformation. An attacker could abuse this vulnerability to disrupt the service (DoS).
20+
21+
An affected rule would look something like this:
22+
23+
```apache
24+
SecRule ARGS "@contains test" \
25+
"id:1,\
26+
phase:1,\
27+
deny,\
28+
t:none,t:hexDecode,\
29+
log"
30+
```
31+
32+
The segmentation fault can then be triggered with a request as produced by the following `curl` command:
33+
34+
```bash
35+
curl "localhost/?test=a"
36+
```
37+
38+
The security advisory for the vulnerability is available on [GitHub](https://github.com/owasp-modsecurity/ModSecurity/security/advisories/GHSA-qrjc-3jpc-3h2g).
39+
40+
#### CVE-2026-30923
41+
42+
The second reported vulnerability was an unsigned integer underflow in the `@verifySSN`, `@verifyCPF` and `@verifySVNR` operators (in libmodsecurity3 only). As with the first vulnerability, the segmentation fault caused by the underflow could be abused by an attacker to disrupt the service (DoS).
43+
44+
The following rule would be vulnerable to the attack, as it uses `@verifySSN`:
45+
46+
```apache
47+
SecRule ARGS "@verifySSN ^\d{3}-?\d{2}-?\d{4}$" \
48+
"id:1,phase:2,pass,log"
49+
```
50+
51+
The segmentation fault can then be triggered with a request as produced by the following `curl` command:
52+
```bash
53+
curl "localhost/path?x="
54+
```
55+
56+
The security advisory is available on [GitHub](https://github.com/owasp-modsecurity/ModSecurity/security/advisories/GHSA-vwr3-7x7g-7p9w).
57+
58+
#### Important Notes
59+
60+
- You are not affected if you use mod_security2. The vulnerabilities only affect libmodsecurity3.
61+
- You are not affected by either vulnerability if you don't use any of the affected transformations (`t:hexDecode`) or operators (`@verifySSN`, `@verifyCPF`, `@verifySVNR`).
62+
- You are not affected by either vulnerability if you use [CRS](https://coreruleset.org) rules exclusively in your setup, as CRS **does not use** any of the affected transformations or operators, neither in the 3.3.9 release nor the 4.x release line.
63+
64+
#### Further Attribution
65+
66+
Both vulnerabilities were reported (with suggested solutions) a few days after the original reports by Dag Haavi Finstad from [varnish-software.com](https://varnish-software.com) - also a big thanks to him.
67+
68+
### Other fixed issues
69+
70+
The [Cert.pl](https://cert.pl/en/) team discovered more issues, but we did not consider it necessary to assign CVEs in these cases, as they are generally not exploitable. The team provided fix proposals in all cases, which we very much appreciate.
71+
72+
Note that all of these issues could not be set up remotely, unless specific configuration issues existed, or the code was compiled with `ASAN` flags.
73+
74+
#### Heap Buffer Overflow in Libinjection
75+
76+
An issue was found in libinjection (not in libmodsecurity3). libinjection is a third-party library used by ModSecurity.
77+
78+
The discovered issue could be exploited only if the user built the code with `ASAN` flags (eg. with `-fsanitize=address`), which is uncommon in production environments
79+
80+
As of this writing, the libinjection project also fixed this issue and released the new version (libinjection4), so we updated the submodule in the library (thanks [@Easton97-Jens](https://github.com/Easton97-Jens/)).\
81+
We also updated the libinjection code in mod_security2 (added as a submodule too).
82+
83+
#### Undefined Behavior in `msc_tree.h`
84+
85+
An issue was found in a macro which was used in `msc_tree.h`. ModSecurity would crash with a segmentation fault if a rule used the operator `@ipMatch` with an argument containing a null (`\0`) byte.
86+
87+
The affected macro is used also in `mod_security2` so we fixed this issue there too.
88+
89+
#### Null Pointer Dereference and Unhandled Exception in Config Parser
90+
91+
An issue was discovered in libmodsecurity3's config parser. ModSecurity could crash in some cases if a config directive used tabs instead of spaces.
92+
93+
A second issue in the config parser could cause an unhandled exception to be thrown in several different cases (e.g., unknow token).
94+
95+
#### Heap Buffer Overflow (write) in ACMP (Aho-Corasick) Pattern Matching (`@pm`)
96+
97+
An issue was discovered in the `@pm` operator's behavior. If the pattern list contained a null (`\0`) byte a segmentation fault could be triggered.
98+
99+
The same issue existed in mod_security2 and has been fixed there as well.
100+
101+
#### Heap Buffer Overflow (read) in Multipart Body Processor
102+
103+
An issue was discovered in the multipart body processor. The issue could be exploited only if the code was built with the `-fsanitize=address` flag.
104+
105+
106+
### Conclusion
107+
108+
We are greatful to all the reporters for their help in addressing these issues in ModSecurity.
109+
110+
To be safe from attacks caused by any of the discussed issues, you should upgrade your WAF to version 3.0.15 or 2.9.13.

0 commit comments

Comments
 (0)