AWS MWAA 执行角色账户通配符漏洞

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

漏洞

MWAA 的执行角色(Airflow workers 用来访问 AWS 资源的 IAM role)需要以下强制策略才能正常工作:

{
"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 —— 调度器无法为 workers 排队任务。

Documentation Verifying Vuln and Acknowledging Vectorr: AWS Documentation

利用

所有 Airflow DAGs 都以执行角色的权限运行。DAGs 是可以执行任意代码的 Python 脚本 —— 它们可以使用 yumcurl 安装工具、下载恶意脚本或导入任意 Python 库。DAGs 从分配的 S3 文件夹被拉取并按计划自动运行,攻击者所需的只是能够对该 bucket 路径执行 PUT

任何能够写入 DAGs 的人(通常是大多数 MWAA 环境中的用户)都可以滥用此权限:

  1. Data Exfiltration: 在外部账户中创建一个名为 airflow-celery-exfil 的 queue,编写一个 DAG 通过 boto3 将敏感数据发送到该队列
  2. Command & Control: 从外部队列轮询命令、执行并返回结果 —— 通过 SQS APIs 创建一个持久后门
  3. Cross-Account Attacks: 如果其他组织遵循相同命名模式,向它们的队列注入恶意消息

所有攻击都绕过网络控制,因为它们使用 AWS APIs,而不是直接的互联网连接。

影响

这是 MWAA 的一个架构缺陷,无法通过基于 IAM 的方式缓解。每个按照 AWS 文档部署的 MWAA 环境都存在此漏洞。

Network Control Bypass: 即使在没有互联网访问的私有 VPCs 中,这些攻击也能奏效。SQS API 调用使用 AWS 的内部网络和 VPC endpoints,完全绕过传统的网络安全控制、防火墙和出口监控。组织无法通过网络级别控制检测或阻止这一 data exfiltration 通路。

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks