Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pac4j-check — org.pac4j:pac4j-jwt における CVE-2026-29000(CVSS 10.0)のオフラインスキャナー。jar/fat-jar を直接検査するため、mvn dependency:tree が使えない環境でも動作します。単一 jar、依存関係ゼロ、Java 8+。 | Kitploit
ツール/GitHubGitHub/xiaoqimikko/pac4j-check
静的分析脆弱性スキャナーDevSecOpsサプライチェーンセキュリティ
GitHubxiaoqimikko/pac4j-check

pac4j-check

org.pac4j:pac4j-jwt における CVE-2026-29000(CVSS 10.0)のオフラインスキャナー。jar/fat-jar を直接検査するため、mvn dependency:tree が使えない環境でも動作します。単一 jar、依存関係ゼロ、Java 8+。

リポジトリを見る
161ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

pac4j-check

CVE-2026-29000(CVSS 10.0)のオフライン調査 —— 公式アドバイザリに記載されていないパッケージも含む。

English | 中文

単一の jar、約 24KB、実行時依存ゼロ、Java 8 以降で動作、完全オフライン、データを外部に送信しません。


この脆弱性とは

org.pac4j:pac4j-jwt の JwtAuthenticator は、暗号化 JWT(JWE) を処理する際に署名検証を強制していません。 攻撃者はサーバーの RSA 公開鍵(公開鍵はそもそも公開されている)を入手するだけで、 JWE でラップした PlainJWT を構築し、subject と role を任意の値に書き換えて、 任意のユーザーとして、管理者を含めてログインできます。資格情報は一切不要です。

項目値
CVECVE-2026-29000
GitHub advisoryGHSA-pm7g-w2cf-q238
CVSS10.0(満点)
公開日2026-03-05

pac4j は Spring Security、Apereo CAS、JEE、Vert.x、Play、Dropwizard などに広く統合されています。

🔴 v0.2.0 訂正:v0.1.0 の中核的主張は誤りでした

v0.1.0 は「公式脆弱性データベースには 1 つのパッケージしか記載されていないが、実際には 5 つある」と主張し、 そのため pac4j-oidc / javalin-pac4j / lagom-pac4j / ratpack-pac4j を危険と報告していました。 それは誤検知でした。公式アドバイザリが pac4j-jwt のみを記載しているのは正しいです。

検証根拠(2 つの独立した証拠、いずれも自身で再現可能):

成果物pac4j-jwt への依存利用者に伝播するか
pac4j-oidctest scope(3.0.0 / 4.0.0 / 4.5.0 / 5.0.0 / 5.7.0 / 6.0.0 / 6.3.0 をバージョンごとに確認済み)❌
javalin-pac4jtest scope❌
lagom-pac4j-parentprovided scope❌
ratpack-pac4j:1.4.6その依存ブロックは全体が XML コメントで囲まれており、そもそも存在しない❌
  1. scope は伝播しない —— Maven では test / provided 依存は下流に伝播せず、 利用者の runtime classpath に pac4j-jwt は現れません。
  2. 成果物の実物検証 —— pac4j-oidc-6.0.0.jar は全 78 エントリで、すべて org/pac4j/oidc/ 配下にあり、 shade された pac4j-jwt クラスは一切ありません。伝播もせず、同梱もしていません。

誤りの原因:v0.1.0 は pom を 1 つずつ解析しましたが、「誰が pac4j-jwt という座標を書いたか」だけを見て、 scope を見ていませんでした —— 「pom に書かれている」を「利用者が受け取る」と取り違えていました。

v0.1.0 のレポートを理由に pac4j をアップグレードした場合、そのアップグレードは必須ではありませんでした(アップグレード自体は無害です)。 アプリケーションに影響を受けるバージョンの pac4j-jwt が実際に存在する場合にのみ、対応が必要です。

それでも専用ツールが必要な理由

あるマシンに影響を受ける pac4j-jwt が存在するかどうかの判断は、2 つのケースで mvn dependency:tree が機能しません —— 本番機にビルド済みの fat-jar しかない場合(ソースも pom もない)、あるいは何らかの SDK 内部に shade されていて、 依存ツリーにそもそも現れない場合です。本ツールは成果物そのものを直接スキャンし、ビルド環境に依存しません。

