Docker ソケット攻撃
Docker ソケット攻撃 とは何ですか?
Docker ソケット攻撃/var/run/docker.sock をマウントしたコンテナを悪用して Docker デーモンを操作し、コンテナを脱出してホストの root を奪う攻撃。
Docker ソケット /var/run/docker.sock は Docker デーモンの認証なしコントロールプレーンで、デーモン自体はホスト上で root として動作します。コンテナがこのソケットをマウントしている場合(CI ランナー、監視エージェント、サイドカーでよく行われます)、内部の任意のプロセスがデーモン API を呼び出せます。攻撃者がそのコンテナを侵害すれば、ホストの / を /host にバインドした特権コンテナを新たに起動して、バックドア設置・/etc/shadow 読み取り・ホストのネットワーク名前空間への切り替えなどが可能です。対策は、信頼できないコンテナへ docker.sock をマウントしない、rootless Docker、mTLS を使った TLS 経由のデーモン公開、sysbox や kaniko などの制限付きブローカ利用です。
● 例
- 01
Jenkins エージェントコンテナ(/var/run/docker.sock をマウント済み)を侵害し、--privileged -v /:/host で新しいコンテナを起動する。
- 02
Portainer のコンテナ内の攻撃者が結合された socket を使って root コンテナを列挙・起動する。
● よくある質問
Docker ソケット攻撃 とは何ですか?
/var/run/docker.sock をマウントしたコンテナを悪用して Docker デーモンを操作し、コンテナを脱出してホストの root を奪う攻撃。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
Docker ソケット攻撃 とはどういう意味ですか?
/var/run/docker.sock をマウントしたコンテナを悪用して Docker デーモンを操作し、コンテナを脱出してホストの root を奪う攻撃。
Docker ソケット攻撃 はどのように機能しますか?
Docker ソケット /var/run/docker.sock は Docker デーモンの認証なしコントロールプレーンで、デーモン自体はホスト上で root として動作します。コンテナがこのソケットをマウントしている場合(CI ランナー、監視エージェント、サイドカーでよく行われます)、内部の任意のプロセスがデーモン API を呼び出せます。攻撃者がそのコンテナを侵害すれば、ホストの / を /host にバインドした特権コンテナを新たに起動して、バックドア設置・/etc/shadow 読み取り・ホストのネットワーク名前空間への切り替えなどが可能です。対策は、信頼できないコンテナへ docker.sock をマウントしない、rootless Docker、mTLS を使った TLS 経由のデーモン公開、sysbox や kaniko などの制限付きブローカ利用です。
Docker ソケット攻撃 からどのように防御しますか?
Docker ソケット攻撃 に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
Docker ソケット攻撃 の別名は何ですか?
一般的な別名: docker.sock 脱出。
● 関連用語
- cloud-security№ 211
コンテナエスケープ
コンテナとホスト間の分離境界を破る攻撃で、攻撃者が基盤ノードまたはカーネル上でコードを実行できるようにする。
- cloud-security№ 213
コンテナセキュリティ
コンテナイメージ・レジストリ・オーケストレーター、およびコンテナが実行されるランタイムを保護する一連の実践。
- attacks№ 1116
サプライチェーン攻撃
信頼されたサードパーティのソフトウェア・ハードウェア・サービス提供者を侵害し、その下流顧客に到達する攻撃。
- vulnerabilities№ 860
権限昇格
本来付与された権限を超える権限を攻撃者が取得できる脆弱性の総称。例として一般ユーザーから管理者への昇格がある。