Amazon Inspector と FutureVuls で実現する EC2 のエージェントレス脆弱性スキャン:ハンズオンガイド

title

みなさん、AWS の脆弱性検出サービス Amazon Inspector は利用していますか?
Amazon Inspector は AWS 上で動作しているソフトウェアの脆弱性を継続的にスキャンするサービスです。

2024年5月現在、Amazon Inspector では EC2 インスタンス、ECR のコンテナイメージ、および Lambda 関数がスキャン対象となっています。FutureVuls では AWS 連携 の機能を用いて、Amazon Inspector のスキャン結果を FutureVuls に取り込むことにすでに対応しています。

本記事のサマリ: Amazon Inspector エージェントレススキャンと FutureVuls 連携

Amazon Inspector は 2023 年 11 月から、SSM エージェントなしで EC2 インスタンスをスキャンできるようになりました。2024 年 4 月 22 日からはハイブリッドスキャンモード(エージェントレススキャンモード)が GA となり、東京リージョンや大阪リージョンでも利用可能となりました。

本記事では、Amazon Inspector のエージェントレススキャンを用いることで、EC2 上に SSM エージェントや Vuls スキャナをインストールすることなく脆弱性を検知し、その検知結果を FutureVuls に取り込む方法までをハンズオン形式でご紹介します。

※本記事内で紹介している Amazon Inspector の詳細仕様は AWS のドキュメント に掲載されている情報をベースにしています。

title

Inspector エージェントレススキャンの仕組み: EC2 インスタンスの脆弱性評価

エージェントレススキャンでは、EC2 インスタンスの EBS スナップショットを参照してソフトウェア情報を収集し、脆弱性検知を行います。以下は具体的な評価プロセスです。

  1. Amazon Inspector が 24 時間に 1 回、インスタンスにアタッチされた全ての EBS ボリュームのスナップショットをアカウント内に作成します。
  2. 作成したスナップショットから、EBS ダイレクト API を使用してソフトウェアの情報を取得し、脆弱性が存在するかを評価します。
  3. 脆弱性スキャン完了後、Amazon Inspector がアカウント内に作成した EBS スナップショットを削除します。

Amazon Inspector が日次でスナップショットの作成から削除まで自動で実施してくれるので、一度設定すればユーザが特段手を動かす必要はありません。

ハンズオン: Amazon Inspector のエージェントレススキャンを設定し FutureVuls に連携する

ここからは AWS 上で Inspector のエージェントレススキャンを実施し、そのスキャン結果を FutureVuls に取り込むまでのハンズオンを実施します。

1. Amazon Inspector の有効化手順

  1. Amazon Inspector のコンソールを開きます。
  2. Inspector > 設定 > アカウント管理から、Amazon EC2 スキャンをアクティブ化します。
  3. Inspector > 全般設定 > EC2 scanning settings から、スキャンモードをハイブリッドモードにします。

ec2_scanning_settings

ハイブリッドモードを選択することで、SSM で管理されているインスタンスはエージェントベースでのスキャン、SSM で管理されていないインスタンスはエージェントレススキャンが適用されます。

2. Amazon Inspector のスキャン結果を確認する方法

Inspector > Resources coverage > EC2 instances から、スキャンされたインスタンスの一覧を確認できます。エージェントレススキャンの場合、Monitored using の列が Agentless に設定されます。また、テーブルの EC2 インスタンス ID を選択することで対象インスタンスのスキャン結果を確認可能です。

resources_coverage

