
# Dimostrazione di bypass dell'autenticazione in pac4j JWT Proof-of-concept in Python che dimostra un bypass dell'autenticazione in pac4j JWT creando un token JWE con un JWT interno non firmato, consentendo l'escalation dei privilegi senza una chiave privata.
Proof‑of‑Concept in Python per CVE‑2026‑29000, un bypass critico dell'autenticazione che colpisce le applicazioni che utilizzano il modulo JWT di pac4j.
La vulnerabilità consente agli attaccanti di autenticarsi come utenti arbitrari inviando un token JWE dannoso contenente un PlainJWT non firmato (alg: none).
Le applicazioni pac4j possono utilizzare il seguente flusso di token:
/api/auth/loginA causa di una gestione errata della logica di parsing del JWT, quando il token interno è un PlainJWT (token non firmato):
toSignedJWT() restituisce nullCiò consente a un attaccante di:
Un attaccante può:
Non è richiesta alcuna chiave privata — è sufficiente la chiave pubblica esposta tramite JWKS.
Questo repository fornisce un PoC in Python che:
Python 3.x
Installa le dipendenze:
pip install jwcrypto requests
python3 poc.py \
--jwks http://target:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
Esempio di output:
=== Token JWE dannoso ===
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwiY3R5IjoiSldUIn0...
Utilizzalo come:
Authorization: Bearer <TOKEN>
Questo repository è fornito esclusivamente a scopo educativo e di ricerca. Non utilizzare questo codice contro sistemi senza la dovuta autorizzazione.
Ali Hussainzada Ricercatore di sicurezza applicativa | Bug Hunter