
CVE-2021-41091 用の POC
このエクスプロイトは、CVE-2021-41091 のセキュリティ脆弱性について詳しく解説し、エクスプロイトスクリプトを利用してホスト上で権限昇格を達成するための手順を段階的に説明します。
CVE-2021-41091 は Moby(Docker Engine)の欠陥で、権限の制限が適切でないため、特権のない Linux ユーザーがデータディレクトリ(通常は /var/lib/docker)内を移動し、プログラムを実行できるようになります。この脆弱性は、コンテナ内に setuid などの拡張された権限を持つ実行可能プログラムが存在する場合に発生します。特権のない Linux ユーザーは、そのようなプログラムを発見して実行できるだけでなく、ホスト上のユーザーの UID がコンテナ内のファイル所有者またはグループと一致する場合には、ファイルを変更することもできます。
overlay ファイルシステムは、この脆弱性を悪用する上で重要な構成要素です。Docker の overlay ファイルシステムにより、コンテナのファイルシステムをホストのファイルシステムの上に階層化できるため、ホストシステムはコンテナ内のファイルにアクセスして操作できます。CVE-2021-41091 の場合、/var/lib/docker/overlay2 内のディレクトリ権限が過度に緩いため、特権のないユーザーがコンテナ内のプログラムにアクセスして実行でき、権限昇格攻撃につながる可能性があります。
自分のマシンでホストされている Docker コンテナに接続し、root アクセスを取得します。
コンテナ内で、次のコマンドを実行して /bin/bash に setuid ビットを設定します: chmod u+s /bin/bash
ホストシステム上で、リポジトリをクローンし、次のようにスクリプトを実行して、提供されたエクスプロイトスクリプト(poc.sh)を実行します:
git clone https://github.com/UncleJ4ck/CVE-2021-41091
cd CVE-2021-41091
chmod +x ./poc.sh
./poc.sh
docker engine バージョン 20.10.5+dfsg1 でテスト済み
この脆弱性に対処するには、Docker をバージョン 20.10.9 以降に更新することが重要です。