
CVE-2026-29000の概念実証エクスプロイト。pac4j-jwtにおける、JWEコンテナ内のalg:noneを持つネストされたPlainJWTを介した認証バイパスです。
このリポジトリには、pac4j-jwt(CVE-2026-29000)における認証バイパス脆弱性の概念実証(POC)が含まれています。この脆弱性により、攻撃者はJWE(JSON Web Encryption)コンテナ内にPlainJWT(alg: noneを使用)をネストすることで、署名検証をバイパスできます。
この攻撃は、サーバーが公開鍵で暗号化されたJWEを復号し、その内部のJWTがnoneアルゴリズムを使用している場合に署名を検証せずに信頼するという挙動を悪用します。
Python 3と必要な依存関係がインストールされていることを確認してください:
pip install requests jwcrypto
exp.pyを使用して、JWKSエンドポイントからターゲットの公開鍵を取得し、ROLE_ADMIN権限を持つ悪意のあるトークンを作成して、JWEでラップします。
python3 exp.py <TARGET_URL> --user admin --role ROLE_ADMIN
例:
python3 exp.py http://localhost:8080
偽造トークンを取得したら、app.pyを使用して保護されたAPIエンドポイントと連携します。
python3 app.py <TARGET_URL> <FORGED_TOKEN>
特定のエンドポイントをテスト:
python3 app.py http://localhost:8080 <FORGED_TOKEN> --endpoint /api/users
exp.py:JWKSを取得し、PlainJWTを作成してJWEを偽造するメインのエクスプロイトスクリプト。app.py:発見したAPIエンドポイント(/api/dashboard、/api/users、/api/settings)に対して偽造トークンをテストするユーティリティスクリプト。このPOCは、教育目的および許可されたセキュリティテスト専用です。コンピュータシステムへの不正アクセスは違法です。