成果物影響を受けるバージョン数公式アドバイザリ
org.pac4j:pac4j-jwt114✅ 唯一記載されている、そしてこれは正しい

使い方

java -jar pac4j-check.jar ./myapp.jar        # jar/war を 1 つスキャン
java -jar pac4j-check.jar /opt/apps          # ディレクトリをスキャン(再帰)
java -jar pac4j-check.jar /opt/apps --json   # JSON 出力、パイプ接続に便利
java -jar pac4j-check.jar ./app.jar --gbk    # Windows コンソールで中国語が文字化けする場合に使用

終了コード:0 = 影響なし · 1 = 存疑/判定不能 · 2 = 影響を検出。CI に直接組み込めます。

出力例

[CRITICAL] pac4j-jwt 5.4.3
  位置    :demo-app.jar!/BOOT-INF/lib/pac4j-jwt-5.4.3.jar
  版本来源:pom.properties(可靠)
  部署形态:Spring Boot fat-JAR
  结论    :命中 CVE-2026-29000 —— JWE 处理路径未强制校验签名,
            拿到服务器 RSA 公钥即可伪造任意身份(含管理员)登录
  处置    :升级 pac4j-jwt 至 5.7.9

v0.1.0 ではここでさらに [CRITICAL] pac4j-oidc が報告されていました —— それは誤検知で、v0.2.0 で削除済みです。 理由は冒頭の訂正説明を参照してください。

何をするか

  • Spring Boot fat-JAR を再帰的に展開(メモリ上で、解凍せずにディスクに書き出さない)、具体的なネストパスまで追跡
  • ホスト jar に shade されたケースを識別 —— まさに mvn dependency:tree では見つけられない類
  • 導入チェーンを追跡 —— どの成果物が pac4j-jwt を引き込んだかを通知
  • 公式レンジに基づく判定と具体的なアップグレード先を提示

判定ルールと境界(使用前に必ずお読みください)

判定は一律に公式アドバイザリ GHSA-pm7g-w2cf-q238 に準拠します:

pac4j-jwt  < 4.5.9                      -> 升 4.5.9
pac4j-jwt  >= 5.0.0-RC1  且 < 5.7.9     -> 升 5.7.9
pac4j-jwt  >= 6.0.4.1    且 < 6.3.3     -> 升 6.3.3

自己検証:本ツールは Maven Central 上の pac4j-jwt 全 147 バージョンに対して判定を実行し、 命中数は 114 で、公式アドバイザリの 3 つのレンジのバージョン数の合計(13+33+68)と正確に一致します。 この主張はテスト(OfficialRangeCrossCheckTest)に記述されており、一致しなければビルドが失敗します。

⚠️ ただし、それが何を検証しているかを明確にしてください:それはバージョンレンジのアルゴリズムが正しいことを検証しており、 「どの成果物を判定テーブルに入れるべきか」は検証できません —— v0.1.0 の誤検知はまさに後者で発生し、 当時この自己検証はグリーンでした。検証が通った範囲 ≠ 結論が成立する範囲。

必ず説明すべき 2 つの限界

  1. org.pac4j という単一の groupId のみをカバーしています。 第三者の研究によれば影響を受ける成果物は合計 19 個、1,020 バージョンとされていますが、完全なリストは公開されていません。 本ツールが独立して再構築したのは org.pac4j の範囲内の部分であり、全範囲をカバーしているとは主張しません。 他の groupId(例:Apereo CAS の org.apereo.cas)は対象外です。

  2. pac4j-jwt 6.0.0 ~ 6.0.4 は「影響あり」ではなく「存疑」と表示されます。 公式は 6.x は 6.0.4.1 以降が影響を受けるとしていますが、第三者の研究は脆弱性が早くも 1.9.2 で導入されたとしています —— もしそれが事実なら、この 5 バージョンも該当すべきです。私たちは第三者の結論を独立に検証していません。 そのため個別に表示し、保守的なアップグレードを推奨するにとどめ、直接危険判定はしていません。

