EC2メタデータサービスのバージョン設定の確認

メタデータサービスが必要な場合はIMDSv2を必須にしてください。

説明

IMDSv1を許可すると、一部のSSRF脆弱性を通じてインスタンスのメタデータや一時認証情報にアクセスされやすくなる場合があります。IMDSv2はセッショントークンを要求し、追加の保護を提供します。

想定される影響

アプリケーションの脆弱性と組み合わさると、メタデータやインスタンスロールの認証情報が漏えいするおそれがあります。

対処方法

メタデータサービスが必要なら、MetadataOptions.HttpTokensをrequiredに設定し、アプリケーションの互換性を確認してください。不要な場合は、エンドポイントを無効にできます。

例

明示的なオプションがない場合の動作は、AMIとアカウントのデフォルト設定によって変わります。例ではインスタンスと起動テンプレートにIMDSv2を明示しています。AmiIdとホップ制限は環境に合わせて指定してください。

変更前

yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: メタデータオプションの比較例

Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref AmiId
      InstanceType: t3.micro

  MyLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateName: MySecureLaunchTemplate
      LaunchTemplateData:
        ImageId: !Ref AmiId
        InstanceType: t3.micro

変更後

yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: メタデータオプションの比較例

Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref AmiId
      InstanceType: t3.micro
      MetadataOptions:
        HttpEndpoint: enabled
        HttpTokens: required
        HttpPutResponseHopLimit: 2
        HttpProtocolIpv6: disabled

  MyLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateName: MySecureLaunchTemplate
      LaunchTemplateData:
        ImageId: !Ref AmiId
        InstanceType: t3.micro
        MetadataOptions:
          HttpEndpoint: enabled
          HttpTokens: required
          HttpPutResponseHopLimit: 2
          HttpProtocolIpv6: disabled

参考資料