Minimale Container-Images

Minimale Container-Images

Jedes mitgelieferte Tool steht auch einem Angreifer zur Verfügung.

Was ist Minimale Container-Images?

Ein Produktions-Image mit Paketmanager, Compiler, Shell und Netzwerk-Tools gibt einem Angreifer nach einer begrenzten Schwachstelle ein vollständiges Toolkit an die Hand. Er muss nichts mitbringen: Die Tools sind schon vorhanden. Sie nutzen die Befehlsausführung im Checkout-Dienst, finden curl und lesen die Instanzrollen-Zugangsdaten vom Metadatendienst unter 169.254.169.254. Danach trennen Sie den Build in zwei Stufen, kopieren nur das gebaute Artefakt in ein abschließendes Distroless-Image und prüfen, dass sich im neu bereitgestellten Container mangels Shell keine öffnen lässt.

Was Sie lernen in Minimale Container-Images

Minimale Container-Images — Trainingsschritte

  1. Ein erster Zugang im Checkout-Dienst

    Bob does not start with a shell. The checkout service renders PDF shipping labels from a template, and one field in that request is evaluated as template code instead of text. He injects a probe to confirm he can run a command, and to see who and where he is.

  2. Alles, was das Image mitbringt

    Bob kann über die Anwendung jeweils nur einen Befehl ausführen; eine dauerhafte Shell-Sitzung hat er noch nicht. Ohne zusätzliche Tools wäre das eine enge Grenze. Er prüft daher zuerst, welche Programme der Container bereits enthält.

  3. Cloud-Zugangsdaten mit curl abrufen

    The container runs in the cloud, and every cloud instance exposes a metadata service on a fixed internal address that hands out the machine's temporary role credentials. Reaching it needs an HTTP client. The image shipped one. Bob's access to the app was tightly limited.

  4. Wie ein Befehl zu einem Sicherheitsvorfall wurde

  5. Eine Shell in einem Runtime-Container

    Skelwyn überwacht seine Container-Hosts mit Endpoint Detection. Das System kennt den Zweck der einzelnen Container nicht, erkennt aber Verhalten, das für einen Laufzeitcontainer ungewöhnlich ist.

  6. Die mitgelieferten Tools prüfen

    Alice stellt Bobs Befund nach und prüft, welche dieser Tools der laufende Container enthält.

  7. Eine 412-MB-Laufzeitumgebung

    Die Tools vergrößern das Image und seine Angriffsfläche. Alice prüft die Größe des Images, das der Dienst tatsächlich ausführt.

  8. Woher die zusätzlichen Tools kommen

    Das Image wird aus einem einzigen Dockerfile gebaut. Alice öffnet es und prüft, warum der Laufzeitcontainer einen Compiler enthält.

  9. Eine Build-Stufe für alles

    Build und Ausführung erfolgen in derselben Stufe. Daher enthält das Laufzeit-Image auch alle Tools, die nur für den Build gebraucht werden.

  10. Build und Laufzeit trennen

    Die Lösung ist ein mehrstufiger Build: Die vollständige Toolchain bleibt in einer Build-Stufe, in der die Anwendung gebaut wird. In das abschließende Distroless-Image kommen nur die fertige Anwendung und ihre Laufzeitabhängigkeiten – ohne Shell, Paketmanager oder Compiler.

Abdeckung der Sicherheits-Frameworks

CWE

  • CWE-1188 Initialization of a Resource with an Insecure Default

CIS Controls

  • CIS 2 Inventory and Control of Software Assets
  • CIS 4 Secure Configuration of Enterprise Assets and Software

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • ID.AM Asset Management
  • PR.PS Platform Security