AWSには インスタンスメタデータ と呼ばれる機能があり、EC2では AWS資格情報へのアクセス をHTTP呼び出しで提供します。
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<role>
この機能自体は意図的なものであり、技術的には脆弱性ではありません。リスクは ドキュメント にも記載されています:
IAMロールでインスタンスメタデータを使用するサービスを使用する場合は、サービスがHTTP呼び出しを行うときに認証情報を公開しないようにしてください。資格情報を公開する可能性のあるサービスの種類には、HTTPプロキシ、HTML/CSS検証サービス、およびXMLの組み込みをサポートするXMLプロセッサが含まれます。
攻撃者がアプリケーションをだましてそのような要求を出し、応答を出力できない限り、これは確かに便利な機能です。残念ながら、これは 一般的な攻撃元 です。
もちろん、サーバーは以前にすべてのURLを適切に検証する必要がありますが、 (defense in depth )の精神で、それを無効にしたり、起動時にのみ(ポートを開く前に)許可したりできるのではないかと思います。 )。
質問:
http://169.254.169.254/
はブロックされていますか?/meta-data/spot/instance-action
は、EC2スポットインスタンスの終了がスケジュールされているかどうかを示します。Linuxを使用しているため、iptables
を使用してこれを実行できます。特定のUIDが特定のリクエストを行うのをブロックすることが可能です。 https://unix.stackexchange.com/questions/104830/block-specific-application-with-iptables 、または https://www.cyberciti.biz/tips/blockを参照してください。 -outgoing-network-access-for-a-single-user-from-my-server-using-iptables.html (後者はかなり古いですが、私はまだ正しいと思います)。
私があなたの場合にどうするか:そのIPアドレスに対して、サーバー/プロセスが実行するUIDからネットワーク出力を削除するルールを追加します。すべてを同じユーザーとして実行しない場合は、メタデータサービスにアクセスする他のプロセスを中断させずに、その特定のエンドポイントのSSRFまたは同様の問題を回避できます。
iptables -I OUTPUT -d 169.254.169.254 -m --uid-owner <UID or maybe username> -j DROP
これ(私は思う;テストされていません):