
CVE-2026-24880: Gilt Apaches Upgrade-Empfehlung tatsächlich für Ihr Tomcat? Erkennt den Fix anhand der Klassenpräsenz, nicht durch Versionsvergleich. Deckt die Linien 7.0/8.0/8.5/9.0/10.0/10.1/11.0 ab.
CVE-2026-24880 · GHSA-563x-q5rq-57qp —— Gilt für dich der Apache-Satz
upgrade to version 11.0.20, 10.1.52 or 9.0.116?
Für die meisten gilt er nicht, und zwar auf vier verschiedene Arten nicht. Dieses Tool scannt deine Artefakte und sagt dir, welche davon zutrifft.
java -jar tomcat-line-check.jar /path/to/tomcat # 解压部署的 Tomcat
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 # 只看七条线的判定表
java -jar tomcat-line-check.jar --utf8 ... # Windows 控制台中文乱码时加
unzip -l tomcat-coyote-<ver>.jar | grep ChunkExtension
org/apache/tomcat/util/http/parser/ChunkExtension.class vorhanden = Fix enthalten; nicht vorhanden = Fix fehlt.
🔴 Dieses Tool entscheidet nicht anhand des Versionsnummernvergleichs, ob ein Fix vorhanden ist – denn genau die Aussage über Versionsnummern ist der Punkt, an dem bei dieser CVE Fehler gemacht wurden.
Die Bewertungstabelle wird von tools/gen_table.py aus Primärquellen erzeugt; schlagen die sieben Gruppen von Assertions fehl, wird die Ausgabe der Tabelle verweigert.
| Linie | Letzte Version | EOL | Fix vorhanden | Ausgang |
|---|---|---|---|---|
| 7.0 | 7.0.109 | 2021-03-31 | Nein | ❌ 7.0.110 = 404 |
| 8.0 | 8.0.53 | 2018-06-30 | Nein | ❌ 8.0.54 = 404 |
| 8.5 | 8.5.100 | 2024-03-31 | Nein | ❌ 8.5.101 = 404 |
| 10.0 | 10.0.27 | 2022-10-31 | Nein | ❌ 10.0.28 = 404 |
| 9.0 | 9.0.121 | 2027-03-31 | 9.0.115 Nein | ✅ 9.0.116 |
| 10.1 | 10.1.59 | Nicht EOL | 10.1.52 Nein | ✅ 10.1.53 |
| 11.0 | 11.0.25 | Nicht EOL | 11.0.18 Nein | ✅ 11.0.20 |
① Du bist auf der Linie 8.5 / 7.0 / 8.0 – keine der drei offiziell genannten Versionen liegt auf deiner Linie,
und deine Linie wird nicht mehr ausgeliefert (8.5.101 / 7.0.110 / 8.0.54 sind auf Maven Central alle 404).
8.0 ist besonders: Offiziell wird sie als unknown markiert, selbst die Frage „bist du betroffen?“ wird nicht beantwortet.
② Du bist auf der Linie 10.1 – offiziell sollst du auf 10.1.52 aktualisieren, doch 10.1.52 selbst fehlt der Fix.
Der vorherige Absatz derselben Ankündigung listet 10.1.0-M1 through 10.1.52 als betroffen.
Apaches eigene security-10.html
ordnet diese CVE dem Abschnitt 10.1.53 zu; compare 10.1.52...10.1.53 enthält tatsächlich den Fix-Commit f07df938.
→ Sich nach jenem Satz zu richten, bedeutet, nicht aktualisiert zu haben.
③ Du bist auf der Linie 10.0 – in der offiziellen Ankündigung kommt 10.0. 0-mal vor.
Weder in der Liste der betroffenen Versionen noch in den beiden unknown-Fällen; auch die beiden Bereiche der GitHub Advisory
(>= 7.0.0, < 9.0.116 und >= 10.1.0-M1, < 10.1.52) erfassen sie nicht.
Und die ChunkedInputFilter-Member von 10.0.27 sind wortgleich mit denen von 7.0.109 / 8.5.100, 10.0.28 ist 404.
→ Keine Quelle hat je beantwortet, ob 10.0 betroffen ist.
④ Du verwendest Dependabot / OSV – die GitHub Advisory fasst 7.0/8.5/9.0 zu einem Bereich zusammen,
first_patched_version = 9.0.116, daher wird die Maschine 8.5-Nutzern sagen, sie sollen auf 9.0.116 aktualisieren.
Das ist eine andere Hauptversionslinie, kein Patchen.
low (GitHub Advisory markiert high / CVSS 7.5).
Beide Zahlen sind hier aufgeführt, ohne die für uns günstigere auszuwählen.1b586d6 (9.0) · f07df938 (10.1) · fde1a82 (11.0)python tools/gen_table.py --dry # 只跑断言,不写文件
python tools/gen_table.py # 断言全过才写 LineTable.java
Assertions umfassen: Positiv (9.0.116 / 10.1.53 / 11.0.20 müssen die Fix-Klasse enthalten), Negativ (9.0.115 / 10.1.52 dürfen sie nicht enthalten), Kernaussage (im offiziellen recommend steht genau 10.1.52), EOL-Linie, kein Ausgang (die nächste Version nach der finalen muss 404 liefern), Sentinel (eine nicht existierende Version muss 404 liefern, um zu belegen, dass das 404-Kriterium selbst nicht defekt ist), 10.0 fehlt.
mvn package # 需要 JDK 17;运行时零依赖
Apache-2.0
| Code | Bedeutung |
|---|---|
0 | Scan abgeschlossen, und jede Datei wurde tatsächlich eingelesen, keine Befunde, die eine Aktion von dir erfordern |
4 | Eine Datei konnte nicht gelesen werden – kein Zip, Inhalt abgeschnitten oder Lesefehler |
🔴 4 wurde am 2026-09-09 hinzugefügt, und der Grund dafür verdient eine klare Erklärung.
Zuvor hinterließen nicht lesbare Dateien nur eine Hinweiszeile in der Ausgabe, während der Exit-Code weiterhin 0 blieb –
Spuren sind für Menschen gedacht, CI und Skripte schauen auf den Exit-Code, also bedeutete „ich konnte es nicht lesen“ in der Automatisierung „bestanden“.
Ein beschädigtes, verschlüsseltes oder unvollständig heruntergeladenes Jar verwandelte sich stillschweigend in ein „keine Probleme gefunden“.
„Ich kann es nicht lesen“ und „du bist sicher“ müssen zwei verschiedene Aussagen sein.
⚠️ Ein legitimes leeres Jar gilt nicht als nicht lesbar (ein 22-Byte-EOCD-Datensatz ist ein echtes leeres Zip) und löst kein 4 aus –
bei zu vielen Fehlalarmen schaut niemand mehr auf echte Warnungen.
Die Bedeutung der übrigen Exit-Codes findest du oben in den einzelnen Bewertungsstufen und in der Gebrauchsanweisung.