Fallstudie / DevSecOps

Terraform-State- und CI/CD-Angriffslab

Terraform · LocalStack · Docker · AWS S3 · IAM · SSM

Überblick

Terraform-State und CI/CD-Pipelines sind ein beliebtes Ziel: Im State liegen Secrets im Klartext, Pipelines haben oft zu weitreichende Rechte, und ein gelöschter State lässt sich ohne Versionierung nicht wiederherstellen. Das Lab zeigt diese Kette von Anfang bis Ende und stoppt sie danach Schritt für Schritt.

Ansatz

Ein kleiner Online-Shop („Acme Shop“) wird von einer kompromittierten Pipeline ausgerollt. Das Lab spielt die Angriffskette in vier Akten durch und wendet danach die Gegenmaßnahmen an.

  1. Akt 1 / State-Leak

    Geleakte Entwickler-Zugangsdaten lesen den State aus dem S3-Backend, und das Datenbankpasswort steht im Klartext darin. Gegenmaßnahme: Secrets als write-only-Argumente (value_wo), sodass sie nie im State landen.

  2. Akt 2 / Rogue-Modul

    Ein harmlos wirkendes Pull Request fügt ein Modul hinzu, das die Secrets bei jedem Pipeline-Lauf an einen Angreifer sendet. Gegenmaßnahme: das Merge-Gate; der gehärtete Zweig enthält das Modul nicht, und die Prüfung stellt sicher, dass der Exfiltrations-Log unverändert bleibt.

  3. Akt 3 / Lateral Movement

    Die Deploy-Rolle erlaubt jede Aktion auf jeder Ressource; der Angreifer übernimmt sie und liest die Produktionsparameter. Gegenmaßnahme: eine Rolle mit genau den Rechten, die ein Deployment braucht.

  4. Akt 4 / State-Sabotage

    Der Angreifer löscht das State-Objekt, und ohne Versionierung ist das endgültig. Gegenmaßnahme: S3-Versionierung; der Löschvorgang hinterlässt nur einen Delete-Marker, und der State wird Byte für Byte wiederhergestellt.

Architekturentscheidungen

Die drei wichtigsten Entscheidungen (ADRs) dieses Projekts.

Links