
Générateur d'exploits basé sur Rust pour CVE-2026-29000, un contournement d'authentification dans pac4j-jwt via un JWT alg:none imbriqué dans un JWE, automatisant la récupération de JWKS et la forge de jetons pour des tests autorisés.
Ce dépôt contient une implémentation Rust spécialisée pour exploiter CVE-2026-29000, une vulnérabilité de contournement d'authentification dans pac4j-jwt. La vulnérabilité provient d'un « Signature Validation Skip » lorsqu'un PlainJWT (alg: none) est imbriqué dans un conteneur JWE chiffré.
Récupération automatisée de JWKS : Récupère les clés RSA publiques de la cible directement depuis le point de terminaison /api/auth/jwks.
Construction de JWS non sécurisé : Fabrique un JWT avec l'algorithme None contenant des revendications administratives (ROLE_ADMIN).
Enveloppe JWE : Encapsule le jeton interne malveillant en utilisant RSA-OAEP-256 et A128GCM pour contourner les filtres périmétriques initiaux.
Exécution asynchrone : Propulsé par tokio et reqwest pour une mise en réseau efficace.
Rust/Cargo installé.
Accès réseau à la cible (par défaut : http://principal.htb:8080).
Installation Clonez le dépôt :
git clone https://github.com/0xW1LD/CVE-2026-29000.git
cd CVE-2026-29000
Exécutez le générateur d'exploit pour produire le JWE falsifié :
cargo run
L'exploit cible un défaut logique où la bibliothèque déchiffre le JWE externe mais ne parvient pas à valider récursivement la signature du JWS interne si l'en-tête spécifie alg: none.
Couche interne : Un JWT avec alg: None contenant le sujet administrateur.
Couche externe : Le JWT interne est chiffré à l'aide de la clé publique du serveur lui-même.
Résultat : Le serveur déchiffre le jeton, constate qu'il a été chiffré correctement, et fait confiance à la charge utile interne sans vérifier de signature.
Cet outil est destiné à des fins éducatives et aux tests de sécurité autorisés (environnements CTF/Lab) uniquement. L'accès non autorisé à des systèmes informatiques est illégal.