
CVE‑2026‑82329 – Boîte à outils de contournement d'authentification JFrog Artifactory

USAGE ÉTHIQUE UNIQUEMENT – TESTS DE SÉCURITÉ AUTORISÉS
Ce dépôt fournit des outils destinés exclusivement aux professionnels de la sécurité autorisés, aux blue teams et aux testeurs d'intrusion.
Tout accès non autorisé à des systèmes informatiques est illégal en vertu du CFAA (États-Unis), du Computer Misuse Act (Royaume-Uni), du TCK 243/244 (Turquie) et de lois similaires dans le monde entier.
Aperçu de la vulnérabilité
CVE‑2026‑82329 est une vulnérabilité critique de contournement d'authentification dans JFrog Artifactory auto-hébergé (versions 7.111.x à 7.161.x) qui permet à un attaquant non authentifié d'obtenir un jeton d'administrateur complet de la plateforme en abusant du mécanisme de jonction de cluster JFrog Access.
Fonctionnement
- Confiance dans une clé de jonction vide – JFrog Access fait confiance à une clé de jonction fantôme dont la valeur est une chaîne vide. Son secret de signature est donc la valeur déterministe
32 * 0x20 (espaces).
- JWT de jonction forgé – un attaquant forge un JWT HS256 signé avec ce secret connu et
kid = SHA256("").
- Jeton SERVICE émis –
POST /access/api/v1/registry/join renvoie un jeton SERVICE avec scp=admin sans aucune authentification.
- Échange de jeton admin –
POST /access/api/v1/tokens avec scope=applied-permissions/admin&audience=* produit un jeton admin complet de la plateforme.
- Impact – prise de contrôle complète du dépôt, vol de jetons, création d'utilisateurs admin, empoisonnement d'artefacts, attaques de chaîne d'approvisionnement et mouvement latéral vers les services connectés (Xray, Mission Control, Distribution). Mettez à jour immédiatement !
Versions affectées
- 7.111.4 – 7.111.20 – vulnérable
- 7.117.0 – 7.117.27 – vulnérable
- 7.125.0 – 7.125.19 – vulnérable
- 7.133.0 – 7.133.28 – vulnérable
- 7.146.0 – 7.146.36 – vulnérable
- 7.161.0 – 7.161.19 – vulnérable
Correctif
- Mettez à jour vers 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38 ou 7.161.20 ou une version ultérieure.
- Si la mise à jour n'est pas possible, restreignez l'accès réseau à Artifactory (ne l'exposez jamais à Internet) et renouvelez tous les jetons admin comme solution de contournement temporaire.
[>] Outils
| Outil | Objectif | Utilisateur visé |
|---|
exploit.py | Boîte à outils complète weaponisée avec forge de JWT, échange de jeton admin, création d'utilisateur admin, scan de masse, mode furtif, rotation de proxy, menu interactif et chaîne d'attaque complète. | Red teams / pentesters autorisés |
safechecker.py | Vérificateur de vulnérabilité non intrusif qui détecte la version d'Artifactory, valide l'exposition et évalue le risque sans obtenir de jeton ni exécuter de payload. Génère des rapports JSON. | Blue teams / auditeurs de sécurité |
<> Comparaison des fonctionnalités
| Fonctionnalité | exploit.py | safechecker.py |
|---|
| Détection de vulnérabilité | [+] | [+] |
| Détection de version | [+] | [+] |
| JWT de jonction forgé | [+] | [-] |
| Émission de jeton de service | [+] | [-] |
| Échange de jeton admin | [+] | [-] |
| Création d'utilisateur admin | [+] | [-] |
| Lister les dépôts | [+] | [-] |
| Lister les utilisateurs | [+] | [-] |
| Extraction de la configuration | [+] | [-] |
| Extraction des jetons | [+] | [-] |
| Chaîne d'attaque complète | [+] | [-] |
| Menu interactif | [+] | [-] |
| Scan de masse (multi‑thread) | [+] | [+] |
| Prise en charge de proxy | [+] | [+] |
| Rotation de proxy | [+] | [-] |
| Prise en charge de Tor (anonymat) | [+] | [-] |
| Rotation de User‑Agent (OPSEC) | [+] | [-] |
| Jitter (OPSEC) | [+] | [-] |
| Limiteur de débit adaptatif | [+] | [-] |
| Mode non intrusif (sûr) | [-] | [+] |
| Rapport de version | [+] | [+] |
| Vérification d'accès anonyme | [-] | [+] |
| Rapport JSON | [+] | [+] |
| Nettoyage des journaux (anti‑forensique) | [+] | [-] |
| User‑Agent personnalisé | [+] | [+] |
| Contrôle de vérification SSL | [+] | [+] |
Résumé des cas d'usage
| Scénario | Outil recommandé |
|---|
| Blue Team – vérifier si votre Artifactory est vulnérable | safechecker.py |
| Audit de sécurité – évaluation de vulnérabilité non intrusive | safechecker.py |
| Red Team – test d'intrusion autorisé avec exploitation complète | exploit.py |
| Bug Bounty – test de divulgation responsable | safechecker.py |
| Scan de masse – vérification de plusieurs cibles pour la vulnérabilité | exploit.py (détection uniquement) |
| Réponse à incident – vérifier si les systèmes sont compromis | safechecker.py |
Installation
git clone https://github.com/tc4dy/CVE-2026-82329-PoC-Exploit
cd CVE-2026-82329-PoC-Exploit
pip install -r requirements.txt
requirements.txt
requests
urllib3
curl_cffi
[P] Paramètres
Paramètres de exploit.py
| Paramètre | Description |
|---|
-u, --url | URL Artifactory cible unique (ex. http://artifactory.example.com:8082) |
-f, --file | Fichier contenant la liste des cibles (une par ligne) pour le scan de masse |
--create-admin | Créer un utilisateur admin persistant (format : USER:PASS) |
--keep-admin | Conserver l'utilisateur admin créé (ne pas nettoyer après le scan) |
--token-only | Afficher uniquement le jeton admin (cible unique) |
--interactive | Menu interactif après exploitation |
--service-id | ID de service pour le JWT de jonction (par défaut : jfrt@01) |
-t, --threads | Nombre de threads pour multi‑cibles (par défaut : 10) |
--timeout | Délai d'expiration des requêtes (par défaut : 25s) |
--retry | Nombre maximal de tentatives (par défaut : 3) |
--proxy | Proxy HTTP/HTTPS (ex. http://127.0.0.1:8080) |
--proxy-list | Fichier avec les proxies pour rotation (un par ligne) |
--jitter | Jitter aléatoire (0‑2 sec) entre les requêtes |
--stealth | Activer le mode furtif (rotation UA + X‑Forwarded‑For) |
--curl-cffi | Utiliser curl_cffi pour l'usurpation d'empreinte TLS |
--full | Attaque complète : tous les modules |
--dump-config | Extraire la configuration système |
--dump-tokens | Extraire tous les jetons d'accès |
--list-repos | Lister les dépôts |
--list-users | Lister les utilisateurs |
--detect | Détection uniquement (pas d'échange de jeton admin) |
--exploit | Effectuer l'exploitation complète |
-o, --output | Enregistrer le rapport JSON dans un fichier |
-v, --verbose | Sortie verbeuse |
-q, --quiet | Mode silencieux |
Paramètres de safechecker.py
| Paramètre | Description |
|---|
-u, --url | URL Artifactory cible unique (ex. http://artifactory.example.com:8082) |
-f, --file | Fichier contenant la liste des cibles (une par ligne) |
-t, --threads | Nombre de threads pour multi‑cibles (par défaut : 5) |
--timeout | Délai d'expiration des requêtes (par défaut : 10s) |
-v, --verbose | Sortie verbeuse |
-o, --output | Enregistrer le rapport JSON dans un fichier |
Scénarios