Dockerセキュリティアップデート: 権限昇格の脆弱性(CVE-2018-5736)の修正と、コンテナセキュリティのベストプラクティス #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
去る2019年2月11日月曜日、Docker社は、Docker Engineとcontainerdで使われている、Open Container Initiative (OCI)のランタイム仕様であるrunCにおける、権限昇格の脆弱性 (CVE-2019-5736)を修正するための更新をリリースしました。この脆弱性は、ホスト上で管理権限を得るために特別な細工をしたコンテナイメージを作成するという悪意のある動作を許してしまうものです。Dockerのエンジニアチームは、OCIのrunCメンテナたちと協力し、この脆弱性に対するパッチを発行しました。
あらゆる潜在的なセキュリティ脅威を防ぐために、今すぐこの更新を適用してください。コミュニティ版Docker Engine (docker-ce)は、18.09.2 または 18.06.2.に更新してください。エンタープライズ版Docker Engine (docker-ee)は、18.09.2, 18.03.1-ee-6, または 17.06.2-ee-19に更新してください。Ubuntu および RHEL OS向けには特定の指示があるため、更新適用前に必ず リリースノートをお読みください。
脆弱性に対処したDocker Engineバージョンのまとめ:
コミュニティ版Docker Engine (docker-ce) | エンタープライズ版Docker Engine (docker-ee) |
---|---|
18.09.2 | 18.09.2 |
18.06.2 | 18.03.1-ee-6 |
17.06.2-ee-19 |
(※2019/2/19 12:15 訂正: 公開当初「脆弱性のあるバージョン」としておりました。訂正しておわびいたします)
Docker Engineが実行するコンテナイメージをより安全に保護するために次の方法をお勧めします。またそれらのベストプラクティスをご紹介します。
Docker社の公式イメージを使用する
公式イメージは、Docker Hubがホストする厳選されたDockerリポジトリ群であり、その目的は次のものです:
- 大多数のユーザのスタートポイントとしての役割を果たす、必要不可欠なベースOSリポジトリ(例えばubuntu, centosなど)を提供するため。
- 一般的なプログラミング言語ランタイムや、データストア、その他のサービスに対するドロップインソリューションを提供するため。
- Dockerfileのベストプラクティスの好例を示すため。また、他のDockerfile作成者のために、レファレンスの役割を果たす確実なドキュメントを提供するため。今回の脆弱性特有のケースとして、Dockerfile内のUSERセクションで特権を与えられていないユーザとしてコンテナを実行し、このような問題への対処に備えるため。
- セキュリティアップデートは適時、実行する。セキュリティアップデートは即座に実行してください。それに伴い、ご自身のイメージを再構築し公開し直してください。多くの公式イメージはDocker Hubにおいてもっとも広く使われているため、このことは特に重要です。
Docker社は、公式イメージのレビューおよび公開において責任ある役割を果たしている献身的なチームを後援しています。このチームは、上流のソフトウェアのメンテナやセキュリティの専門家、また幅広いDockerコミュニティと協力し、公式イメージの安全性を担保しています。
Docker社認定のコンテナを使用する
Docker EEコンテナプラットフォームによって、あなたのイメージの整合性を保つことができます。セキュリティとは、静的で一度で完結するものではなく、アプリケーションのパイプラインにおける多くのステージにわたってアプリケーションを保護し続ける継続的なプロセスです。システムへの侵害を防ぐため、Docker EEはサプライチェーン全体に対して、総合的なセキュリティを提供しています。セキュリティのベストプラクティスに従い、Docker社の認定済みイメージを実行すれば、Docker EEユーザはソフトウェアイメージを次の状態に保つことができます:
- Docker Enterpriseコンテナプラットフォームで承認を受けたソフトウェア提供会社によってテストおよびサポートされている状態。
- Dockerfileやイメージのビルドに際し、Dockerのコンテナベストプラクティスに忠実に従っている状態。
- 機能的なAPIテストスイートをパスした状態。
- 脆弱性スキャンによる評価を完了している状態。
Docker社による認定は、ユーザや企業が、信頼できる方法でより多くのテクノロジーをコンテナで実行するための指針となります。さらにそれらはDocker社とソフトウェア提供会社の両者からサポートを受けることができます。ユーザは、Docker社による認証を受けているコンテンツであるか否かを認証バッジによって素早く判断することができます。認証を受けているコンテンツは、Docker EEで円滑に実行するために、ベストプラクティスに沿って作られたものです。
さらなるセキュリティ強化のために、Docker EEの機能を活用する
Docker EEは、コンテンツの検証とランタイムアプリケーションセキュリティを通して、ソフトウェアサプライチェーン全体に更なる保護を提供しています。例えば、組織内で、どのユーザがコンテナを実行できるかを特定するために、複数のチームにわたる、柔軟で粒度高いアクセス権限を設定するなどのロールベースのアクセス制御 (RBAC) などもこれに含みます。管理者はまた、いかなるユーザもクラスタ上で特権コンテナを実行することを制限するポリシーを設定することもできます。
さらに、Dockerコンテントトラストによって暗号化による電子署名でコンテナイメージの来歴と認証を確認することが可能です。実際の運用としては、運用チームにアプリケーション作成者の詳細情報と、当該アプリケーションが改ざんされていないことの確認を提供します。ランタイムにおけるポリシーの強化によって、Docker EEは信頼のおけるチームが署名したコンテナイメージのみがクラスタ内で実行できるよう保証しています。
もっと知りたい方は
- エンタープライズ版Docker Engineのアップグレード方法について
- コミュニティ版Docker Engine (docker-ce)のアップグレード方法について
- Docker EEについて
- Dockerのセキュリティについて
原文: Docker Security Update: CVE-2018-5736 and Container Security Best Practices