Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
thymeleaf-check — オフラインで確認できるThymeleaf CVE-2026-40477 / CVE-2026-41901チェッカー — 2つのCVSS 9.0のSSTI脆弱性のうちどちらに影響を受けるかを判定し、お使いのバージョン系列に修正が存在するかどうかも確認できます(3.0.x: 修正なし)。 | Kitploit
ツール/GitHubGitHub/xiaoqimikko/thymeleaf-check
静的分析脆弱性スキャナー構成監査DevSecOpsサプライチェーンセキュリティ
GitHubxiaoqimikko/thymeleaf-check

thymeleaf-check

オフラインで確認できるThymeleaf CVE-2026-40477 / CVE-2026-41901チェッカー — 2つのCVSS 9.0のSSTI脆弱性のうちどちらに影響を受けるかを判定し、お使いのバージョン系列に修正が存在するかどうかも確認できます(3.0.x: 修正なし)。

リポジトリを見る
7時間40分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

thymeleaf-check

Thymeleaf CVE-2026-40477 / CVE-2026-41901 オフライン調査ツール —— 依存関係ゼロ、単一 jar、オフライン動作。

CVSS 9.0 の SSTI バイパスが2件、9日間で修正版が2回リリースされました。まず「自分はどの CVE に該当するか」を判定し、 次により厄介な問いに答えます:

自分のバージョン系統に、アップグレード可能な修正版はあるか?

3.1.x にはあります(3.1.5.RELEASE に上げれば完了)。 3.0.x 以前にはありません —— そして、それが最も広く導入されている層です。


なぜ必要なのか

2件の advisory の影響範囲は、OSV ではどちらも introduced: 0 です:

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"}]}]

つまり 3.0 系全体が影響範囲であり、バージョン別リストには 3.0.15.RELEASE から まで全て掲載されています。 一方、Maven Central 上の 3.0 系は しており、以降リリースはありません:

1.0.0
3.0.15.RELEASE で終了
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>

両 CVE の修正版は 3.1 系にのみ存在します。 そのため 3.0.x ユーザーには「バージョン番号を変えるだけ」という選択肢はなく、 大規模バージョン系統間の移行が必要です —— そして 3.1 は公式に破壊的変更と明記されています(公式 ChangeLog.txt の 3.1.0.M1 節より抜粋):

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).

テンプレートで ${#request.…} / ${#session.…} を書いたことがある場合、アップグレードすると直接エラーになります。これらの値は Controller が Model に入れるように変更する必要があります。 これは計画が必要な移行であり、バージョン番号を変えるだけではありません。

この系統に該当するのは誰か

deps.dev の依存数(2026-09-04 直接取得、誰でも再計算可能):

バージョン依存数該当 CVE同系統内でアップグレード可能か
3.0.11.RELEASE1124両方❌ 3.0 系に修正版なし
3.0.15.RELEASE678両方❌ 同上、かつこの系統の最終版
3.0.12.RELEASE641両方❌
3.1.3.RELEASE826両方✅ 3.1.5 にアップグレード
3.1.2.RELEASE677両方✅
3.1.4.RELEASE70CVE-2026-41901 のみ✅
3.1.5.RELEASE590—安全

最も導入が多い単一バージョンは 3.0.11.RELEASE で、3.1 系で最も多い 3.1.3 より 36% 多く、しかも同系統内に出口がありません。


使い方

root@kitploit:~
java -jar thymeleaf-check.jar <ディレクトリまたは 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
            アーティファクト:thymeleaf  バージョン 3.0.11.RELEASE(3.0 系、根拠: MANIFEST(Implementation-Version))
            該当: CVE-2026-40477 + CVE-2026-41901
            影響あり、かつ 3.0 系には Maven Central 上に修正版が存在しない(この系統は 3.0.15.RELEASE で終了)。

終了コード:2 = 同系統内に修正版がないバージョンのアーティファクトを検出 · 1 = 影響ありだが同系統内でアップグレード可能 / 判定不能 · 0 = 検出なし · 3 = 使い方またはパスのエラー。 CI に直接組み込めます。

何をスキャンするのが最も正確か

ビルド成果物(target/*.jar、*.war)をスキャンし、ソースディレクトリはスキャンしないでください。 Thymeleaf はほとんどの場合 spring-boot-starter-thymeleaf によって推移的に導入されますが、starter 自体はバージョンを持ちません —— pom には Thymeleaf のバージョン番号が一切見えません。この場合、ツールは「pom からは判定できない」と明示し、存在しないものとしては扱いません。

信頼性の高い順に3つの識別根拠:

  1. MANIFEST の Implementation-Version —— jar がリパッケージツールでリネームされても認識可能。 (Thymeleaf 公式 jar の META-INF/ には MANIFEST.MF のみで maven/ ディレクトリは存在しないため、これが最も確実な根拠です。)
  2. Maven メタデータ pom.properties
  3. jar ファイル名

fat jar / war 内の BOOT-INF/lib/、WEB-INF/lib/ は分解して個別に確認し、内包 jar の MANIFEST も読み取ります。


2件の CVE は異なる2つのメカニズム

CVE-2026-40477CVE-2026-41901
GHSAGHSA-r4v4-5mwr-2fwrGHSA-c9ph-gxww-7744
CVSS9.09.0
影響範囲<= 3.1.3.RELEASE<= 3.1.4.RELEASE
修正3.1.4.RELEASE3.1.5.RELEASE
開示2026-04-152026-05-04
公式の原文"fails to properly restrict the scope of accessible objects""fails to properly neutralize specific constructs"、sandboxed (restricted) コンテキストで発生

2件目の影響範囲には 3.1.4 が含まれるため、1件目の advisory に従って 3.1.4 にアップグレードした人は、2件目の影響範囲に入ります。

ただし、これを「公式が修正しきれていない」と読まないでください —— 2件の advisory は異なるメカニズムを説明しており、 3.1.4(2026-04-12)と 3.1.5(2026-04-21)の公式リリースは9日間隔てており、 前の修正が不完全だったとする公式の記述は一切ありません。本ツールは事実を並べて提示するだけで、その結論を代わりに下すことはしません。


判定表の由来と、それが正しいかの検証方法

RuleTable.java の各数値はすべて遡って検証可能です:

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

これは2つの一次ソースと判定表を照合します —— OSV の影響範囲とバージョン別リスト、Maven Central の maven-metadata.xml —— 一致しない場合は非ゼロで終了します。

3つの取り決め:

  • データ取得失敗時は終了コード 2 で、「検証できなかった」と報告し、「検証通過」とは報告しない。ネットワーク障害時に全て正しいと読んではいけない。
  • 照合のみ行い、コードは自動変更しない。数値が変わった場合は人がどのように変わったかを確認する。
  • このツールを陳腐化させる2つの事象を特に監視する:3.1.6 がリリースされたか、3.0 系に突然 3.0.16 が登場したか。

ビルド

root@kitploit:~
mvn package        # JDK 17;target/thymeleaf-check-0.1.0.jar
mvn test           # 19 テストケース

実行時の依存関係ゼロは意図的です:調査ツールはどんな環境にも放り込んですぐ実行できる必要があります。

License

Apache-2.0

ツールをダウンロード