Skip to main content

Dockerの重大な脆弱性トップ5

著者

2022年10月31日

0 分で読めます

Dockerの脆弱性とは?

Dockerの脆弱性とは、イメージ、コンテナ、またはホストに存在し、悪用される可能性のある弱点です。こうした脆弱性が発見され、一般に公開されると、Common Vulnerabilities and Exposures(CVE)リストに追加されます。また、Common Vulnerability Scoring System(CVSS)では、CVEリストに掲載された各脆弱性の深刻度に関する情報が公開されています。

知っておくべきDockerの脆弱性トップ5

開発チームが注意すべき、Dockerの主な脆弱性またはCVEを5つご紹介します。

1. CVE-2019-5736: RUNCコンテナ脱出の脆弱性

ホスト上の`runc`バイナリを上書きし、ホストのroot権限を取得できてしまうDockerの脆弱性があります。悪意のある攻撃者がroot権限を取得すると、権限を昇格させ、壊滅的な攻撃を仕掛ける可能性があります。Oracle Linux 8上で稼働するDockerインスタンスでは、`container-common`をアップグレードすることでCVE-2019-5736を修正できます。

2. CVE-2022-0847: DIRTY PIPE

初期化の不備に起因するもう一つの脆弱性が、CVE-2022-0847です。セキュリティコミュニティで「Dirty Pipe」と名付けられたこのカーネルのパイプライン実装の欠陥により、悪意のある攻撃者は、本来変更する権限のないファイルの内容を変更し、権限を昇格させることができます。この問題を修正するには、すべてのLinuxホストをパッチ適用済みのバージョンにアップグレードする必要があります。

3. CVE-2021-21285: 制御されないリソース消費

古いバージョンのDockerには、不正な形式のDockerイメージマニフェストをプルすると、ホストシステム上で稼働するDockerデーモンがクラッシュする脆弱性があります。CVE-2021-21285は、パッチ適用済みのDockerにアップグレードすることで修正でき、制御されないリソース消費によるデーモンのクラッシュを防止できます。

4. CVE-2014-9356: ディレクトリトラバーサル

CVE-2015-9356は、Dockerバージョン1.3.3に影響するディレクトリトラバーサルの脆弱性です。ディレクトリトラバーサル(パストラバーサル)攻撃とは、第三者がアクセスすべきでないファイルにアクセスする手法です。対象となるファイルには、アプリケーションコードや機密情報が含まれている可能性があります。パッチ適用済みのDockerにアップグレードすれば、リモート攻撃者がパストラバーサルの脆弱性を悪用してコンテナの保護機構を回避するのを防げます。

5. CVE-2019-14271: 初期化の不備

一部のDockerバージョンでは、コンテナの内容を含む`chroot`(ルートディレクトリの変更)操作中に、`nsswitch`(ネームサービススイッチ)がライブラリを動的に読み込む際、コードインジェクションが発生する可能性があります。コードインジェクション攻撃では、アプリケーションに悪意のある攻撃者の不正なコードを実行させます。Oracle Linux 7上で稼働するDockerインスタンスでは、Docker CLIをアップグレードすることでCVE-2019-14271を修正できます。

その他のDockerの脆弱性について詳しくは、Open Web Application Security Project(OWASP)が公開している Docker Top 10 脆弱性リストをご覧ください。

Dockerの脆弱性を減らすためのベストプラクティス

コンテナセキュリティは幅広いテーマですが、Dockerの脆弱性を大幅に減らすために実践できるベストプラクティスがいくつかあります。たとえば、自動化ツールを活用してコンテナイメージ、コンテナ内のすべての要素、そしてコンテナのデプロイ先となるランタイム環境を保護することは、コンテナセキュリティの強化に効果的です。Dockerセキュリティについて詳しくはこちらをご覧ください。

コンテナスキャンは、コンテナ化されたアプリケーションやワークロードのさまざまなコンポーネントに含まれる脆弱性を自動で検出する手法です。対象には、コンテナ内のソフトウェア、コンテナとホストシステムや他のコンテナとの相互作用、ネットワークやストレージの設定などが含まれます。

多くのコンテナスキャンツールは、公開されたセキュリティ脆弱性に関する信頼できる情報源として、脆弱性データベースを利用しています。たとえば、Snykの脆弱性データベースは、CVEリストをはじめとする公開脆弱性情報に、実用的なインサイトを加えて提供します。Dockerの各CVEに関する情報を充実させることで、Snykの脆弱性データベースは開発者がDockerのセキュリティ問題をより簡単に修正できるよう支援します。

