
CVE-2026-24880: does Apache's upgrade advice actually apply to your Tomcat? Detects the fix by class presence, not version comparison. Covers 7.0/8.0/8.5/9.0/10.0/10.1/11.0 lines.
CVE-2026-24880 · GHSA-563x-q5rq-57qp — Does Apache's
upgrade to version 11.0.20, 10.1.52 or 9.0.116 hold for you?
For most people it doesn't, and there are four different ways it fails. This tool scans your artifact and tells you which one applies.
java -jar tomcat-line-check.jar /path/to/tomcat # Exploded Tomcat deployment
java -jar tomcat-line-check.jar app.war # war
java -jar tomcat-line-check.jar app.jar # Spring Boot fat jar
java -jar tomcat-line-check.jar --table # Only show the seven-line verdict table
java -jar tomcat-line-check.jar --utf8 ... # Add when Chinese text is garbled on Windows console
unzip -l tomcat-coyote-<ver>.jar | grep ChunkExtension
Having org/apache/tomcat/util/http/parser/ChunkExtension.class = patched; not having it = missing the fix.
🔴 This tool does not compare version numbers to decide whether a fix is present — because the version-number story is exactly where this CVE goes wrong.
The verdict table is generated by tools/gen_table.py from primary sources; if any of the seven assertion groups fail, it refuses to emit the table.
| Line | Final version | EOL | Has fix | Exit |
|---|---|---|---|---|
| 7.0 | 7.0.109 | 2021-03-31 | No | ❌ 7.0.110 = 404 |
| 8.0 | 8.0.53 | 2018-06-30 | No | ❌ 8.0.54 = 404 |
| 8.5 | 8.5.100 | 2024-03-31 | No | ❌ 8.5.101 = 404 |
| 10.0 | 10.0.27 | 2022-10-31 | No | ❌ 10.0.28 = 404 |
| 9.0 | 9.0.121 | 2027-03-31 | 9.0.115 no | ✅ 9.0.116 |
| 10.1 | 10.1.59 | Not EOL | 10.1.52 no | ✅ 10.1.53 |
| 11.0 | 11.0.25 | Not EOL | 11.0.18 no | ✅ 11.0.20 |
① You're on the 8.5 / 7.0 / 8.0 line — none of the three versions Apache gives is on your line,
and your line has stopped shipping (8.5.101 / 7.0.110 / 8.0.54 are all 404 on Maven Central).
8.0 is special: Apache marks it as unknown, not even answering whether you're affected.
② You're on the 10.1 line — Apache tells you to upgrade to 10.1.52, and 10.1.52 itself is missing the fix.
The previous paragraph of the same advisory lists 10.1.0-M1 through 10.1.52 as affected.
Apache's own security-10.html
files this CVE under the 10.1.53 section; compare 10.1.52...10.1.53 indeed contains the fix commit f07df938.
→ Following that statement means upgrading to nothing.
③ You're on the 10.0 line — 10.0. appears 0 times in the official advisory.
It's neither in the affected list nor in the two unknown entries; both ranges in the GitHub advisory
(>= 7.0.0, < 9.0.116 and >= 10.1.0-M1, < 10.1.52) also fail to cover it.
Yet 10.0.27's ChunkedInputFilter members are byte-for-byte identical to 7.0.109 / 8.5.100, and 10.0.28 is 404.
→ No source has ever answered whether 10.0 is affected.
④ You use Dependabot / OSV — the GitHub advisory collapses 7.0/8.5/9.0 into one range,
first_patched_version = 9.0.116, so machines tell 8.5 users to upgrade to 9.0.116.
That's a different major line, not a patch.
low (the GitHub advisory marks it high / CVSS 7.5).
Both numbers are listed here; we don't pick the one that suits us.1b586d6(9.0)· f07df938(10.1)· fde1a82(11.0)python tools/gen_table.py --dry # Only run assertions, don't write the file
python tools/gen_table.py # Write LineTable.java only if all assertions pass
Assertions cover: positives (9.0.116 / 10.1.53 / 11.0.20 must have the fix class), negatives (9.0.115 / 10.1.52 must not), the core claim (the official recommend indeed names 10.1.52), EOL lines, no-exit (the version after the final one must 404), sentinels (a nonexistent version must 404, proving the 404 criterion itself isn't broken), and 10.0's absence.
mvn package # Requires JDK 17; zero runtime dependencies
Apache-2.0