JFrog Artifactory 事前認証フルチェーン RCE 再現プロジェクト(CVE-2026-42018 / CVE-2026-65616 / CVE-2026-65615):完全攻撃チェーンレポート、7.146.7 Docker 再現成果物(EXP / デプロイ / ベースライン検証 / payload サンプル / 復旧ツール)
**認可されたセキュリティテスト、防御研究、セキュリティ教育での使用に限ります。**本脆弱性チェーンはベンダーにより修正済みです(7.161.15+ へのアップグレードを推奨)。必ず使い捨ての隔離された実験環境でのみ再現してください。他人のシステムに対して本リポジトリに記載されたいかなる操作を無断で実施することも違法行為であり、それにより生じる一切の結果は操作者自身が負うものとします。
本リポジトリは、edrabb.fr が公開した JFrog Artifactory 事前認証 RCE 脆弱性チェーンの完全な再現成果物です:公式イメージ releases-docker.jfrog.io/jfrog/artifactory-oss:7.146.7(7.146.x 唯一の公式デプロイ形態:外部 PostgreSQL)に基づき 5 ステップの攻撃チェーンを完全自動で再現し、「まっさらな環境から直接 RCE を成立させる」ベースライン実験により再現の真正性を証明しています(詳細は attack-chain-package/baseline/BASELINE-VERIFIED.md を参照)。
| ステップ | 段階 | CVE |
|---|
| Step 1 | 末尾スラッシュ認証バイパス、匿名 JWT(aud=*@*)を取得 | CVE-2026-42018 |
| Step 2 | access + refresh トークンペアを交換 | CVE-2026-42018 |
| Step 3 | Router が jfrt@ サービス ID を発見 → admin JWT リフレッシュを偽造 → 真正な署名済み管理者トークン | CVE-2026-65616 |
| Step 4 | systemUpload で payload.zip をアップロード → system import で展開し悪意ある logback.xml を書き込み | — |
| Step 5 | Logback fileHeader が web.xml / CGI コンポーネントをディスクに書き込み → Tomcat CGI 事前認証 RCE | CVE-2026-65615 |
├── 漏洞攻击链完整报告.md ← 総綱レポート(再現真正性のベースライン検証、原理、公開記事との比較、修正推奨)
├── 复现报告.md ← 744 行の詳細技術再現レポート(ソースコードレベルの原理 + 手動手順)
└── attack-chain-package/
├── README.md ← クイックスタート(ターゲット環境のデプロイ / 攻撃の実行 / 環境の復旧)
├── exploit/
│ ├── exp.py ← フルチェーン自動化 EXP(Python 3 標準ライブラリ、サードパーティ依存ゼロ)
│ └── forge_jwt.py ← Step 3 手動 JWT 偽造スクリプト(exp.py から独立)
├── deploy/system.yaml ← Artifactory 7.146.7 コンテナマウント設定(公式イメージが PostgreSQL を必須とする)
├── baseline/ ← 再現真正性のベースライン検証(まっさらな環境から直接 RCE を成立させた実験記録と設定)
├── payload-sample/ ← オフライン生成の payload コンポーネントサンプル(exp.py --dump-payload の生成物)
└── recovery/ ← 環境復旧と検証スクリプト(インシデント対応の参考)
# 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
攻撃は webapp に対して一度きりの破壊をもたらします:Artifactory 本来の Web 機能は RCE が成立した時点で停止するため、必ず使い捨ての実験コンテナを使用してください。
attack-chain-package/payload-sample/payload.zip(最終アップロード物、インポートで RCE を誘発)は base64 テキスト形式で 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(JFrog のデフォルト初期アカウント;本攻撃チェーンは全行程で事前認証であり、いかなる認証情報も使用しません)