Amazon Inspectorで共通脆弱性識別子(CVE)を評価する手順

おはようございます、もきゅりんです。

Amazon Inspector(以下、Inspector)では、比較的に容易に潜在的なセキュリティ上の問題や脆弱性を検出できます。

今回はInspectorで、共通脆弱性識別子CVE(Common Vulnerabilities and Exposures)の評価を実施してみたいと思います。

共通脆弱性識別子(CVE)とは

独立行政法人 情報処理推進機構の共通脆弱性識別子CVE概説によれば、

共通脆弱性識別子CVE(Common Vulnerabilities and Exposures)は、個別製品中の脆弱性を対象として、米国政府の支援を受けた非営利団体のMITRE社が採番している識別子です。脆弱性検査ツールや脆弱性対策情報提供サービスの多くがCVEを利用しています。

個別製品中の脆弱性に一意の識別番号「CVE識別番号(CVE-ID)」を付与することにより、組織Aの発行する脆弱性対策情報と、組織Xの発行する脆弱性対策情報とが同じ脆弱性に関する対策情報であることを判断したり、対策情報同士の相互参照や関連付けに利用したりできます。

要するに、脆弱性を識別するためのIDということです。

ここで、いちおう Amazon Inspectorで利用される利用される用語と概念のおさらいします。

Amazon Inspector で利用される用語と概念のおさらい

Amazon Inspector の用語と概念

  • Amazon Inspector エージェント

すべてのユースケースで必要ではありませんが、セキュリティを完全に評価するためには、ターゲットの各 Amazon EC2 インスタンスに Amazon Inspector エージェントをインストールする必要があります。直接インストールすることもSSMからインストールすることができます。今回はSSMのRun Commandで対応します。

  • Amazon Inspector 評価ターゲット

現在(2019/10/7)、EC2 インスタンスのみです。キーと値のペアをタグ付けする必要があります。

  • 評価テンプレート

評価の実行中に使用される設定です。

今回使用するCVEであったり、Network Reachabilityのネットワーク評価であったり、どのルールパッケージを選択するか、SNS通知するかなどの設定になります。

  • 結果

指定されたターゲットの評価の実行中に Amazon Inspector が発見する潜在的なセキュリティ問題です。

前提

  • 評価対象のインターネット通信できるEC2が作成済みであること
    • Run Commandを許可するIAM ロールがアタッチされていること *1

やってみた

評価対象のEC2に任意のタグを付与します。(付与したタグはInspector設定時に使用します)

評価対象EC2にタグを付与

# タグ付与
$ instanceId="i-hogehogehoge"

$ aws ec2 create-tags \
    --resources $instanceId --tags Key=Inspector,Value=true

# 確認
$ aws ec2 describe-tags \
    --filters "Name=resource-id,Values=$instanceId"

{
    "Tags": [
        {
            "ResourceType": "instance",
            "ResourceId": "i-hogehogehoge",
            "Value": "true",
            "Key": "Inspector"
        },
        {
            "ResourceType": "instance",
            "ResourceId": "i-hogehogehoge",
            "Value": "Web",
            "Key": "Name"
        }
    ]
}

評価ターゲット作成

Inspectorで評価する対象を定義します。Inspectorコンソールより「評価ターゲット」を選択し「作成」をクリックします。

Inspectorでは、アカウントとリージョンに存在するすべてのEC2を評価対象にすることができますが、ここでは特定のEC2のみ対象にしたいと思います。 *2

以下を指定し「保存」をクリックします。

  • 名前: 任意の定義名
  • Use Tags: EC2に付与したタグ
  • Install Agents: チェック

assessment target

インストールコマンドが実行されたよ、とお知らせしてくれます。

success

SSMコンソールのコマンド履歴よりインストールが成功していることを確認します。

command success

評価テンプレート作成

評価で利用するテンプレートを作成します。「評価テンプレート」を選択し「作成」をクリックします。

以下を指定し「作成」をクリックします。(初回の実行はテンプレート作成時に実行されます。)

  • 名前: 任意のテンプレート名
  • ルールパッケージ: Common Vulnerabilities and Exposures-1.1
  • 所要時間: 1時間(推奨)

今回は Assessment Schedule *3を利用しませんが、設定することで定期的に自動実行を行うことができます。

テンプレート作成時に初回実行されます。

assessment template

評価実行

評価が完了しました。

assessment done

結果

評価結果は、PDFとしてダウンロードすることもコンソールで確認することも可能です。

pdf dl

項目をクリックすると詳細が確認できます。CVE-2017-16931の脆弱性があったようです。

libxml2, libxml2-pythonパッケージのアップデートが推奨されています。

each cve

結果の重要度ですが、共通脆弱性評価システム (CVSS) によるネイティブの深刻度の詳細です。

CVSS の詳細については、https://www.first.org/cvss/ を参照しましょう。

なお、結果を削除するには、[評価の実行] ページに移動して、削除を実行します。

Amazon Inspector では、個別の結果を削除することはできません。評価の実行を削除すると、その実行のすべての結果とすべてのバージョンのレポートも削除されます。

セキュリティアップデートを適用

SSMの AWS-RunShellScript で対応します。

run command

セキュリティ更新を含むアップデートのみインストールしてから、インスタンスを再起動します。

#!/bin/bash
yum -y update --security
needs-restarting -r
if [ $? -eq 1 ]
then
        exit 194
else
        exit 0
fi

run command shell

target

cwl

command success

設定変更後に評価再実行

再度実行します。

reassessment

結果見直し

結果が「0」となりました。 セキュリティ上の問題はひとまず解消されたようです。

result ok

9. さいごに

Inspectorのホストアセスメントで共通脆弱性識別子(CVE)を評価する手順をご紹介しました。

定期実行してSNSを利用してメールを受け取ると便利ですね。

こちらは、CISベンチマークを評価する記事です。合わせてどうぞ。

Amazon InspectorでCISベンチマーク(OSセキュリティ設定)を評価する手順

以上です。

どなたかのお役に立てば幸いです。

参考:

脚注

  1. SSM経由でInspectorエージェントをインストールするため
  2. すべてのインスタンスを対象にした場合、最大数の制限にご注意ください
  3. Assessment Scheduleについて

    Amazon Inspector によってセットアップされた評価実行スケジュール用の Amazon CloudWatch Events ルールが自動的に作成されます。その後、Amazon Inspector によって AWS_InspectorEvents_Invoke_Assessment_Template という IAM ロールも自動的に作成されます。このロールを使用して、CloudWatch イベント が Amazon Inspector のリソースに対して API コールを行うことができます。