Amazon InspectorでLambda関数のコードスキャンを試してみた

はじめに

私が業務でよく使うLambda
Amazon Inspectorを使って、Lambdaのコードスキャンを試してみました。

目次

Amazon Inspector って何?

ソフトウェアの脆弱性やコードの脆弱性、意図しないネットワークの露出がないかを、継続的にスキャンする脆弱性管理サービスです。
Lambdaに対しては、スキャンタイプは2種類提供されています。

  • Lambdaの標準スキャン

デフォルトの Lambda スキャン タイプ。Lambda 関数とそのレイヤー内のアプリケーションの依存関係をスキャンして、パッケージの脆弱性を検出。

  • Lambdaのコードスキャン

関数および層内のカスタム アプリケーション コードをスキャンして、コードの脆弱性を検出。

悪意ある攻撃者がシステムやネットワークにアクセスできるようなバグを自動的に検出してくれるサービスで、予期しないところで脆弱性が見つかったら、対策の検討・実施が行えますね。

手順

  1. Inspectorの有効化
  2. 自動でスキャン開始
  3. スキャン結果の確認
  4. 脆弱性の確認
  5. Inspectorの無効化

Inspectorの有効化

コンソールから、Amazon Inspectorを開きます。
15 日間無料トライアルで試すことが出来ますね。
「使用を開始する」をクリック。

「Inspector をアクティブ化」をクリックします。

アクティブ化するとLambda標準スキャンが有効になります。

Lambdaコードスキャンも有効にする場合、アカウント管理画面より、アクティブ化プルダウンリストから、AWS Lambda 標準スキャン + AWS Lambdaコードスキャン を選択して両方を有効化します。



自動でスキャン開始

アクティブ化と同時に、自動的にスキャンが開始されます。

スキャン結果の確認

スキャン結果は、ダッシュボードから確認できます。
見つかった脆弱性は、関数名がリンクになっており、リンクから検出された脆弱性の詳細が確認できます。

検出結果->Lambda関数別から、脆弱性が見つかった関数が表示されます。
関数名をクリックすると、脆弱性の詳細を確認することが出来ます。

検出された脆弱性を確認してみる

脆弱性が見つかった場合、どのように表示されるか確認してみます。

見つかった脆弱性が表示されます。タイトルのリンクをクリックすると、詳細を確認することが出来ます。

  • Lambda標準スキャンで見つかった脆弱性

取るべき対策も表示され、分かり易いですね。

  • Lambdaコードスキャンで見つかった脆弱性

脆弱性が見つかったコードの場所、推奨される修復アドバイスも表示され、分かり易いですね。

Inspectorを無効化にしてみる

無効化は、Inspectorを非アクティブ化ボタンをクリックすることで、無効化することができます。
無効になっている間は、Amazon Inspector の使用に対して課金は行われません。
無効化すると、Amazon Inspector のスキャン設定、抑制ルール、フィルタ、および結果はすべて削除されてしまうので、無効にする前に、結果をエクスポートすることが推奨されていました。
結果のレポートのエクスポート

注意点

Inspector をアクティブ化するだけでは、「Lambda標準スキャン」だけしか有効にならない点。
「Lambdaコードスキャン」は、追加で有効化する必要がある点は、覚えておきたいですね。

参考情報

スキャンのタイミング

  • 新規Lambda関数をデプロイした時
  • 既存Lambda関数を更新した時
  • CVE項目が追加された時

CVE項目が追加された時に自動でスキャンされるので、常に有効化しておくのもよいですね。
その際、気になるのが料金です。

料金(2023/06時点)

月間の平均的な Lambda 関数スキャン数に基づいて算出されます。

Lambda 関数の平均数 = (Lambda 関数に対する Amazon Inspector のカバー時間の合計)/(1 ヶ月の時間数、つまり 720 時間)

となっています。

リージョン:アジアパシフィック(東京)の場合、AWS Lambda 関数ごとに 0.36USD
簡単な例で料金を計算してみます。
Lambda関数が3つデプロイ、内2つは1ヶ月、残り一つは15日間スキャンした場合、Lambda 関数の平均数は、(720+720+360)/720 = 2.5
2.5×0.36USD = 0.9USDがAmazon InspectorのLambda関数スキャンの料金となります。

最新の利用料金については以下を参照してください。
Amazon Inspector の料金

スキャン対象のLambda関数が増えれば、料金もそれなに掛かってきます。
Lambda関数の中には、これはスキャンの対象から外したいといった場面もあるかと思います。

その場合、Lambda関数にタグを設定しましょう。

  • Lambda標準スキャンを除外する場合
    キー:InspectorExclusion 値:LambdaStandardScanningを設定
  • Lambdaコードスキャンを除外する場合
    キー:InspectorCodeExclusion 値:LambdaCodeScanningを設定

ステータスが「タグで除外済み」になり、スキャン対象外となりました。

CVEとは

CVEとは、Common Vulnerabilities and Exposures(共通脆弱性識別子)の略称
CVEは、ソフトウェアの脆弱性を対象として、米国政府の支援を受けた非営利団体のMITRE社が提供している脆弱性情報データベースです。CVEでは脆弱性にユニークな識別番号 「CVE-ID」(CVE-登録時の西暦-通し番号の形式)が採番されています。
IPA 情報処理推進機構 共通脆弱性識別子CVE概説

CWEとは

CWEはCommon Weakness Enumerationの略語
CWEはソフトウェアにおけるセキュリティ上の弱点(脆弱性)の種類を識別するための共通の基準
コミュニティにより運営されています。
IPA 情報処理推進機構 共通脆弱性タイプ一覧CWE概説

まとめ

Amazon InspectorのLambdaのコードスキャンについて試してみました。
私の検証用の環境でも脆弱性が見つかり、自分の予想していない部分が標的になる可能性も考えられます。
悪意ある者たちから大切なシステムを守る上でも、有効なサービスだと感じました。

 

投稿者プロフィール

YoshiSaaaan
2023/1にスカイアーチネットワークスにJoin
AWSを日々勉強中