Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws

This commit is contained in:
Translator
2025-10-23 21:53:30 +00:00
parent e189058c87
commit 5fade8d3d5

View File

@@ -0,0 +1,42 @@
# AWS MWAA Execution Role Account 와일드카드 취약점
## 취약점
MWAA의 execution role (Airflow workers가 AWS 리소스에 접근하기 위해 사용하는 IAM role)은 작동하기 위해 다음의 필수 policy가 필요합니다:
```json
{
"Effect": "Allow",
"Action": [
"sqs:ChangeMessageVisibility",
"sqs:DeleteMessage",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl",
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Resource": "arn:aws:sqs:us-east-1:*:airflow-celery-*"
}
```
The wildcard (`*`) in the account ID position allows the role to interact with **any SQS queue in any AWS account** that starts with `airflow-celery-`. This is required because AWS provisions MWAA's internal queues in a separate AWS-managed account. There is no restriction on making queues with the `airflow-celery-` prefix.
**수정 불가:** 배포 전에 와일드카드를 제거하면 MWAA가 완전히 작동을 멈춥니다 — 스케줄러가 워커에 작업을 큐잉할 수 없습니다.
취약점 확인 및 벡터 인정 문서: [AWS Documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html)
## 악용
모든 Airflow DAGs는 execution role의 권한으로 실행됩니다. DAGs는 임의 코드를 실행할 수 있는 Python 스크립트입니다 — `yum`이나 `curl`을 사용해 도구를 설치하거나 악성 스크립트를 다운로드하거나 어떤 Python 라이브러리든 임포트할 수 있습니다. DAGs는 할당된 S3 폴더에서 가져와 스케줄에 따라 자동으로 실행되므로, 공격자는 해당 버킷 경로에 PUT할 수 있는 권한만 있으면 됩니다.
DAGs를 쓸 수 있는 사람(보통 MWAA 환경의 대부분 사용자)은 이 권한을 악용할 수 있습니다:
1. **Data Exfiltration**: 외부 계정에 `airflow-celery-exfil`라는 큐를 생성하고, `boto3`를 통해 민감한 데이터를 전송하는 DAG를 작성
2. **Command & Control**: 외부 큐에서 명령을 폴링하여 실행하고 결과를 반환 — SQS APIs를 통해 지속적인 백도어 생성
3. **Cross-Account Attacks**: 다른 조직의 큐가 이 명명 패턴을 따를 경우 악성 메시지를 주입
모든 공격은 직접적인 인터넷 연결이 아니라 AWS APIs를 사용하므로 네트워크 제어를 우회합니다.
## 영향
이는 MWAA의 아키텍처적 결함으로 IAM 기반의 완화책이 없습니다. AWS 문서를 따르는 모든 MWAA 배포는 이 취약점을 가지고 있습니다.
**네트워크 제어 우회:** 이 공격들은 인터넷 접근이 없는 프라이빗 VPC에서도 작동합니다. SQS API 호출은 AWS의 내부 네트워크와 VPC 엔드포인트를 사용하여 전통적인 네트워크 보안 제어, 방화벽, 아웃바운드 모니터링을 완전히 우회합니다. 조직은 네트워크 수준의 제어만으로는 이 data exfiltration 경로를 탐지하거나 차단할 수 없습니다.