Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
thymeleaf-check — Offline-Checker für Thymeleaf CVE-2026-40477 / CVE-2026-41901 — zeigt dir, welcher der beiden CVSS-9.0-SSTI-Schwachstellen du ausgesetzt bist und ob deine Versionslinie überhaupt einen Fix hat (3.0.x: hat keinen). | Kitploit
Tools/GitHubGitHub/xiaoqimikko/thymeleaf-check
Statische AnalyseSchwachstellenscannerKonfigurationsprüfungDevSecOpsLieferkettensicherheit
GitHubxiaoqimikko/thymeleaf-check

thymeleaf-check

Offline-Checker für Thymeleaf CVE-2026-40477 / CVE-2026-41901 — zeigt dir, welcher der beiden CVSS-9.0-SSTI-Schwachstellen du ausgesetzt bist und ob deine Versionslinie überhaupt einen Fix hat (3.0.x: hat keinen).

Repository anzeigen
vor 6h 56mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

thymeleaf-check

Thymeleaf CVE-2026-40477 / CVE-2026-41901 Offline-Prüfwerkzeug —— ohne Abhängigkeiten, einzelne JAR, keine Netzwerkverbindung nötig.

Zwei SSTI-Bypasses mit CVSS 9.0, innerhalb von neun Tagen zwei Fix-Versionen veröffentlicht. Es beantwortet zuerst „Welche davon betreffen mich?", und dann die unbequemere Frage:

Gibt es für meine Versionslinie eine Upgrade-Möglichkeit auf eine Fix-Version?

Für 3.1.x: ja (Upgrade auf 3.1.5.RELEASE genügt). Für 3.0.x und älter: nein —— und genau das ist die Gruppe mit der größten Installationsbasis.


Warum man es braucht

Der betroffene Bereich beider Advisories ist in OSV als introduced: 0 angegeben:

root@kitploit:~
curl -s https://api.osv.dev/v1/vulns/GHSA-r4v4-5mwr-2fwr | jq '.affected[0].ranges'
# [{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.4.RELEASE"}]}]

Das heißt, die gesamte 3.0-Linie ist betroffen, und in der versionsweisen Auflistung sind 3.0.15.RELEASE bis 1.0.0 alle aufgeführt. Auf Maven Central endet die 3.0-Linie jedoch bei 3.0.15.RELEASE, danach gab es keine Veröffentlichung mehr:

root@kitploit:~
curl -s https://repo1.maven.org/maven2/org/thymeleaf/thymeleaf/maven-metadata.xml \
  | grep -o '<version>3\.0\.[^<]*</version>' | tail -1
# <version>3.0.15.RELEASE</version>

Die Fix-Versionen beider CVEs liegen auf der 3.1-Linie. 3.0.x-Nutzer haben also nicht die Option „nur die Versionsnummer ändern", sondern nur eine Migration über die Hauptversionslinie hinweg —— und 3.1 ist eine offiziell dokumentierte Breaking Change (wörtlich aus dem Abschnitt 3.1.0.M1 der offiziellen ChangeLog.txt übernommen):

