
Python-PoC, der eine Authentifizierungsumgehung in pac4j JWT demonstriert, indem ein JWE-Token mit einem unsignierten inneren JWT erstellt wird, was eine Privilegienausweitung ohne privaten Schlüssel ermöglicht.
Python-Proof-of-Concept für CVE-2026-29000, einen kritischen Authentifizierungs-Bypass, der Anwendungen betrifft, die das pac4j JWT-Modul verwenden.
Die Schwachstelle ermöglicht es Angreifern, sich als beliebige Benutzer zu authentifizieren, indem sie ein bösartiges JWE-Token mit einem unsignierten PlainJWT (alg: none) senden.
pac4j-Anwendungen können den folgenden Token-Ablauf verwenden:
/api/auth/loginAufgrund einer fehlerhaften Verarbeitung der JWT-Parsing-Logik gilt Folgendes, wenn das innere Token ein PlainJWT (unsigniertes Token) ist:
toSignedJWT() gibt null zurückDies ermöglicht es einem Angreifer:
Ein Angreifer kann:
Es ist kein privater Schlüssel erforderlich – nur der öffentliche Schlüssel, der über JWKS bereitgestellt wird.
Dieses Repository stellt einen Python-PoC bereit, der:
Python 3.x
Abhängigkeiten installieren:
pip install jwcrypto requests
python3 poc.py \
--jwks http://target:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
Beispielausgabe:
=== Malicious JWE Token ===
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwiY3R5IjoiSldUIn0...
Verwenden Sie es als:
Authorization: Bearer <TOKEN>
Dieses Repository dient ausschließlich Bildungs- und Forschungszwecken. Verwenden Sie diesen Code nicht gegen Systeme ohne entsprechende Autorisierung.
Ali Hussainzada Application Security Researcher | Bug Hunter