Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
metabadger — AWS EC2上でのSSRF攻撃を、より安全なインスタンスメタデータサービスv2(IMDSv2)への自動アップグレードにより防止します。 | Kitploit
ツール/GitHubGitHub/salesforce/metabadger
クラウドインフラストラクチャセキュリティ防御ツール脆弱性分析構成監査クラウドセキュリティ設定ミスArchived
GitHubsalesforce/metabadger

metabadger

AWS EC2上でのSSRF攻撃を、より安全なインスタンスメタデータサービスv2(IMDSv2)への自動アップグレードにより防止します。

リポジトリを見る
143121年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Metabadger

AWS EC2 における SSRF 攻撃を防ぐために、よりセキュアなインスタンスメタデータサービス v2 (IMDSv2) への自動アップグレードを実現します。

continuous-integration Downloads Twitter

Metabadger

目的と機能

  • AWS インスタンスメタデータサービスの現在の利用状況を診断・評価し、その仕組みを理解する
  • インスタンスメタデータサービスの v2 へのアップグレードを準備し、v1 の攻撃ベクトルから保護する
  • インスタンスを IMDSv2 のみを使用するように具体的に更新する機能を提供する
  • 不要なインスタンスでインスタンスメタデータサービスを無効にし、攻撃対象領域を減らす機能を提供する

AWS インスタンスメタデータサービスとは?

  • AWS メタデータサービスは、インスタンスロールの認証情報やセッショントークンを含む、インスタンス内のすべての情報にアクセスできるようにする。
  • この攻撃を足がかりに環境内へ侵入する既知の SSRF 脆弱性が存在する。
  • これまでに聞いたことのある有名な攻撃の中には、インスタンスメタデータサービスにアクセスできる脆弱なウェブアプリを介してアクセスする方法も含まれている。
  • 攻撃者は、メタデータサービスから認証情報を取得し、その特定のインスタンスの外部で使用できる可能性がある。

IMDSv2 とその利用が推奨される理由

  • 設定内で v2 の使用を必須とすることで、インスタンスが常にメタデータサービスの v2 を使用していることを保証する。
  • PUT リクエストと必須のリクエストヘッダーを使用してセッショントークンを有効にすることで、AWS メタデータ API へのアクセスを制御する。IMDSv1 ではこのチェックが行われないため、攻撃者がサービスを悪用しやすくなっている。
  • IMDSv2 では X-Forwarded-For ヘッダーが許可されないため、プロキシベースのトラフィックがメタデータサービスと通信できないようにする。

問題の背景

エンジニアリングチームは、AWS 上に多種多様なコンピューティングインフラストラクチャを保有しており、メタデータサービスを悪用する特定の脆弱性からそれらを保護する必要がある場合があります。IAM を使用する場合や、インスタンス起動時にユーザーデータ情報が必要な場合、インスタンス上でメタデータサービスを実行する必要があります。インスタンスの攻撃対象領域を制限することは、サービス自体が提供する情報を盗み取られて環境内で侵入されるのを防ぐ上で極めて重要です。過去の数多くの有名な攻撃では、このサービスを利用してインスタンスにアタッチされたロールを悪用したり、メタデータサービスを介してアクセス可能な機密データをダンプしたりしてきました。Metabadger は、インスタンスメタデータサービスの「どこで」「どのように」使用しているかを特定し、不要な攻撃の余地を減らして EC2 運用における全体的なリスク体制を低下させるのに役立ちます。

免責事項とロールバック

このツールを使用すると、AWS コンピューティングインフラストラクチャに影響を与える可能性があります。メタデータサービスが無効な状態、またはバージョン 2 では動作しないサービスやアプリケーションが存在する可能性があるためです。本番環境への導入には注意し、何か異常が発生した場合に備えてロールバック計画を立ててください。Metabadger には、-v1 フラグを使用してデフォルトのバージョン 1 のサービスにロールバックする機能が組み込まれています。これを使用してインスタンスをすばやくデフォルトに戻すことができます。理想的には、このツールを非本番環境で実行し、検証環境としてメタデータバージョンを更新してから、本番環境に適用することをお勧めします。

強化のためのガイド手順

ステップ 1

まず、特定の AWS リージョンにおけるメタデータサービスの全体的な使用状況を把握します。Metabadger は、/.aws/credentials ファイル内の認証情報が指すリージョン、または現在引き受けているロールのリージョンにおける現在の使用状況を評価します。discover-metadata コマンドの実行時に --region フラグを指定すれば、現在設定されているリージョンとは別のリージョンに変更することもできます。インスタンスが実行しているバージョン、およびサービスが有効か無効かを把握したら、サービスを強化するためのより明確なアクションプンを策定できるようになります。設定可能な各メタデータオプションの正確な意味は こちら で確認できます。

ステップ 2

サービスを v2 に切り替える際に評価すべき領域の 1 つは、IAM ロールの使用です。Metabadger を使用すると、リージョン内で既に IAM ロールを使用している可能性のあるインスタンスを特定できます。discover-role-usage コマンドは、ロールがアタッチされているインスタンスのリストを出力します。ロールを使用しているインスタンスが多い場合は、ワークロードの全体的な機能に影響が出ないように、サービスを v2 に更新する際に注意が必要です。

ステップ 3

