これは TECHSCORE Advent Calendar 2018 の11日目の記事です。
最近Amazon Inspector を利用してセキュリティ評価を行う機会がありました。
Amazon Inspector の「完了」イベントを Amazon SNS で通知するように設定していましたが、対処方法等の詳細情報は含まれていないため、Amazon Inspector コンソールの評価レポートで確認していました。
良い機会なので、今回「実行完了」イベントをトリガーにして評価結果の詳細を自動的に通知できないかを調べてみることにしました。
前提
- Amazon Inspector の評価が完了していること。
- 評価テンプレートに「実行完了」イベントの通知が設定されていること。
- AWS CLI がインストールされ、Amazon Inspector の API を叩けるサーバがあること。
「実行完了」イベントの受信
Amazon Inspector による評価が完了すると、「実行完了」イベントが設定したSNS トピックの通知先に送信されました。
以下は見やすいように必要な部分を抜粋しています。
1 2 3 4 5 6 7 |
{ "template": "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx", "findingsCount": "{arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:rulespackage/x-xxxxxxxxxx, arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:rulespackage/x-xxxxxxxxxx, arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:rulespackage/x-xxxxxxxxxx, arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:rulespackage/x-xxxxxxxxxx, arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:rulespackage/x-xxxxxxxxxx}", "run": "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx/run/x-xxxxxxxx", "event": "ASSESSMENT_RUN_COMPLETED", "target": "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx" } |
run には「評価の実行」の ARN が含まれていますので、ここから「評価結果」の詳細を取得できるか AWS CLI を利用して確認していくことにします。
「評価結果」一覧を取得
コマンドリファレンス(inspector)を確認したところ、list-findings で「評価結果」一覧を取得できるようです。
「実行完了」イベントから取得した「評価の実行」の ARN を assessment-run-arns オプションに指定して実行したところ、以下の結果が返ってきました。
同様に必要な部分を抜粋しています。
1 2 3 4 5 6 7 8 9 |
aws inspector list-findings --assessment-run-arns arn:aws:inspector:ap-northeast-1:xxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx/run/x-xxxxxxxx { "findingArns": [ "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx/run/x-xxxxxxxx/finding/x-xxxxxxx1", "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx/run/x-xxxxxxxx/finding/x-xxxxxxx2", "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx/run/x-xxxxxxxx/finding/x-xxxxxxx3", ] } |
「評価結果」の ARN を取得することができましたので、あと一歩で「評価結果」の詳細までたどり着けそうです。
「評価結果」の詳細を取得
再度 コマンドリファレンス(inspector)を確認したところ、describe-findings で「評価結果」の詳細を取得できるようです。
取得した「評価結果」の ARN を finding-arns オプションに指定して実行したところ、以下の結果が返ってきました。
同様に必要な部分を抜粋しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
aws inspector describe-findings --finding-arns arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx/run/x-xxxxxxxx/finding/x-xxxxxxx1 { "findings": [ { "assetType": "ec2-instance", "confidence": 10, "numericSeverity": 9.0, "description": "During key agreement in a TLS handshake using a DH(E) based ciphersuite a malicious server can send a very large prime value to the client. This will cause the client to spend an unreasonably long period of time generating a key for this prime resulting in a hang until the client has finished. This could be exploited in a Denial Of Service attack. Fixed in OpenSSL 1.1.0i-dev (Affected 1.1.0-1.1.0h). Fixed in OpenSSL 1.0.2p-dev (Affected 1.0.2-1.0.2o).", "service": "Inspector", "title": "Instance i-xxxxxxxxxxxxxxxxx is vulnerable to CVE-2018-0732", "assetAttributes": { "amiId": "ami-xxxxxxxxxxxxxxxxx", "hostname": "ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com", }, "recommendation": "Use your Operating System's update feature to update package openssl-1:1.0.2k-12.amzn2.0.3, openssl-libs-1:1.0.2k-12.amzn2.0.3. For more information see [https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0732](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0732)", "id": "CVE-2018-0732", "severity": "High" } ] } |
「評価結果」の詳細を取得することができました。
対象の Amazon EC2 インスタンスで検出された問題の詳細や、推奨される対処方法等の情報が含まれていることが確認できます。
さいごに
今回は AWS CLI を利用して検証しましたが、「実行完了」イベントの通知内容から辿って「評価結果」の詳細を取得できることがわかりました。
今後は、AWS Lambda 等でイベントを受信してメールやチャットツールに自動通知するところを試してみようと思います。
appendix
詳細のフォーマットにこだわらないのであれば、Amazon Inspector が作成してくれる評価レポート(HTML、PDF)を利用する手もあります。
1 2 3 4 5 6 |
aws inspector get-assessment-report --assessment-run-arn arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/x-xxxxxxxx/template/x-xxxxxxxx/run/x-xxxxxxxx --report-file-format HTML --report-type FINDING { "status": "COMPLETED", "url": "https://inspector-temp-reports-prod-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/xxxxxxxx" } |
url にアクセスすると、「評価結果」の詳細がまとめられたレポートを参照することができるので、この url を通知するほうが簡単そうですね。