エージェントレススキャンは以下の条件を満たすインスタンスを対象としています。スキャン結果が表示されない場合は、以下の条件を満たしているか確認してください。

  • Amazon Inspector がサポートする OS がインスタンスに備わっていること(詳細はこちらの「エージェントレススキャンのサポート」列をご確認ください)
  • インスタンスが実行中であること
  • Amazon Inspector のスキャン除外対象となるタグをインスタンスに付与していないこと(詳細はこちら
  • インスタンスのステータスが Unmanaged EC2 instance、Stale inventory、 No inventory のいずれかであること
  • インスタンスのルートデバイスタイプが EBS であり、ファイルシステムが ext3、ext4、xfs のいずれかであること

また、Amazon Inspector は 1 時間に 1 回、エージェントレススキャンの対象となる新規インスタンスが存在するかを確認します。そのため、初回のスキャン結果は 1 時間ほど待機しないと表示されない場合があります(こちらに気づかず悩みました)。

3. FutureVuls にインスタンスを登録する手順

脆弱性が Amazon Inspector 上で検出されたら、FutureVuls 上でインスタンスを登録します(詳細はヘルプページをご参照ください)。

create-instance

4. FutureVuls スキャンを実行して Amazon Inspector の結果を取り込む

インスタンスの登録が完了したら、サーバの詳細タブにある「手動スキャン」ボタンを押してスキャンを実行します。すると、Amazon Inspector のスキャン結果から脆弱性が取り込まれ、FutureVuls 上でタスクが作成されます。さらに FutureVuls の 「自動トリアージ機能」 により、リスクベースの優先順位判断や、担当者への対応指示が自動で行われます。

resources_coverage

注意点: Inspector エージェントレススキャンと Inspector エージェントベースのスキャンの違い

Amazon Inspector のエージェントベースのスキャンでは、新しい CVE 情報が登録された場合や、EC2 インスタンス上でソフトウェアが新たにダウンロードされたタイミングで自動的にスキャンを実施します。一方、エージェントレススキャンでは基本的に 24 時間に 1 回の定期的なスキャンのみとなり、タイムリーなスキャンは実施できません。そのため、タイムリーな検知を重視する場合は、EC2 インスタンスを SSM で管理するエージェントスキャンの利用をおすすめします。

スキャン方式 メリット デメリット
エージェントレス SSM エージェントが必要ない スキャンのタイミングが 24 時間に一度
エージェントベース スキャンがタイムリー SSM エージェントが必要

注意点: Inspector エージェントレススキャンと Vuls のスキャン、ペーストスキャンとの違い

Vuls スキャナにも EC2 上にスキャナを配置しない方式である「リモートスキャン」や、インターネットから隔離された閉域網な環境でも脆弱性管理可能な「ペーストスキャン」という 2 つの方式を用意しています。Inspector エージェントレススキャンとの違いを以下の表にまとめました。

スキャン方式 メリット デメリット
Inspector エージェントレス エージェントが必要ない スキャンのタイミングが 24 時間に一度
Vuls ローカルスキャン Pkg や依存ライブラリ、プロセス情報、ポート Open など取得できる情報が豊富 EC2 に Vuls スキャナの配置が必要
Vuls リモートスキャン 同上 EC2 にスキャナの配置は必要ないが、SSH 接続の設定が必要
FutureVuls ペーストスキャン エージェントが必要ない。閉域網にも対応 パッケージアップデート時に FutureVuls 上の情報も更新する必要あり

最後に: Amazon Inspector エージェントレススキャンと FutureVuls の活用

以上、Amazon Inspector のエージェントレススキャンについて紹介しました。EC2 を SSM で管理することが難しい場合や、 Vuls スキャナをインストールできない場合でも、気軽に Amazon Inspector で EC2 の脆弱性検知が可能になりました。

また、Inspectorで検知された脆弱性を FutureVuls に取り込むことで、「リスク = 脆弱性 x 脅威 x 資産重要度」を考慮した優先度判断から運用者への指示、更には対応の追跡を自動化できます。FutureVuls に搭載された SSVC 機能により、リスクベースで優先度を判断することで、本当に危険な「2%」の脆弱性を特定できます。

CSIRT 部門は一元管理された脆弱性を画面上で簡単に追跡し、対応が漏れているものを一括で催促できます。詳細は、「ヘルプ > 高度な自動トリアージ機能の紹介」をご参照ください。

また、AWS、GCP、GitHub、オンプレ環境等、社内の様々な場所に別々に構築された CI/CD パイプラインや仮想マシンなどの脆弱性検知結果を FutureVuls に集約することで一元管理できます。CSIRT 部門は FutureVuls を利用して社内の大量にあるシステムの脆弱性を横断的に閲覧し、危険な脆弱性の一括注意喚起や、期限切れタスクの一括対応指示等、日々の業務を FutureVuls で効率的に実施できます。

参考記事: FutureVulsとTrivyでAWS CodePipelineのCI/CDに脆弱性検知を組み込む

詳細な説明やデモのご要望は、こちらからお気軽にお問い合わせください。