설명
IMDSv1은 세션 토큰 없이 인스턴스 메타데이터에 접근하므로 SSRF 같은 공격에 악용될 수 있습니다. 메타데이터 엔드포인트가 켜져 있을 때 http_tokens = "optional"은 IMDSv1도 허용합니다. 옵션을 생략하면 계정 및 AMI 설정의 영향을 받으므로 실제 적용값을 확인해야 합니다.
잠재적 영향
- 취약한 애플리케이션을 통해 메타데이터나 역할의 임시 자격 증명이 노출될 수 있습니다.
- 탈취한 자격 증명이 인스턴스 프로파일 권한 범위에서 악용될 수 있습니다.
해결 방법
SDK, 초기화 스크립트와 컨테이너의 호환성을 확인한 뒤 필요한 메타데이터 접근에 http_tokens = "required"를 설정하세요. 메타데이터가 필요 없다면 엔드포인트 비활성화를 검토하세요. IMDSv2와 함께 SSRF 원인을 수정하고 역할 권한도 최소화하세요.
예시
메타데이터 옵션 비교입니다. AMI는 대상 리전에서 유효한 값으로 바꾸고, 런치 템플릿과 Auto Scaling의 설정도 함께 확인하세요.
변경 전
hcl
resource "aws_instance" "example" {
ami = "ami-12345678"
instance_type = "t2.micro"
metadata_options {
http_tokens = "optional"
}
}
변경 후
hcl
resource "aws_instance" "example" {
ami = "ami-12345678"
instance_type = "t2.micro"
metadata_options {
http_endpoint = "enabled"
http_tokens = "required"
}
}
첫 설정은 엔드포인트가 활성화된 경우 IMDSv1을 허용합니다. 두 번째는 엔드포인트를 켜고 IMDSv2 토큰을 요구합니다. 이 변경만으로 모든 SSRF 공격을 막는 것은 아닙니다.