Projet de reproduction de la chaîne RCE complète avec pré-authentification sur JFrog Artifactory (CVE-2026-42018 / CVE-2026-65616 / CVE-2026-65615) : rapport complet sur la chaîne d'attaque, livrables de reproduction Docker 7.146.7 (EXP / déploiement / validation de référence / échantillons de payload / outils de restauration)
À usage exclusif de tests de sécurité autorisés, de recherche défensive et d'enseignement en sécurité. Cette chaîne de vulnérabilités a été corrigée par l'éditeur (mise à niveau vers 7.161.15+ recommandée) ; veuillez ne la reproduire que dans un environnement de laboratoire isolé et jetable. Toute opération décrite dans ce dépôt, réalisée sans autorisation sur le système d'autrui, est illégale, et toutes les conséquences en découlant incombent à l'opérateur.
Ce dépôt constitue le livrable de reproduction complète de la chaîne de vulnérabilités RCE pré-authentifiée de JFrog Artifactory divulguée par edrabb.fr : reproduction entièrement automatisée de la chaîne d'attaque en 5 étapes sur la base de l'image officielle releases-docker.jfrog.io/jfrog/artifactory-oss:7.146.7 (seule forme de déploiement officielle de la branche 7.146.x : PostgreSQL externe), avec preuve de l'authenticité de la reproduction par une expérience de référence « RCE obtenu directement sur un environnement neuf » (voir attack-chain-package/baseline/BASELINE-VERIFIED.md).
| Étape | Maillon | CVE |
|---|---|---|
| Step 1 | Contournement d'authentification par barre oblique finale, obtention d'un JWT anonyme (aud=*@*) | CVE-2026-42018 |
| Step 2 | Échange de la paire de jetons access + refresh | CVE-2026-42018 |
| Step 3 | Découverte par le Router de l'ID de service jfrt@ → falsification du rafraîchissement du JWT admin → jeton administrateur réellement signé | CVE-2026-65616 |
| Step 4 | systemUpload téléverse payload.zip → system import décompresse et écrit un logback.xml malveillant | — |
| Step 5 | Écriture sur disque par Logback fileHeader de web.xml / composant CGI → RCE pré-authentifié via Tomcat CGI | CVE-2026-65615 |
├── 漏洞攻击链完整报告.md ← Rapport principal (vérification de référence de l'authenticité de la reproduction, principes, comparaison avec l'article de divulgation, recommandations de correction)
├── 复现报告.md ← Rapport technique détaillé de reproduction en 744 lignes (principes au niveau du code source + étapes manuelles)
└── attack-chain-package/
├── README.md ← Prise en main rapide (déploiement du labo / lancement de l'attaque / restauration de l'environnement)
├── exploit/
│ ├── exp.py ← EXP automatisé de la chaîne complète (bibliothèque standard Python 3, zéro dépendance tierce)
│ └── forge_jwt.py ← Script manuel de falsification de JWT pour l'étape 3 (indépendant de exp.py)
├── deploy/system.yaml ← Configuration de montage du conteneur Artifactory 7.146.7 (exigence stricte de l'image officielle : PostgreSQL)
├── baseline/ ← Vérification de référence de l'authenticité de la reproduction (enregistrements et configurations de l'expérience de RCE directe sur environnement neuf)
├── payload-sample/ ← Exemples de composants payload générés hors ligne (produit de exp.py --dump-payload)
└── recovery/ ← Scripts de restauration et de vérification de l'environnement (référence pour la réponse aux incidents)
# 1. 部署靶场(详见 attack-chain-package/README.md;需约 6 GB 磁盘与 8 GB 可用内存)
docker network create jfrog-net
docker run -d --name artifactory-pg --network jfrog-net \
-e POSTGRES_DB=artifactory -e POSTGRES_USER=artifactory -e POSTGRES_PASSWORD=artifactory \
postgres:15
docker run -d --name artifactory-rce --network jfrog-net -p 8081:8081 -p 8082:8082 \
-v <ABS_PATH>/attack-chain-package/deploy/system.yaml:/opt/jfrog/artifactory/var/etc/system.yaml \
releases-docker.jfrog.io/jfrog/artifactory-oss:7.146.7
# 等待 2–4 分钟,ping 返回 OK 即就绪
curl -s http://127.0.0.1:8082/artifactory/api/system/ping
# 2. 发起攻击(一次性模式,默认执行 id;Windows 宿主 python 为 2.x 时用 py -3)
python3 attack-chain-package/exploit/exp.py --target http://127.0.0.1:8082
# 3. 恢复环境(最简:销毁重建;原地恢复见 recovery/recover5.sh)
docker rm -f artifactory-rce
L'attaque est destructrice et à usage unique pour le webapp : les fonctionnalités Web d'origine d'Artifactory sont tuées dès que la RCE s'exécute ; veuillez impérativement utiliser un conteneur de laboratoire jetable.
attack-chain-package/payload-sample/payload.zip (artefact final téléversé, dont l'import déclenche la RCE) est stocké sous forme de texte base64 dans payload.zip.b64 :
# Windows PowerShell
[IO.File]::WriteAllBytes("payload.zip", [Convert]::FromBase64String((Get-Content "payload.zip.b64" -Raw).Trim()))
# Linux / macOS
base64 -d payload.zip.b64 > payload.zip
admin / password (compte initial par défaut de JFrog ; toute cette chaîne d'attaque est pré-authentifiée et n'utilise aucun identifiant)