Amazon GuardDutyは最近、他のAWSアカウントで使用されているEC2インスタンスクレデンシャルの検出を追加した。これにより、AWSネットワーク外のIPアドレスによって使用されているクレデンシャルのみが報告されていた以前の状態が改善される。この新しい検出は、すべてのリージョンで利用できる。
Amazon GuardDutyは、AWSアカウントと処理の中で悪意のある動きや不正な動きを継続的に監視する脅威検出サービスである。このサービスは複数のAWSアカウント横断で一元管理でき、追加のソフトウェアやハードウェアをインストールする必要はない。
新しい脅威検出は、別のAWSアカウントから使用されているEC2インスタンスのクレデンシャルに反応する。EC2インスタンスのクレデンシャルは、EC2インスタンスメタデータサービス(IMDS)から利用できる一時的なクレデンシャルである。次に、これらをEC2インスタンスで実行されているアプリケーションに送られ、アタッチされたAWS IAMロールによって許可されたアクティビティを承認できる。
同じGuardDuty管理者アカウントによって監視されているアカウントのように、クレデンシャルがアフィリエイトアカウントから使用されている場合、アラートには重大度中のラベルが付けられる。他のすべての検出は、重大度高としてラベル付けされる。
これらのクレデンシャルが危険にさらされる可能性がある。たとえば、EC2インスタンスで実行されているアプリケーションにオープンな不具合がある場合である。悪意のある攻撃者は、そのアプリケーションを利用してIMDSにアクセスし、クレデンシャルを抽出する可能性がある。これらのクレデンシャルには、アタッチされたIAMロールによって付与された権限がある。つまり、アクターは、EC2インスタンス上のアプリケーションであるかのように動作できる。
クレデンシャルが危険にさらされてしまう方法がいくつかある。リモートコード実行(RCE)の脆弱性を利用するなどである。サーバ側のリクエストフォージェリ(SSRF)やXML外部エンティティ(XXE)インジェクションなど、アプリケーションレベルの脆弱性も悪用される可能性がある。
AWSのCISOオフィスのディレクターMark Ryland氏は、これらの潜在的なベクトルを軽減するためのベストプラクティスをいくつか推奨している。まず、IMDSが必要ない場合は、無効にすることができるし、無効にするべきである。使用する場合、Ryland氏は、ローカルファイアウォールルールを介してサービスへのローカルアクセスを制限することを勧めている。広くアクセスできるEC2インスタンスの場合、開いているポートを制限し、アクセスブローカーモデルを使用してIMDSと通信することを勧めている。
Ryland氏は、IMDSv2を活用することで、ほとんどの既知の設定ミスやSSRFの脆弱性を防ぐことができると述べている。バージョン2ではモデルが、ステートレスな要求と応答のアプローチからセッション指向のモデルに移行されている。アプリケーションでPUT
リクエストを使ってセッショントークンが作成され、後続のすべてのリクエストにはこのトークンを含める必要がある。トークンは、そのEC2インスタンスでのみ使用できる。
サービスのバージョン1を無効にすることができ、IMDSv1の使用状況を追跡するためのCloudWatchメトリックであるAmazon EC2:MetadataNoToken
がある。IMDSv1の使用を防ぐために、IAMおよび組織のサービス制御ポリシー(SCP)内で使用できる条件キーもある。たとえば、次の条件を使って、メタデータサービスのバージョン1を使って行われたRunInstances要求を拒否できる。
"StringEquals": {"ec2:MetadataHttpTokens": "required"}
これには、RunInstancesを次のように呼び出す必要がある。
https://ec2.amazonaws.com/?Action=RunInstances
&ImageId=ami-1a2b3c4d
&Count=1
&InstanceType=c3.large
&KeyName=MyKeyPair
&SecurityGroups=MySecurityGroup
&MetadataOptions.HttpTokens=required
&AUTHPARAMS
新しい脅威検出は、追加費用なしであるべてのリージョンで利用できるようになった。GuardDutyを有効にすると、自動的に有効になる。Amazon GuardDutyの詳細については、AWSサイトを参照してください。価格情報は、価格ページで入手できる。