私は今日、Dockerとシステムのセキュリティについて話し合うことになり、最新の CVE-2016-0728 エクスプロイト(特権の昇格)がDockerコンテナーにも影響を与えることを自問するようになりました。
Dockerはシステムカーネル(脆弱である可能性があります)を利用しますが、ユーザー(ユーザー自身の小さなスペース内のroot)を隔離します。私の質問は次のとおりです。
これは、コードがより高い特権ユーザーとして「のみ」実行される特権昇格ではありません。この問題は、Linuxカーネル内のコードの実行に関するものです。つまり、すべてのdockerインスタンスと、dockerインスタンスを含むOSの間で共有されるカーネルです。これは、取得できる最高の特権であり、このレベルでは、あらゆる種類の制限を回避できます。これは、この攻撃を実行できる特権のないユーザーがコンテナから抜け出す可能性があることを意味します。
まず第一に、はい。カーネルがキーリングをサポートしている場合、dockerはその使用を防止しません。つまり、悪用を防止しません。
しかし、Dockerコンテナがnotセキュリティコンテナであることは注目に値します。それらはある程度のセキュリティを提供できますが、実際には提供しますが、それは目的ではなく、悪意のあるコードの仮想化と互換性のない設計決定が行われました。分離はその上のレイヤーで発生する必要があります。
Docker 1.10以降では、keyctlシステムコールがデフォルトのseccompフィルターによってブロックされるため、これはデフォルトのインストールでは機能しないという答えがあります。