[レポート][SEC217] Amazon Inspector を用いた AWS Lambda の脆弱性検出について #reinvent

2022.12.01

はじめに

こんにちは、CX事業本部、re:Invent 2022 現地参加組の田中孝明です。

セッション概要

SEC217: [NEW LAUNCH!] Detecting vulnerabilities in AWS Lambda functions using Amazon Inspector

開発者はインフラ管理の軽減、より効率的なスケーリング、コスト削減のために、AWS Lambda のようなサーバーレスコンピュートに移行していますが、サーバーレスワークロードは、アプリケーションコードの脆弱性を監視する必要があります。このセッションでは、Amazon EC2 やコンテナベースのワークロードにおけるソフトウェアの脆弱性や意図しないネットワークの露出に加えて、Amazon Inspector を使用してAWS Lambda の脆弱性を検出できるようになった方法について説明します。Amazon Inspector は、既存、または新たに作成されたすべての AWS Lambda を自動的に検出してスキャン用にインベントリ化し、継続的に監視して自動的に問題を検出します。Amazon Inspector は、ワークロードの脆弱性を一望でき、高度に文脈化された深刻度スコアリングにより、修復の優先順位付けを支援します。

セッション

Amazon inspector は、ソフトウェアの脆弱性や意図しないネットワークの露出についてワークロードを継続的にスキャンする、自動化された脆弱性管理サービスです。

AWSには2つの Amazon Inspector があります。昨年立ち上げた Amazon Inspector と2016年のオリジナルの、Amazon Inspector classic と呼ばれるものです。 新バージョンを発表したのは、お客様が従来の手法やクラシックを用いて脆弱性管理を行う際にいくつか課題があったからです。

1つ目は、クラウド向けに構築し、継続的にスキャンするシステムにしたことです。 Amazon Inspector を使いやすく、管理も簡単で、何をいつスキャンするかを決定し、継続的にモニタリングするようにしました。

2つ目は、ほぼリアルタイムで脆弱性を管理する方法をお客様にお伝えすることです。 新しい重要な脆弱性が見つかったら、通常のスキャン範囲を超えて対応する必要があるのかといった情報を知りたがっていました。

3つ目は、Serverless へと移行する過程で、お客様が異なるツールを使用したり異なるモジュールを購入したりしているのを見たことです。 私たちは、1つのツールですべてを行えるようにしたいと考えました。

Amazon のスペクトル機能の3つの柱についてお話します。 1つ目は、摩擦のないアクティベーションと管理、2つ目は、継続的な脆弱性モニタリング、3つ目は、結果の優先順位付けとコンテキスト化についてです。

AWS Organizations を利用している場合、その組織を Amazon Inspector に接続するだけで、すべてのアカウントを把握することができます。 クリック1つで、あらゆる場所で Amazon Inspector を有効にすることができます。 委任された管理者を割り当てることで、その管理者がインスペクタを有効にし、組織全体の Amazon Inspector が収集したすべての調査結果およびすべてのデータが、単一のウィンドウに表示されるようになります。 最近、あるお客様が7000のアカウントに対して Amazon Inspector を導入し、その能力を発揮しています。

2つ目は、継続的なモニタリングと脆弱性の監視です。お客様の課題の1つは、「自分のチームが常にリソースを作成していることをどうやって確認するか」ということです。クラウドのリソースがどんどん増えていくのをどうやって確認したらいいのか。Amazon Inspector は、これらのリソースをすべて記録してくれます。 コンテナイメージのインベントリ、AWS Lambda のインベントリもすべて取得し、AWSに接続してすべてのアクティビティを監視することができます。 新しいコンテナイメージをプッシュすると、Amazon Inspector は自動的にスキャンします。そのリソースに何がインストールされているかを監視し必要に応じて再評価します。 脆弱性は毎日発表されています。管理者は新しい脆弱性がどれほどクリティカルなものなのか、パッチのサイクルから外れる必要があるのか、という専門家である必要はないのです。 Amazon Inspector は、すべての脆弱性を監視し、新しい脆弱性が公開されると、影響を受けるものを選び、自動的に再評価して調査結果を生成してくれます。

結果の優先順位付けとコンテキスト化です。Amazon Inspector スコアと呼ばれるものを提供することで意思決定の手助けをしようとします。 脆弱性の深刻度、リソースのネットワークアクセス性、悪用可能性、その他の要因を考慮した上で、その脆弱性があなたとあなたの環境にとってどの程度重要であるかを示すし、優先順位をつけて本当に対処すべき重要なものを選ぶことができます。

10年前、私たちは仮想マシンからスタートしました。その後、5~6年でコンテナに移行しました。 業界のトレンドは、より小さなものへと移行しています。使いやすいという理由だけで、コンテナすら使っていない顧客もいます。