root@kitploit:~
- Removed web-API based expression security objects (#request, #response, #session, #servletContext).
- Removed support for Spring 3.x and Spring 4.x.
- Set minimum JDK compatibility level to JDK 8 project-wide (JDK 17 for thymeleaf-spring6).

Vorlagen, die ${#request.…} / ${#session.…} verwendet haben, schlagen nach dem Upgrade direkt fehl; diese Werte müssen stattdessen vom Controller ins Model gelegt werden. Das ist eine Migration, die eingeplant werden muss, kein bloßer Versionswechsel.

Wer ist auf dieser Linie

Abhängigkeitszahlen von deps.dev (direkt abgerufen am 2026-09-04, von jedem reproduzierbar):

VersionAnzahl AbhängigkeitenWelche CVEs betroffenUpgrade innerhalb derselben Linie möglich?
3.0.11.RELEASE1124beide❌ Keine Fix-Version auf der 3.0-Linie
3.0.15.RELEASE678beide❌ Wie oben, und es ist bereits das Ende dieser Linie
3.0.12.RELEASE641beide❌
3.1.3.RELEASE826beide✅ Upgrade auf 3.1.5
3.1.2.RELEASE677beide✅
3.1.4.RELEASE70nur CVE-2026-41901✅
3.1.5.RELEASE590—bereits sicher

Die einzelne Version mit der größten Installationsbasis ist 3.0.11.RELEASE — 36 % höher als das höchste der 3.1-Linie (3.1.3), und sie hat keinen Ausweg innerhalb derselben Linie.


Verwendung

root@kitploit:~
java -jar thymeleaf-check.jar <Verzeichnis oder Pfad zu jar/war> [--utf8|--gbk]
root@kitploit:~
$ java -jar thymeleaf-check.jar ./target
[CRITICAL] ./target/myapp.war :: BOOT-INF/lib/thymeleaf-3.0.11.RELEASE.jar
            Artefakt:thymeleaf  Version 3.0.11.RELEASE (3.0-Linie, Quelle: MANIFEST(Implementation-Version))
            Treffer: CVE-2026-40477 + CVE-2026-41901
            Betroffen, und die 3.0-Linie hat auf Maven Central keine Fix-Version (die Linie endet bei 3.0.15.RELEASE).

Exit-Codes: 2 = Es gibt Artefakte, deren Versionslinie keine Fix-Version innerhalb derselben Linie hat · 1 = Betroffen, aber Upgrade innerhalb derselben Linie möglich / nicht bestimmbar · 0 = nichts gefunden · 3 = Verwendungs- oder Pfadfehler. Kann direkt in CI eingebunden werden.

Was man am besten scannt

Build-Artefakte scannen (target/*.jar, *.war), nicht das Quellverzeichnis. Thymeleaf wird in den meisten Fällen transitiv über spring-boot-starter-thymeleaf eingebunden, und der Starter selbst trägt keine Version —— im POM ist die Thymeleaf-Version also gar nicht sichtbar. In diesem Fall sagt das Tool explizit „aus dem POM nicht bestimmbar", statt es als nicht vorhanden zu behandeln.

Drei Erkennungsquellen, nach Zuverlässigkeit sortiert:

  1. Implementation-Version im MANIFEST —— erkennt auch JARs, die von Repackaging-Tools umbenannt wurden. (Das offizielle Thymeleaf-JAR hat unter META-INF/ nur MANIFEST.MF, kein maven/-Verzeichnis, daher ist dies für Thymeleaf die robusteste Quelle.)
  2. Maven-Metadaten pom.properties
  3. JAR-Dateiname

BOOT-INF/lib/ und WEB-INF/lib/ in fat JARs / WARs werden einzeln auseinandergenommen, und auch die MANIFEST-Dateien eingebetteter JARs werden gelesen.


Die beiden CVEs sind zwei verschiedene Mechanismen

CVE-2026-40477CVE-2026-41901
GHSAGHSA-r4v4-5mwr-2fwrGHSA-c9ph-gxww-7744
CVSS9.09.0
Betroffen<= 3.1.3.RELEASE<= 3.1.4.RELEASE
Fix3.1.4.RELEASE3.1.5.RELEASE
Offenlegung2026-04-152026-05-04
Offizieller Wortlaut"fails to properly restrict the scope of accessible objects""fails to properly neutralize specific constructs", tritt im sandboxed (restricted) Kontext auf

Der betroffene Bereich des zweiten CVE umfasst 3.1.4, wer also gemäß dem ersten Advisory auf 3.1.4 aktualisiert hat, fällt unter den zweiten.

Aber das sollte man nicht als „offiziell nicht sauber gefixt" lesen —— die beiden Advisories beschreiben unterschiedliche Mechanismen, und die beiden offiziellen Versionen 3.1.4 (2026-04-12) und 3.1.5 (2026-04-21) liegen neun Tage auseinander. Kein offizieller Text besagt, dass der erste Fix unvollständig war. Dieses Tool stellt nur die Fakten nebeneinander, ohne dir diese Schlussfolgerung abzunehmen.


Woher die Entscheidungstabelle stammt und wie man prüft, dass sie noch stimmt

Jede Zahl in RuleTable.java lässt sich nachvollziehen:

root@kitploit:~
python tools/gen_rules.py --show

Es gleicht die Entscheidungstabelle mit zwei Primärquellen ab —— den betroffenen Bereichen und der versionsweisen Auflistung von OSV sowie der maven-metadata.xml von Maven Central —— bei Abweichungen wird mit einem Exit-Code ungleich null beendet.

Drei Vereinbarungen:

  • Bei fehlgeschlagenem Datenabruf Exit-Code 2, mit der Meldung „nicht verifiziert", nicht „Verifizierung bestanden". Ein Netzwerkausfall darf nicht als „alles korrekt" gelesen werden.
  • Nur verifizieren, Code nicht automatisch ändern. Wenn sich Zahlen ändern, muss ein Mensch prüfen, wie es dazu kam.
  • Es beobachtet gezielt zwei Dinge, die dieses Tool veralten lassen könnten:Wurde 3.1.6 veröffentlicht? und Gibt es plötzlich ein 3.0.16 auf der 3.0-Linie?

Build

root@kitploit:~
mvn package        # JDK 17;target/thymeleaf-check-0.1.0.jar
mvn test           # 19 Testfälle

Die Null-Abhängigkeit zur Laufzeit ist beabsichtigt: Ein Prüfwerkzeug muss in jede beliebige Umgebung geworfen und direkt ausgeführt werden können.

License

Apache-2.0

Tool herunterladen