fbpx

Aquaを使うならこんなふうに 第3回 イメージスキャンについて(2) #aqua #container #security #コンテナ #セキュリティ

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

第3回 イメージスキャンについて(2)

前回はAqua Image Assuranceと、 静的イメージスキャンのスキャン内容と実行タイミングについて説明しました。今回は、静的イメージスキャンの対象について説明します(2020年12月現在の情報です)。

静的イメージスキャンの対象

Aquaはコンテナイメージをスキャンすることで、脆弱性、センシティブデータ、マルウェアを検出します。

Aqua Cybercenterはイメージスキャンで検知する脆弱性、マルウェアなどの脅威情報を共有するハブとして使用します。

コンテナイメージは、OS、OSパッケージ、アプリケーション、設定ファイルなど、複数のレイヤ構造を持ちます。各レイヤはチェックサムで管理され、静的イメージスキャンでレイヤごとにスキャンすることで、同じチェックサムのレイヤのスキャンをスキップできます。

OSパッケージ

AquaはOSベンダーが公開しているセキュリティ勧告から収集した情報に基づき、OSパッケージの脆弱性を特定します。

Aquaは、これらのOSパッケージをサポートしています。

  • Alpine
  • Amazon Linux
  • CentOS
  • Debian
  • Microsoft Windows Server
  • Oracle Linux
  • Red Hat Enterprise Linux
  • SUSE Linux Enterprise
  • Ubuntu

プログラム言語コンポーネント

Aquaは一般的なプログラム言語の脆弱性を保持し、言語コンポーネント(ファイルおよびパッケージ)の脆弱性を検出できます。Aquaは、ファイルシステム内のプログラム言語ファイルをスキャンし、複数のプログラミング言語のオープンソースコンポーネントが使用する特定のパターンを検索します。検索対象は、標準のOSパッケージマネージャでデプロイされていないバイナリも含みます。そして、検索したコンポーネントとファイルシグネチャを抽出し、既知のオープンソースの脆弱性の脅威情報と比較します。

Aquaでは、以下のプログラム言語のコンポーネントに対し、脆弱性スキャンに対応します。

  • Java
  • Node.js
  • PHP
  • Python
  • Ruby

スタンドアローンバイナリ

スタンドアローンバイナリとは、パッケージマネージャを使用せずに直接インストールされたアプリケーションのことです。Aquaでは、Apache httpd、gzip、Java、MongoDB、MySQL、nginx、Node.js、PHP、Postgresql、Python、Redis、Rubyなど500種類以上のバイナリについて脆弱性を検出できます。

コード内のセンシティブデータ

Aquaは、以下のようなセンシティブデータを検出します。

マルウェア検知

Aquaはイメージ内の実行ファイルのみをスキャンし、スキャン対象のファイルのハッシュ値を算出します。これをウィルス対策エンジンに登録されたハッシュ値と比較することで、マルウェアやその他の脅威を検出します。

また、実行ファイルではないELF形式ファイルに対するマルウェア検出もできます。

脆弱性に対する深刻度/スコア割り当て

Aquaは脆弱性に関して、NVD とOSベンダーからセキュリティ評価を取得します。それぞれの脆弱性に対し、深刻度(低い順に、Negligible/Low/Medium/High/Critical)と数値スコア(0.010.0)を割り当てます。深刻度およびスコアは、AquaのImage Assuranceポリシーの評価基準として使用されます。

NVDは、米国機関NISTが運営する脆弱性収集サイトです。NVDはソフトウェアの脆弱性に対して、その深刻度をCVSS v2.0またはCVSS v3.0ベーススコアを数値で割り当てます。

OSベンダーが提供するセキュリティ評価は、そのOSをベースイメージとする場合に使用されます。Aqua5.0以降では、NVDスコアよりOSベンダーの深刻度を優先します。これはOSベンダーによって、脆弱性に対する独自対応をしていることがあるためです。以下のOSベンダーでは、ベンダーが提供するセキュリティ情報を優先します。

  • Arch Linux
  • Debian
  • Red Hat
  • SUSE Linux Enterprise
  • Ubuntu

脆弱性深刻度の割当は、以下の順で行われます。

  1. OSベンダーが深刻度を割り当てている場合
  2. ベンダーがCVSS v3/v2のスコアを割り当てている場合
  3. NVDの脆弱性にのみ検知された場合

aqua_blog03_01

(1)の場合、ベンダー情報に応じてAquaの深刻度(Negligible/Low/Medium/High/Critical)を割り当てます。深刻度が「Imported」の場合、Aquaは深刻度を「High」にします。(2)および(3)の場合、OSベンダーまたはNVDが提供するCVSSスコアにより、NVDの「CVSS v3.0 Ratings」に沿ってAquaの深刻度を割り当てます。

脆弱性スコアの割当も同様に、OSベンダー情報内のCVSSスコアが優先され、次に、NVDのスコアがCVSSスコア割り当てます。

深刻度とスコアで評価するCVSSスコアは、v3もしくはv2のみの場合はスコアをそのまま使用します。CVSSスコアがv3とv2の両方含まれる場合は、Aquaのスキャンオプション「Use CVSS v3 vulnerability scoring (when available)」によって動作が変わります。このオプションを有効にするとv3スコア、無効にするとv2スコアが使用されます。

終わりに

今回は、Aquaの静的イメージスキャンの対象について説明しました。次回は、イメージスキャンのUIについて説明します。次回をお楽しみに。

Aqua に関する最新情報はこちらをご覧ください。

New call-to-action
新規CTA