-
AWS EC2 IMDSv1 취약점과 IMDSv2 보안 강화 소개IT/Cloud 2025. 5. 16. 23:44반응형
서론
AWS EC2 인스턴스는 내부 메타데이터 서비스(IMDS)를 통해 인스턴스 정보를 쉽게 조회할 수 있습니다. 이 서비스는 인스턴스 ID, IAM 역할 자격증명 등 중요한 정보를 제공합니다. 하지만 초기 버전인 IMDSv1은 보안상 치명적인 취약점을 내포하고 있어 공격자가 이를 악용할 수 있었습니다. 이번 글에서는 IMDSv1의 취약점 시연 사례와, 이를 보완한 IMDSv2의 주요 특징 및 적용 방법을 자세히 살펴보겠습니다.
IMDS란 무엇인가?
- IMDS (Instance Metadata Service) 는 AWS EC2 인스턴스 내부에서 인스턴스 관련 메타데이터를 조회하는 HTTP 서비스입니다.
- 주소는
http://169.254.169.254/latest/meta-data/
로 고정되어 있습니다. - 여기서 인스턴스 ID, AMI ID, IAM 역할 정보 등 다양한 정보를 조회할 수 있습니다.
서비스 영향에 대한 부분
IMDS 영향도 점검 대상 영역
- EC2 인스턴스 내 사용자 스크립트 (bash, python 등에서 IMDSv1 방식으로 직접 접근하는 코드)
- 애플리케이션 코드 (예: IAM 역할 크리덴셜을 IMDS에서 직접 가져오는 코드)
- EC2에 설치된 AWS 에이전트/데몬
- SSM Agent
- CloudWatch Agent
- Inspector Agent 등 (대부분 최신 버전은 IMDSv2 지원)
- AWS SDK/CLI를 사용하는 툴이나 라이브러리 (IMDS 접근 시 내부적으로 사용)
서비스(외부 서비스나 네트워크 인프라) 부분은 보통 IMDS와 직접 관련이 없으니 영향도 점검 대상이 아닙니다.
예를 들어, 로드밸런서, RDS, VPC 등 외부 서비스는 IMDS를 호출하지 않습니다.
IMDS는 오직 EC2 인스턴스 내부에서만 접근 가능합니다.
IMDSv1의 취약점: SSRF 공격 시나리오
1. 문제의 핵심
IMDSv1는 HTTP GET 요청만으로 메타데이터를 조회할 수 있어, 별도의 인증 절차가 없습니다.
이 때문에 내부 서비스가 SSRF(Server-Side Request Forgery) 취약점을 갖고 있다면, 공격자가 IMDS에 접근해 민감한 IAM 임시 자격증명을 탈취할 수 있습니다.2. SSRF 공격 시연 사례
- 공격자는 취약한 웹 애플리케이션에 다음과 같이 요청합니다:
http://vulnerable-app.local/proxy?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/
- 메타데이터 서비스가 반환하는 IAM 역할 이름과 임시 자격증명을 획득
- 이 정보를 이용해 AWS API에 인증된 호출을 할 수 있습니다.
3. 실습용 명령어 예시
# IAM 역할 이름 조회 curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ # 임시 자격증명 조회 curl http://169.254.169.254/latest/meta-data/iam/security-credentials/RoleName
※
RoleName
은 앞에서 조회한 실제 IAM 역할 이름으로 교체해야 합니다.IMDSv1 취약점이 가져온 위험
- 탈취된 IAM 임시 자격증명으로 인해 EC2 인스턴스 권한 범위 내에서 AWS 자원에 대한 무단 접근, 조작 가능
- 기업 데이터 유출, 인프라 손상, 금전적 피해까지 이어질 수 있는 심각한 보안 위협
IMDSv2: 보안 강화의 시작
AWS는 IMDSv1의 보안 취약점을 보완하기 위해 IMDSv2를 도입했습니다.
IMDSv2 주요 특징
- 토큰 기반 인증
최초에PUT
요청으로 토큰을 발급받고, 이후 메타데이터 요청 시 토큰을 반드시 헤더에 포함해야 함 - SSRF 공격 완화
토큰 발급 절차가 있어 단순 SSRF 공격으로는 메타데이터 접근 불가 - 선택적 또는 필수 적용 가능
EC2 인스턴스 메타데이터 옵션에서 IMDSv2만 허용하도록 설정 가능
IMDSv2 적용 방법
aws ec2 modify-instance-metadata-options \ --instance-id i-xxxxxxxxxxxxxxxxx \ --http-tokens required \ --http-endpoint enabled
http-tokens required
설정 시 IMDSv2 토큰 없이는 메타데이터 접근이 차단됩니다.
마무리 및 권장 사항
- 즉시 IMDSv2 적용을 권장합니다.
- 내부 애플리케이션에서 IMDS 호출이 있다면 반드시 IMDSv2 방식으로 변경해야 합니다.
- SSRF 취약점 제거와 IAM 역할 최소 권한 원칙도 병행해야 합니다.
반응형'IT > Cloud' 카테고리의 다른 글
Grafana 12 New features (3) 2025.05.14 Grafana 버전별 주요 기능 소개 (0) 2025.05.14 구글, AI 에이전트 시대의 시작: A2A 프로토콜과 새로운 생태계 (1) 2025.05.09 Pearson vue network error 뜨시면 (0) 2025.03.14 EKS Pod Identity 완벽 가이드: IRSA를 대체하는 새로운 방식 (0) 2024.12.21