コンテナ脆弱性スキャンを使えば、すべてのコンテナに潜む可能性のあるセキュリティ脆弱性を俯瞰的に把握できます。スキャンで検出されたセキュリティ上の問題をデプロイ前に特定して修正できるよう、個々のコンテナイメージに対するプロセスを自動化することも可能です。
アプリケーションのコンテナ化により、開発者はシステム互換性を気にすることなく、さまざまな環境でスムーズに動作する、プラットフォームに依存しないポータブルなアプリを構築できるようになりました。しかし、ほかのアプリ開発手法と同様に、悪意のある攻撃者は脆弱性を悪用して機密情報にアクセスしたり、破壊したりする可能性があります。
コンテナ脆弱性スキャンの仕組み
コンテナ内部のセキュリティ脆弱性のスキャンは、コンテナイメージングソフトウェアに対応したスキャンツールを使って、手動または自動で実行できます。一般に、脆弱性スキャンとセキュリティスキャンは、アプリケーション開発中のさまざまな段階で定期的に実施し、デプロイ前にすべての更新を確認する必要があります。
脆弱性スキャンのプロセスでは、イメージのコンポーネントを繰り返し分析し、冗長性やセキュリティ上の欠落、ユーザーによる不正利用の可能性を探します。
スキャンツールの中には、脆弱性を親イメージまでたどり、新しいコンテンツとの相互作用を調べられるものもあります。しかし、コンテナ技術はまだ比較的新しいため、スキャン時に何がセキュリティ脆弱性に当たるのかを特定するのは容易ではありません。スキャンソフトウェアを常に最新バージョンにして定期的にスキャンを実施すれば、時間が経過した後でも最新の脆弱性を検出できます。
コンテナ脆弱性スキャンの3つのステップ
コンテナのセキュリティと現在存在する脆弱性を管理する場合、スキャンをゼロから実行する方法はいくつもあります。
1. アプリケーションコードのセキュリティ確保
アプリケーションの開発環境とコードは、開発者が完全に管理できるコンテナイメージの数少ない構成要素の1つです。最初のステップではあるものの、コンテナのコードと関連するすべての依存関係の動作をスキャンして追跡するには、特に手動で行う場合、かなりの時間と労力が必要です。
コンテナ化、統合、デプロイの各プロセスに入る前の開発初期段階で、コード内のエラーを早期に見つけることに重点を置きます。初回のスキャンは、コードをコンテナに格納する前でも後でも実行できます。
2. コンテナイメージのスキャン
特に数百万人のユーザーを抱えるDocker Hubなどでは、認証済みパブリッシャーがアップロードした信頼できるイメージが無数にあるため、イメージの利用は容易になっています。
まずコンテナイメージをスキャンし、品質のばらつきを示す可能性のあるデジタル署名を確認します。次のステップに進む前に、イメージのサイズに応じて脆弱性の数と集中度を抑えます。
3. 接続レイヤーのスキャン
コンテナの中間レイヤーは、ベースコンテナイメージとアプリケーションコードを接続するもので、レイヤーの大部分を構成するため、コンテナ内の脆弱性の多くが含まれる傾向があります。中間レイヤーの数を減らしてイメージをカスタマイズすると、手動・自動を問わずスキャンプロセスを簡略化できます。
コンテナスキャンで検出される4つの一般的な脆弱性
コンテナ技術が進化し続けるのに伴い、検出される可能性のある脆弱性の数や種類も変化するでしょう。
コンテナイメージの脆弱性スキャンを実施すると、次のような脆弱性を検出する可能性があります。
1. イメージベースの脆弱性
コンテナイメージは、不変であるように設計された実行可能コードの静的ファイルです。コンテナとコンピューティングシステムの構成要素であり、毎回信頼性の高いデプロイを実現します。
コンテナイメージの不変性は、古いコードやビルドに起因する脆弱性を生む可能性があります。コンテナイメージの弱点を悪用すれば、コンテナにアクセスしてクリプトジャッキング攻撃や権限昇格攻撃を仕掛けることができます。
2. クリプトジャッキング
クリプトジャッキングは、コンテナに悪意のあるスクリプトを実行させ、暗号資産をマイニングするサイバー犯罪の一種です。この脆弱性により、ハッカーはインフラのCPUやGPUリソースにリモートアクセスし、マシンのroot権限を取得できます。
リソースの悪用だけで終わるわけではありません。同じ侵入口を使って、コンテナ内で使用・保存されている機密認証情報に悪意を持ってアクセスすることもできます。その結果、大規模かつ高精度なフィッシング攻撃から、直接的なサービス拒否(DoS)攻撃まで、さまざまな被害につながる可能性があります。
3. 権限昇格
権限昇格とは、最初のコンテナイメージへのアクセスを得たハッカーが、隣接するコンテナやホストシステムにアクセスできるようになる脆弱性です。Linuxカーネルの欠陥からコンテナの実行環境の脆弱性まで、複数の脆弱性を悪用してアクセス権限を拡大できます。
多くの場合、コンテナで古いカーネルやシステム設定を使用しないようにすることで、この種の攻撃を軽減できます。
4. アプリケーションの脆弱性
コンテナの脆弱性は、コンテナに搭載されるアプリケーションにも存在する可能性があります。アプリケーション開発の初期段階で欠陥や古いセキュリティ手法が使われていると、攻撃者に悪用されるおそれがあります。
アプリケーションの脆弱性には、SQLインジェクションを許す保護の不十分なデータ入力ポイントから、ハッカーが任意のコードを実行しようとした際にコンテナ間の緩衝領域が不足しているケースまで、さまざまなものがあります。
Dockerコンテナの脆弱性をスキャンする
Dockerは現在も最も利用され、支持されているコンテナ化アプリケーションツールであり、オープンソースとプロプライエタリの両方の脆弱性対策ツールが、最適かつ正確なスキャン結果の提供に対応しています。Dockerコンテナの脆弱性をスキャンすれば、コンテナイメージ全体を調べ、問題や脆弱性の有無を確認できます。
コンテナ脆弱性スキャンのツールや手法には、次のように複数の種類があります。
ユーザー定義の脆弱性スキャンポリシー
コンテナにおけるユーザー定義ポリシーとは、コンテナの集合内にある個々のコンテナへのデータ入力に関するユーザーの権限を統制・管理する、アクセスおよび権限の制御ポリシーです。
ユーザー定義ポリシーを通じて脆弱性をスキャンすれば、アクティビティに基づいてセキュリティポリシーをカスタマイズし、権限昇格のリスクや内部不正、ユーザーによる脆弱性の悪用を抑えられます。
アイデンティティアクセスの脆弱性スキャン
アイデンティティアクセス管理とは、ユーザーのIDを監督・認証し、コンテナやイメージへのアクセスを管理するフレームワークです。
コンテナのアイデンティティアクセスに基づいてスキャンすることで、個々のコンテナがインフラ全体のリソースに完全にアクセスするのを防げます。
ネットワーク構成の脆弱性スキャン
コンテナは単独で動作することはほとんどなく、通信構成やルールが不可欠なコンテナネットワーク内で動作します。この種の脆弱性スキャンでは、イメージのポートと関連するネットワーク通信を調べ、問題や不整合を探します。
コンテナ脆弱性スキャンツールのベスト3
手動で使えるコンテナ脆弱性スキャンツールを探している場合でも、すぐに使える自動ソリューションを求めている場合でも、コンテナ化技術の普及に伴い、さまざまなツールが利用できます。
実際、世界のコンテナセキュリティ市場は2021年に13億米ドルと推定されました。分析期間中の年平均成長率(CAGR)22%で成長し、2026年には推定36億米ドルに達すると予想されています。
市場をリードするコンテナ脆弱性スキャンソリューションには、次のようなものがあります。
1. Anchore
Anchoreは、Dockerイメージを詳細に分析するオープンソースツールです。分析エンジンは、スキャン対象のコンテナの種類に応じて、Kubernetes、Rancher、Amazon ECS、Docker Swarm上で動作します。
コンテナインスペクターとして、Anchoreプラットフォームではコンテナを分析・検査し、セキュリティスキャンを実行できます。結果は、あらかじめ設定したセキュリティポリシーや標準と比較されます。
2. Dagda
Dagdaは、パフォーマンスの分析や、マルウェア、ウイルス、トロイの木馬などの脅威の検出に利用できる、オープンソースのコンテナ脆弱性スキャンツールです。セキュリティ対策として、ウイルスに関する脆弱性の検出にClamAVアンチウイルスエンジンを使用します。
Dagdaは、セキュリティ脆弱性の検出・特定に対応する複数の静的解析手法をサポートしています。また、コンテナの状態に関する包括的なレポートも提供します。
3. Snyk
Snyk.ioは、同名のボストン拠点のサイバーセキュリティ企業が提供する、コンテナ脆弱性スキャン・分析ツールです。プロジェクトの設定と更新のデプロイ頻度に応じて、コンテナイメージのスキャンを自動化します。
さらに、コンテナ、オペレーティングシステム、アプリケーションの依存関係で過去に検出された脆弱性の履歴に基づき、Snykはコンテナのセキュリティ状態に関するレポートをメールで送信します。
まとめ:コンテナ脆弱性スキャン
コンテナ脆弱性スキャンは、コンテナ化アプリケーションの構築とデプロイに欠かせない要素です。自動・手動を問わずスキャンツールを使えば、コンテナ化アーキテクチャのさまざまな部分に存在する脆弱性や問題を、デプロイしたり大規模利用向けにリリースしたりする前に検出・修正できます。
スキャン中に見つかる可能性のある脆弱性にはさまざまな種類がありますが、専用の脆弱性スキャンツールを使えば、高度なセキュリティ、分析、レポート機能によってプロセスを簡略化できます。
詳しく読む:脆弱性スキャンツールの8つの種類を解説