初期の調査と評価が完了したら、コンピューティングインフラストラクチャをメタデータサービスの v2 を使用するか、使用されていない場所では無効にするように段階的に強化するアプローチを取ることができます。harden-metadata コマンドを使用すると、特に指定がない限り、特定のリージョン内のすべてのインスタンスを更新できます。また、--tags フラグを使用してインスタンスタグを指定したり、設定を適用したいインスタンスの CSV を含む入力ファイルを指定することもできます。v2 への適切な更新を行い、不要なサービスを無効にしたら、ステップ 1 の項目を使用して再評価し、環境がロックダウンされていることを確認できます。更新したくないインスタンスがある場合は、--exclusion フラグを使用してタグまたはインスタンス ID で除外できます。

要件

Metabadger は、以下の権限を持つ IAM ロールまたは認証情報を必要とします。

ec2:ModifyInstanceAttribute
ec2:DescribeInstances

インスタンスメタデータサービスに変更を加える際は、注意を払い、AWS のバージョン 2 への安全なアップグレードに関する追加のガイダンスに従う必要があります。Metabadger は、AWS のコンピューティングインフラストラクチャをさらにセキュアにするためのプロセスを支援するために設計されています。

AWS Best Practice Guide on Updating to IMDSv2

使用法とインストール

pip でインストール

root@kitploit:~
pip3 install --user metabadger

Github でインストール

root@kitploit:~
$ git clone https://github.com/salesforce/metabadger
$ cd metabadger
$ pip install -e .

$ metabadger
Usage: metabadger [OPTIONS] COMMAND [ARGS]...

  Metabadger is an AWS Security Tool used for discovering and hardening the
  Instance Metadata service.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  cloudwatch-metrics   Pull CloudWatch Metrics for MetadataNoToken usage
  disable-metadata     Disable the IMDS service on EC2 instances
  discover-metadata    Discover summary of IMDS service usage within EC2
  discover-role-usage  Discover summary of IAM role usage for EC2
  harden-metadata      Harden the AWS instance metadata service from v1 to v2

コマンド

cloudwatch-metrics

AWS CloudWatch の MetadataNoToken メトリクスを使用して、IMDSv1 の使用状況に関する情報を直接取得します。このコマンドは、過去 1 時間以内に v1 のサービスを積極的に使用しているインスタンスを表示します。このコマンドを実行する際は、CloudWatch メトリクスを表示する IAM 権限が必要であることに注意してください。

root@kitploit:~
Options:
  -a, --all-region           Pull CloudWatch metrics across all available
                             regions
  -r, --region TEXT          Specify which AWS region you will perform this
                             command in
  -t, --time-period INTEGER  The CloudWatch time period in seconds used to
                             track the IMDS v1 metric
  -p, --profile TEXT         Specify the AWS IAM profile.
  --help                     Show this message and exit.

discover-metadata

使用されているバージョンや全体的な適用率を含む、インスタンスメタデータサービスの全体的な使用状況のサマリー。これらの数値を利用して、メタデータの使用状況がどの程度強化されているか、v2 と v1 のどちらで実施しているかという全体的な体制を把握することができます。

root@kitploit:~
Options:
  -a, --all-region    Provide a metadata summary for all available regions in the AWS account
  -j, --json          Get metadata summary in JSON format
  -r, --region TEXT   Specify which AWS region you will perform this command in
  -p, --profile TEXT  Specify the AWS IAM profile.

discover-role-usage

インスタンスとそれらが使用しているロールのサマリー。これにより、メタデータサービス自体に更新を加える際にどの程度注意を払う必要があるかが把握できます。

root@kitploit:~
Options:
  -p, --profile TEXT  Specify the AWS IAM profile.
  -r, --region TEXT   Specify which AWS region you will perform this command in

harden-metadata

インスタンスをメタデータ v1 または v2 のいずれかに変更する機能と、ドライランモードを実行することで変更されるインスタンスの数を把握する機能。

root@kitploit:~
Options:
  -a, --all-region       Update IMDS across all regions in your account
  -e, --exclusion        The exclusion flag will apply to everything besides what is specified, tags or instances
  -d, --dry-run          Dry run of hardening metadata changes
  -v1, --v1              Enforces v1 of the metadata service
  -i, --input-file PATH  Path of csv file of instances to harden IMDS for
  -t, --tags TEXT        A comma seperated list of tags to apply the hardening setting to
  -r, --region TEXT      Specify which AWS region you will perform this command in
  -p, --profile TEXT     Specify the AWS IAM profile.

disable-metadata

インスタンス上のメタデータサービスを完全に無効にするコマンド。

root@kitploit:~
Options:
  -e, --exclusion        The exclusion flag will apply to everything besides what is specified, tags or instances
  -d, --dry-run          Dry run of disabling the metadata service
  -i, --input-file PATH  Path of csv file of instances to disable IMDS for
  -t, --tags TEXT        A comma seperated list of tags to apply the hardening setting to
  -r, --region TEXT      Specify which AWS region you will perform this command in
  -p, --profile TEXT     Specify the AWS IAM profile.

ロギング

Metabadger によるすべての変更は、作業ディレクトリに保存される metabadger.log というファイルに記録されます。ファイルには、ツールがメタデータサービスに変更を加えるすべてのアクションについて、以下が含まれます。

  • 変更が行われた日時
  • 発生した変更(無効化、強化、または更新)
  • 変更が行われたインスタンス ID
  • ドライラン情報
  • 変更が成功したかどうかのステータス
ツールをダウンロード