0. IMDS(Instance Metadata Service)
EC2 인스턴스의 메타데이터에 접근할 수 있는 서비스로 인스턴스 자체 혹은 내부에서 실행되는 애플리케이션과 AWS 또는 모니터링 도구간의 상호작용을 돕는 역할을 합니다.
IMDS를 통해 다음과 같은 정보를 얻을 수 있습니다.
- 인스턴스 메타데이터: 인스턴스 유형, IP 주소, 보안그룹 등
- IAM 역할 및 권한: 인스턴스에 할당된 IAM 역할 및 권한
- 보안 정보: 암호화된 볼륨 사용 여부, 키 페어 사용 여부 등
IMDS v1의 가장 큰 위험은 공격자가 EC2에 할당된 IAM 권한을 취득해 활용할 수 있다는 점입니다. 설령 IAM이 할당되어 있지 않다 하더라도 상술한 것과 같이 상당히 많은 유용한 정보를 획득하여 이를 공격에 활용할 수 있습니다.
1. IMDS 취약점 살펴보기
인스턴스 내부 또는 EKS Pod에서 실행되는 애플리케이션에서 curl을 활용해 IMDS api를 호출할 수 있습니다.
curl http://169.254.169.254/latest/meta-data/
간단한 확인을 위해 인스턴스에서 IMDS를 확인해보면 IAM 권한을 비롯한 다양한 정보를 확인할 수 있습니다.
IMDS를 활용한 공격 시나리오를 잘 설명한 블로그(링크)가 있어 참고하면 좋을 것 같습니다.
2. 취약점 조치 방법
가장 단순한 방법은 IMDS v1을 v2로 변경하는 방법입니다. 그러나 근본적인 위험을 해결하기 위해서는 EC2에 IAM 권한을 최소화하여 할당하거나 IRSA를 적용하는 방법을 고려할 수 있습니다. 또한 IaC를 사용해 인프라를 운영하는 경우 IMDS v2 설정을 강제화하도록 프로세스를 개선해야 합니다.
IMDS v1으로 설정된 인스턴스를 확인해 v2로 변경하는 파이썬 도구를 깃헙(링크)에 올려두었습니다. aws configure 설정 후 다음과 같이 AWS Profile과 리전을 입력하면 자동으로 IMDS v1을 v2로 변경하고 해당 인스턴스 ID를 출력합니다.
python3 check_imds.py --profile [profile_name] --region [region_name]
'AWS' 카테고리의 다른 글
AWS Private subnet에 ALB 구성 (0) | 2023.03.16 |
---|---|
AWS Bastion Host 및 NAT Gateway 구성 (0) | 2023.03.16 |
AWS ALB를 통한 이중화 구성 (0) | 2023.03.16 |
AWS EFS 파일시스템 구성 (0) | 2023.03.16 |
AWS 커스텀 AMI 생성 (0) | 2023.03.16 |