責任共有モデルについて話します。 AWSはインフラ、ハードウェアを管理しますが、お客様はそのサービス上にデプロイするアプリケーションは管理します。 お客様が書いたコードは、悪用される可能性がありますし、使っているライブラリの依存関係も、悪用される可能性があるのです。

すでに Amazon Inspector を利用しているお客様は、アカウント管理ページにアクセスし、ワンクリックですべてのアカウントを AWS Lambda スキャンに対応させることができます。

ソフトウェアの脆弱性を自動的にスキャンします。AWS Lambda を抽出し、その関数に含まれるすべての依存関係を洗い出し調査結果を出します。

AWS Lambda を更新するとすぐに自動的にスキャンが行われ、差分を発見します。

最近、他のベンダーから脅威インテリジェンス用のライセンスを追加で取得しました。 CVE には CVE スコアがあります。 メインダッシュボードにリスクベースの修復というパネルがあり、現実的な環境全体を見て、脅威の5つのパッケージを特定し、それに紐づく CVE の数、CVE の重要度、そのパッケージによって影響を受けているリソース数に基づいて修復を行います。

Amazon EventBridge や AWS Security Hub との統合についてです。

新しいリソースを発見したり状態が変わったりするたびにそのイベントを Amazon EventBridge に送ります。例えばインスタンスの終了、インスタンスの停止、AWS Lambda の作成、コンテナイメージの削除などです。 イベントレートでは、これらのイベントをどのように管理するかについて、さまざまなルールを作成することができます。この仕組みを利用して Issue の発効を自動化したお客さまもいらっしゃいます。

これは 委任された管理者として割り当てるアカウントです。管理者アカウントを委譲することで、Amazon Inspector の管理者アカウントとして機能し、他のアカウントもすべて見ることができるようになるだけでなく、すべての調査結果がこの1つのアカウントに統合されます。

委任された管理者アカウントでログインするとこのように Amazon Inspector が表示され、カバレッジの詳細とともに環境全体が表示されます。

Amazon Inspector でアクティブ化されているアカウントの数を意味し、3つのアカウントのうち3つが有効なインスタンスであることがわかります。

同様に、コンテナ・イメージやコンテナ・リポジトリ、AWS Lambda についても、カバレッジの詳細が表示されます。 リアルタイムのダッシュボードのようにして、いつでも組織の脆弱性状況を確認できるようにしています。

ネットワークスキャンも行っています。私たちが行うネットワークスキャンは内部サービスであるため、セキュリティグループや他のサービスからデータを取得するという意味でユニークです。インターネットやVPC、VPCエッジからポートへのオープンパスを特定することができます。

CVE で最もリソースに影響を与えるパッケージが含まれている AWS Lambda をデプロイして、どうなるかお見せします。

AWS Lambda がデプロイされると、数秒のうちに発見されたことがわかります。生成された調査結果を見ることができます。デプロイしてから1分ほどで発見されたわけです。 AWS Lambda に関するすべての発見を見ることができます。

今のところ、Python、Node、Java の3つのランタイムをサポートしています。これらは、AWS Lambda の96%を占めているからです。

Amazon Inspector は簡単で管理しやすいように設計されています。シングルクリックで、あなたの組織で診断がオンになります。 自動で有効になるように設定すれば、あとは補償範囲にギャップがないことを確認するだけです。 Amazon Inspector は、リソースの検出という難しい作業をすべて行ってくれます。 開発チームが新しいことに取り組む際にも心配する必要はありません。 発見した内容を管理してくれます。 リソースを破壊してパッチを当てたり、新しいCVEが発行されたりすると、スペクトルがその詳細を管理します。 私たちは、お客様がソリューションを管理する業務から解放され、より業務に専念できるよう、それを行うための1つのツールを提供したいと考えています。 コンピュータの種類に関係なく、脆弱性診断が簡単に使えるようにすることが目標であり、AWS Lambda に追加した目的でした。

かなりアグレッシブな価格設定にしています。

この機能はお客様のすべてのリソースを安全にするためのものです。 価格は AWS Lambda 1つにつき1カ月 0.3 ドル(us-east-1)、AWS Lambda がデプロイされると削除されるかスキャンから除外されるまで、Amazon Inspector はその AWS Lambda を発見することになります。時間数で課金し、さらに時間数で按分します。10個の AWS Lambda があり、30日間継続的に監視する場合は 3ドル(us-east-1) です。15日の場合は 1.5ドル(us-east-1) です。1ヵ月に1回スキャンしようが、100回スキャンしようが課金には関係ありません。

最後に公式のリソースを連絡します。

所感

管理アカウントで一括してダッシュボードで確認できたり、またエージェントを入れる手間が無いなど、環境によっては価格と機能がマッチしていれば利用しても良さそうでした。