# AWS MWAA Execution Role アカウントワイルドカード脆弱性

{{#include ../../../../banners/hacktricks-training.md}}

## 脆弱性

MWAA's execution role (the IAM role that Airflow workers use to access AWS resources) requires this mandatory policy to function:
```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-*"
}
```
アカウントIDの位置にあるワイルドカード (`*`) により、そのロールは `airflow-celery-` で始まる**任意の AWS アカウント内の任意の SQS キュー**とやり取りできるようになります。これは、AWS が MWAA の内部キューを別の AWS 管理アカウントでプロビジョニングするために必要です。`airflow-celery-` プレフィックスでキューを作成することに制限はありません。

**修正不可:** デプロイ前にワイルドカードを削除すると MWAA が完全に機能しなくなります — スケジューラはワーカーにタスクをキューできなくなります。

脆弱性の検証とベクトルの確認ドキュメント: [AWS Documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html)

## Exploitation

すべての Airflow DAGs は実行ロールの権限で実行されます。DAGs は任意のコードを実行できる Python スクリプトであり、`yum` や `curl` を使ってツールをインストールしたり、悪意のあるスクリプトをダウンロードしたり、任意の Python ライブラリをインポートしたりできます。DAGs は割り当てられた S3 フォルダから取得され、スケジュールに従って自動的に実行されるため、攻撃者はそのバケットパスに PUT できる能力さえあれば十分です。

DAGs を書けるユーザー（通常 MWAA 環境のほとんどのユーザー）なら誰でもこの権限を悪用できます:

1. **Data Exfiltration**: 外部アカウントに `airflow-celery-exfil` というキューを作成し、`boto3` を使って機密データをそこに送信する DAG を書く

2. **Command & Control**: 外部キューからコマンドをポーリングし、それを実行して結果を返す — SQS API を介して持続的なバックドアを作る

3. **Cross-Account Attacks**: 命名パターンに従っている場合、他組織のキューに悪意あるメッセージを注入する

これらの攻撃はすべて直接インターネット接続ではなく AWS API を使用するため、ネットワーク制御をバイパスします。

## Impact

これは MWAA の設計上の欠陥であり、IAM ベースの緩和策はありません。AWS のドキュメントに従ってデプロイされたすべての MWAA 環境がこの脆弱性を抱えています。

**Network Control Bypass:** これらの攻撃はインターネット接続のないプライベート VPC でも機能します。SQS API 呼び出しは AWS の内部ネットワークおよび VPC エンドポイントを利用するため、従来のネットワークセキュリティ制御、ファイアウォール、出口（egress）監視を完全にバイパスします。組織はネットワークレベルの制御でこのデータ流出経路を検出または遮断することができません。
{{#include ../../../../banners/hacktricks-training.md}}