コンテナスキャンに加えて、コンテナモニタリングでは、コンテナ化されたアプリケーションやワークロードの健全性に関する指標を追跡し、稼働中のワークロードに新たに発見された脆弱性が存在するリスクも監視します。これにより、すべてが適切に動作していることを確認でき、制御されないリソース消費などの潜在的な脆弱性の発見にもつながります。コンテナスキャンとコンテナモニタリングのツールは相互に補完し、ビルド時からその後まで保護します。

Dockerセキュリティのベストプラクティスを詳しくまとめた チートシート をご覧ください。

SnykによるDockerセキュリティスキャン

Snykは、ソースコードやオープンソースの依存関係から、コンテナやInfrastructure as Codeの設定まで、最新のアプリケーションを構成するあらゆる要素を包括的にスキャンし、脆弱性を検出します。つまり、Dockerコンテナイメージとその内部のコードや依存関係、さらにデプロイに使用する設定も保護できます。

Dockerの普及に伴い、SnykとDockerのパートナーシップも拡大しており、これはSnykのDocker脆弱性スキャン機能にも反映されています。実際、Docker Desktop CLIの`docker scan`コマンドはSnykプラットフォームを利用しています。SnykとDockerを組み合わせることで、開発チームはコンテナを迅速かつ安全にビルド、デプロイできます。

Dockerとコンテナセキュリティについては、Dockerと共同制作したコンテナイメージを保護する3つのステップもご覧ください。

Dockerの脆弱性に関するよくある質問

Dockerは安全なプラットフォームですか?

Dockerプラットフォーム自体に、本質的な安全性や危険性があるわけではありません。コンテナはホスト上の他のプロセスから分離される場合がありますが、コンテナからの脱出やその他の脆弱性を防ぐには、追加のセキュリティ対策が欠かせません。コンテナの構築とデプロイに効果的なコンテナセキュリティ戦略を取り入れることで、脆弱性、ひいては攻撃のリスクを軽減できます。他のテクノロジープラットフォームと同様に、潜在的な脅威を軽減するには、セキュリティのベストプラクティスに従うことが重要です。

Dockerイメージは暗号化されていますか?

Dockerイメージはデフォルトでは暗号化されていませんが、デジタル署名を利用してイメージの完全性を確保できます。イメージの公開者は、レジストリにイメージをプッシュする際にDocker Notaryツールを使って署名できます。Docker Content Trustを使って署名を検証することで、開発者はイメージレジストリからプルまたはデプロイするイメージがオリジナルであり、悪意のある第三者によって改ざんされていないことを確認できます。

「コンテナブレイクアウト」とは何ですか?

コンテナブレイクアウトとは、悪意のある攻撃者がコンテナの分離を突破して、ホストのリソースにアクセスできる状態を指します。攻撃者はホスト上でroot権限を取得すると、さらに権限を昇格し、追加の攻撃を仕掛ける可能性があります。Dockerセキュリティスキャンツールを使えば、コンテナブレイクアウトの脆弱性などを検出できるため、開発者は悪用される前に修正できます。

続きを読む

feature customer snowflake
Article

開発初期からセキュリティを確保:Snowflake Cortex Code向けSnyk Studioインテグレーションを発表

Snyk StudioがSnowflake Cortex Codeと連携し、開発中にAI生成コード、依存関係、コンテナの脆弱性をスキャンします。

blog feature pypi spoof
Article

オープンソースのメンテナーに、Snyk AI Security Platformをすべて無料で提供

オープンソースのメンテナーは、実際の脆弱性レポートに追われ、優先順位付けや修正、修正版のリリースを迅速に進めるための支援を必要としています。SnykのSecure Developer Programでは、条件を満たすプロジェクトにSnyk AI Security Platformを無料で提供します。

feature insights announcement
Blog

Node-gypサプライチェーン侵害:binding.gypに潜む自己増殖型npmワーム

新たなnpmワームがbinding.gypを悪用し、インストール時にnode-gypを起動。ライフサイクルスクリプトを使わずに悪意あるパッケージからコードを実行します。認証情報を窃取し、GitHub上に潜伏し、メンテナー間で自己増殖します。