Docker release_agent cgroups escape
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
詳細については、 元のブログ投稿を参照してください。 これは要約です:
Original PoC:
The proof of concept (PoC) demonstrates a method to exploit cgroups by creating a release_agent
file and triggering its invocation to execute arbitrary commands on the container host. Here's a breakdown of the steps involved:
環境の準備:
/tmp/cgrp
というディレクトリが作成され、cgroupのマウントポイントとして使用されます。
RDMA cgroupコントローラーがこのディレクトリにマウントされます。RDMAコントローラーが存在しない場合は、代わりにmemory
cgroupコントローラーを使用することが推奨されます。
子Cgroupを設定する:
マウントされたCgroupディレクトリ内に「x」という名前の子Cgroupが作成されます。
「x」Cgroupのnotify_on_releaseファイルに1を書き込むことで通知が有効になります。
リリースエージェントの設定:
ホスト上のコンテナのパスは /etc/mtab ファイルから取得されます。
次に、cgroup の release_agent ファイルが取得したホストパスにある /cmd という名前のスクリプトを実行するように設定されます。
/cmd スクリプトの作成と設定:
/cmd スクリプトはコンテナ内に作成され、ps aux を実行するように設定され、出力はコンテナ内の /output というファイルにリダイレクトされます。ホスト上の /output の完全なパスが指定されます。
攻撃をトリガーする:
"x" 子 cgroup 内でプロセスが開始され、すぐに終了します。
これにより release_agent
(/cmd スクリプト)がトリガーされ、ホスト上で ps aux を実行し、その出力をコンテナ内の /output に書き込みます。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)