このリポジトリは、CVE-2019-5736 に対する忠実度の高い技術解析と本番環境で使用可能なエクスプロイトスイートを提供します。コンテナ内の root ユーザーが、OverlayFS マウントと ld.so.preload の操作を利用してホストの runc バイナリを上書きし、ホストのルートシェルを取得する方法を実証しています。
= doi.org/10.5281/zenodo.18304765
= orcid.org/0009-0007-7728-256X
高度なパープルチーミング & ホストルートエスケープのフォレンジック分析
このリポジトリには、runc(バージョン1.0-rc1から1.0-rc6まで)の重大な脆弱性である CVE-2019-5736 の高忠実度の分解と概念実証(PoC)が含まれています。このエクスプロイトにより、root権限を持つ悪意のあるコンテナがホストのruncバイナリを上書きし、完全なホストrootアクセス .
脆弱性タイプ: CWE-59 (ファイルアクセス前の不適切なリンク解決).
CVSSv3スコア: 8.6 高.
影響: 隔離されたコンテナ名前空間からホストオペレーティングシステムへの脱出.
このエクスプロイトは、決定論的な多段階実行パスに従います。
名前空間の解放: unshare -rm を使用して新しいマウント名前空間を作成し、最初のコンテナ制限をバイパスします.
ファイルシステムのブリッジング: OverlayFS を利用して、ホストのルートディレクトリ (/) を書き込み可能なコンテナ制御ディレクトリにマウントします .
動的リンカーハイジャック: ホスト上の /etc/ld.so.preload を上書きして、悪意のあるペイロード (/bin/sh -p) をすべての新しいプロセスに注入します .
実行トリガー: 標準のホストバイナリ(例: /usr/bin/ping)を実行してローダーをトリガーし、ホストルートシェル を生成します .
これを管理された環境(Ubuntu 18.04 + Docker 18.09.2)でテストするには:
# [cite_start]Setup vulnerable host [cite: 384-388]
docker run -d --name vuln_host --privileged ubuntu:18.04 sleep infinity
docker exec vuln_host apt update && apt install -y curl git
docker exec vuln_host curl -sSL https://get.docker.com | sh
脆弱な環境内で以下を実行して、ホストrootを獲得します :
chmod +x runc_root_escape.sh
./runc_root_escape.sh
| 対象環境 | ステータス | 影響の可能性
|
| --- | --- | --- | | スタンドアロンDocker | ✅ 脆弱 | ホスト乗っ取り、データ破壊($10M+) | | Kubernetesクラスター | ✅ ピボット準備完了 | クラスター管理者シークレットの窃取($50M+) | | パブリッククラウド (AWS/GCP) | ✅ 脆弱 | IAMロールの窃取、クラウドピボット($100M+) |
ブルーチームのモニタリングでは、次の侵害指標(IoC)に注目してください:
ファイルシステム: /etc/ld.so.preload への予期しない書き込み.
プロセス: コンテナ内での unshare および mount コールの監視 .
履歴: /var/spool/cron/crontabs/root 内の自動永続化を確認する.
この資料は、教育および許可されたセキュリティテストの目的でのみ SASTRA_ADI_WIGUNA [Purple_Elite_Teaming] によって提供されています。この情報の違法行為への使用は固く禁止されています。
Falco/Sysdig検出ルールを統合する.
レッドチーム運用のためのクリーンアップスクリプトを自動化する .
MITRE ATT&CK T1611(ホストへの脱出)に対応付ける.