
CVE‑2026‑29000 の Python 概念実証(PoC)です。これは、pac4j JWT モジュール を使用するアプリケーションに影響を与える重大な認証バイパスです。
この脆弱性により、攻撃者は 署名なし PlainJWT(alg: none)を含む悪意のある JWE トークン を送信することで、任意のユーザーとして認証することができます。
pac4j アプリケーションは、以下のトークンフローを使用する場合があります:
/api/auth/login 経由で認証するJWT 解析ロジックの不適切な処理により、内部トークンが PlainJWT(署名なしトークン) の場合:
toSignedJWT() は null を返すこれにより、攻撃者は以下を行うことができます:
攻撃者は以下を行うことができます:
秘密鍵は不要で、JWKS 経由で公開されている 公開鍵 のみが必要です。
このリポジトリは、以下のことを行う Python PoC を提供します:
Python 3.x
依存関係をインストールします:
pip install jwcrypto requests
python3 poc.py \
--jwks http://target:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
出力例:
=== Malicious JWE Token ===
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwiY3R5IjoiSldUIn0...
次のように使用します:
Authorization: Bearer <TOKEN>
このリポジトリは 教育および研究目的のみ で提供されています。 適切な許可なく、このコードをシステムに対して使用しないでください。
Ali Hussainzada アプリケーションセキュリティ研究者 | バグハンター