[アップデート]Amazon GuardDutyが漏洩したAWS Lambda認証情報の不正利用を検出できるようになりました
こんにちは、臼田です。
みなさん、AWSで脅威検出してますか?(挨拶
今回はAmazon GuardDutyで新しく追加されたFindingsであるUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWSの動作を確認していきます。
概要
GuardDutyのFindings追加の通知として下記が届いていました。
{
"version": "1",
"type": "NEW_FINDINGS",
"findingDetails": [
{
"link": "https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-resourcecredentialexfiltrationoutsideaws",
"findingType": "UnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWS",
"findingDescription": "This finding informs you that a host outside of AWS has attempted to run AWS API operations using temporary AWS credentials that were created on a Lambda resource in your AWS environment."
}
]
}
この検出タイプはAWS Lambdaの認証情報が漏洩して外部から利用された際に検出します。
以前からAmazon GuardDutyではEC2の認証情報が漏洩して外部から利用された際に検出できるようになっていました。
その場合はUnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWSが検出されていたのですが、今回はUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWSとなっており、Instance部分がResourceになっています。
この字面からするとどのリソースなの?となりますが、ガイド上ではAWS Lambdaと記述されています。
AWS LambdaではIAM Roleでアタッチした権限が一時的な認証情報として環境変数に保存され、Lambda関数上で各言語のライブラリから読み込まれて実行されます。この情報を外部に漏らすことは基本ありません。そのため、この検出が発覚した段階でLambda関数の処理に問題があり、認証情報が漏洩したと考えるべきです。
デフォルトの重要度は高です。
例外として、VPC Lambdaを利用していて、LambdaからのAWS API実行をオンプレミス経由で行っていた場合は過検知されます。その場合はFinding TypesとIPアドレスセットで抑制登録しましょう。
やってみた
では実際に検出させてみて動作を確認しましょう。
まずは適当に環境変数を出力するLambda関数を作成して、実行して環境変数を取得します。これを使ってササッとAWS外(今回はローカル環境)から利用します。詳細は省略。
少し待つとAmazon GuardDutyが検出します。やったね。

ちゃんとUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWSとして検出されました。
詳細を見ていくと、影響を受けるリソースとしてLambda関数の情報があります。関数自体を開いて調査もできますし、何をしたか後で調査するためにAccess key ID部分を控えておきましょう。

アクションでは何が実行されたのかを単発で見ることができます。実際には他にも色々実行されているのでここは参考までにしておきます。Actorは送信元の情報なので、もしオンプレミス経由などで実行している場合にはここで信頼できる送信元か確認します。

よい感じですね。
続いて、AWS CloudTrailでどのようなことが実行されたのか確認していきます。
先ほど控えたAccess key IDをAWS CloudTrailのイベント履歴画面でフィルターにかけます。

他にどんな操作がされたのかを確認することができました。ここで詳細な調査をしましょう。
さらにAmazon Detectiveを有効化している場合には調査が捗ります。
検出結果から「Detectiveで調査する」から該当Findingsを開きます。

ここでは関連するIPや関数など色んな情報からドリルダウンして調査できます。
中でもIAMの調査は良い感じです。今回の対象のIAM Roleで調査を実行します。

少しすると調査結果がまとまりました。先程AWS CloudTrailで確認した内容の要約や集計したAPIの情報、それがどの程度の危険性があるかをまとめたレポートが生成されました。非常によき。

まとめ
Amazon GuardDutyで新しく追加されたUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWSが実際に検出される条件と検出結果の内容を確認し、調査手法を紹介しました。
悪用されていることに気づくためにもAmazon GuardDutyを有効化し、調査を快適に行うためにAmazon Detectiveを活用しましょう。