なぜこれほど保守的なのか:判定ルールの誤りは「誤検知」ではなく、ユーザーに誤った行動を取らせることだからです。 検証していない範囲を結論として断定するより、存疑と表示する方を選びます。

ビルド

mvn package        # 产物:target/pac4j-check.jar
mvn test           # 31 个测试

フィードバック

判定の誤り、検出漏れ、誤検知を見つけた場合は、Issue を提出してください。 再現可能な成果物の座標(groupId:artifactId:version)を提供していただければ、修正がはるかに速くなります。

License

Apache License 2.0


pac4j-check (English)

Offline scanner for CVE-2026-29000 (CVSS 10.0) — including the packages the official advisory does not list.

Single jar, ~24KB, zero runtime dependencies, Java 8+, fully offline, sends nothing anywhere.

The vulnerability

JwtAuthenticator in org.pac4j:pac4j-jwt fails to enforce signature validation on certain encrypted JWT (JWE) processing paths. An attacker holding the server's RSA public key (which is public by design) can craft a JWE-wrapped PlainJWT with arbitrary subject and role claims and authenticate as any user, including administrators — with no credentials.

CVECVE-2026-29000
GitHub advisoryGHSA-pm7g-w2cf-q238
CVSS10.0
Published2026-03-05

🔴 v0.2.0 correction: v0.1.0's central claim was wrong

v0.1.0 claimed the official advisory "lists only one package while there are five", and flagged pac4j-oidc / javalin-pac4j / lagom-pac4j / ratpack-pac4j as affected. Those were false positives. The advisory listing only pac4j-jwt is correct.

ArtifactHow it declares pac4j-jwtReaches consumers?
pac4j-oidctest scope (verified on 3.0.0 / 4.0.0 / 4.5.0 / 5.0.0 / 5.7.0 / 6.0.0 / 6.3.0)❌
javalin-pac4jtest scope❌
lagom-pac4j-parentprovided scope❌
ratpack-pac4j:1.4.6the whole block is inside an XML comment — it does not exist❌

Two independent lines of evidence, both reproducible:

  1. Scope does not propagate — Maven does not pass test / provided dependencies to downstream consumers, so pac4j-jwt never reaches their runtime classpath.
  2. Artifact inspection — pac4j-oidc-6.0.0.jar has 78 entries, all under org/pac4j/oidc/, with no shaded pac4j-jwt classes.

Root cause: v0.1.0 did parse every pom, but only looked at who names the coordinate, never at scope — mistaking "declared in a pom" for "reaches the consumer".

If you upgraded pac4j because of a v0.1.0 report, that upgrade was not required (though harmless). Action is only needed when an affected pac4j-jwt is actually present.

Why a dedicated tool

Deciding whether an affected pac4j-jwt is actually on a given machine defeats mvn dependency:tree in two common cases: a production box with only a packaged fat-jar (no sources, no pom), or a copy shaded inside some vendor SDK, invisible to the dependency tree. This tool inspects the artifacts themselves.

ArtifactAffected versionsIn official advisory
org.pac4j:pac4j-jwt114✅ the only one listed — and that is correct

Usage

java -jar pac4j-check.jar ./myapp.jar
java -jar pac4j-check.jar /opt/apps
java -jar pac4j-check.jar /opt/apps --json

Exit codes: 0 clean · 1 disputed/undetermined · 2 affected.

What it does

  • Recursively unpacks Spring Boot fat-JARs in memory (nothing written to disk)
  • Detects pac4j-jwt shaded into a host jar — the case mvn dependency:tree cannot see
  • Traces the introduction chain, so you know which artifact pulled it in
  • Reports a concrete upgrade target

Rules and limitations

Verdicts follow the official advisory GHSA-pm7g-w2cf-q238 exactly:

pac4j-jwt  < 4.5.9                    -> 4.5.9
pac4j-jwt  >= 5.0.0-RC1  and < 5.7.9  -> 5.7.9
pac4j-jwt  >= 6.0.4.1    and < 6.3.3  -> 6.3.3
ツールをダウンロード