私はハッカーリポジトリから新しいイメージを引っ張って、ドッカーファイルの内容を見ずにそれを実行するとします。コンテナや画像がホストに何らかの形で影響を与える可能性はありますか?Docker Host Security - コンテナは危険なコードを実行したり、コンテナの内部からホストを変更できますか?
私のサーバー上でユーザーが入力したイメージ名からイメージのリストを実行しているのでお知らせください。私はそれがサーバー/ホストに影響するかどうか心配です。
私はハッカーリポジトリから新しいイメージを引っ張って、ドッカーファイルの内容を見ずにそれを実行するとします。コンテナや画像がホストに何らかの形で影響を与える可能性はありますか?Docker Host Security - コンテナは危険なコードを実行したり、コンテナの内部からホストを変更できますか?
私のサーバー上でユーザーが入力したイメージ名からイメージのリストを実行しているのでお知らせください。私はそれがサーバー/ホストに影響するかどうか心配です。
イメージのデフォルト実行では、答えは条件付きのいいえです。カーネルの機能は限られており、ファイルシステムは制限されており、プロセス空間は分離されており、ホストとは別のブリッジネットワーク上にあります。ホストへのアクセスを許可するものはすべて、セキュリティ上の脆弱性となります。
条件付きの部分は、すべてのCPUサイクルを使い果たし、メモリを使い果たし、ドライブをいっぱいにし、マシンのNATからIPアドレスにネットワークトラフィックを送信できるということです。言い換えれば、デフォルトでは、コンテナがホスト上のDoS攻撃を妨げることはありません。
Dockerには、メモリのキャッピング、CPUの優先順位付けの制限、プロセスの優先順位付けなど、多くの制限があります。ファイルシステムに対するクォータソリューションもあります。
また、ホストをコンテナに公開して、セキュリティの脆弱性を効果的に作り出すこともできます。これには、ホストボリューム、特にコンテナ内のdocker.sockをマウントし、カーネル機能の制限を--privileged
で削除し、ネットワーク分離を--net=host
で削除することが含まれます。コンテナでこれらのいずれかを実行すると、デフォルトでDockerが提供する保護が無効になります。
Dockerは、カーネルをホストと共有する方法により、仮想マシンよりも分離レベルが低くなります。したがって、実行しているコードにカーネルまたは物理的なハードウェアが含まれていると、それがホストにアクセスする可能性があります。このため、信頼できないコードを実行している場合は、軽量コンテナベースのオペレーティングシステムを使用してVM内で実行するlinuxkitを調べるとよいでしょう。これはwindows/mac用のdocker上でhyperv/xhyveの下で動作するmobyを提供するために使用されます。
可能性のあるカーネルエクスプロイトから身を守るためにも、https://docs.docker.com/engine/security/security/#/other-kernel-security-featuresをご覧ください。 – Ohmen