Offengelegter Docker-Daemon

Offengelegter Docker-Daemon

Ein Docker-Daemon, der im Netzwerk antwortet, ist Remote Root.

Was ist Offengelegter Docker-Daemon?

Die Docker-API ist Root-äquivalent und verfügt über keine eigene Authentifizierung. Ein an einen einfachen TCP-Port gebundener Daemon ermöglicht es jedem, der ihn erreichen kann, Container zu starten, das Host-Dateisystem zu mounten und die Maschine zu lesen. Es liegt keine Schwachstelle vor. Sie prüfen Port 2375 ohne Authentifizierung von außen, listen Produktionscontainer auf und mounten den Host-Root per Bind-Mount, um seine Umgebungsdatei zu lesen. Dann entfernen Sie die tcp://0.0.0.0:2375-Bindung, erfordern TLS-Client-Zertifikate und sehen, dass derselbe Prüfpunkt abgelehnt wurde. Die Übung behandelt auch das Mounten von /var/run/docker.sock in einen Container.

Was Sie lernen in Offengelegter Docker-Daemon

Offengelegter Docker-Daemon — Trainingsschritte

  1. Die öffentliche Statusseite lesen

    Bob ist in nichts eingedrungen. Er sitzt an seinem eigenen Laptop und liest Pallistons öffentliche Betriebsseite. Sie soll Kunden versichern, dass die Plattform funktionsfähig ist, und nennt dabei die Produktions-Knoten, deren öffentliche IPs und die Docker-Engine, die jeder von ihnen ausführt. Sieh dir an, was sie preisgibt, bevor Bob es sich zunutze macht.

  2. Die Zeile, die zu viel verrät

    Es braucht nur eine Zeile. Die öffentliche IP eines Produktions-Knotens und die Tatsache, dass er Docker ausführt, sind alles, was Bob für den billigsten Angriff überhaupt braucht.

  3. Beim Daemon anklopfen

    Der Docker-Daemon kann so konfiguriert werden, dass er an einem Netzwerk-Port lauscht statt nur am lokalen Socket. Ist das der Fall und TLS ist deaktiviert, antwortet er jedem. Bob richtet seine eigene Docker-CLI auf Port 2375 dieses Knotens und stellt ihm die harmloseste Frage überhaupt: welche Version bist du. Wenn er antwortet, ist das Spiel bereits vorbei.

  4. Die Produktionsflotte auslesen

    Die Docker-API ist keine schmale Sache. Sie listet, startet, stoppt und baut Container, und all das als root. Bobs erster Zug damit ist einfach hinzusehen: Was läuft auf diesem Host eigentlich.

  5. Den Host einbinden, die Secrets stehlen

    Bob muss nicht in die laufenden Container einbrechen. Der Daemon startet ihm einen brandneuen, und der bindet ein, was auch immer Bob verlangt. Er fordert das gesamte Root-Dateisystem des Hosts unter /host an und liest dann die Produktions-Umgebungsdatei direkt durch den Mount. Der Container gehört ihm. Der Host liegt darunter. Es gab nie eine Wand zwischen den beiden.

  6. Was das möglich gemacht hat

    Ein kurzer Moment beim Mechanismus, bevor die Reaktion beginnt.

  7. Der Daemon protokolliert einen Fremden

    Palliston versendet seine Docker-Daemon-Logs an einen zentralen Collector. Es braucht kein Intrusion-Detection-Produkt, um zu bemerken, was da auftauchte: API-Aufrufe an den Daemon auf ops-node-01, von einer IP, die niemandem bei Palliston gehört.

  8. Bestätigen, dass die Tür offen ist

    Bevor sie etwas ändert, reproduziert Alice, was die Logs beschreiben. Wenn eine nicht authentifizierte Versionsabfrage von ihrer eigenen Maschine aus beantwortet wird, ist der Daemon genau so offengelegt, wie Priya befürchtet hat.

  9. Die Daemon-Konfiguration öffnen

    Das Verhalten des Daemons wird in einer einzigen Datei festgelegt, /etc/docker/daemon.json. Was auch immer ihn angewiesen hat, ohne TLS am Netzwerk zu lauschen, ist eine Zeile hier drin.

  10. Finde heraus, was den Port geöffnet hat

    Zwei Einstellungen, direkt nebeneinander, sind die gesamte Offenlegung. Die eine bringt die API ans Netzwerk; die andere weist sie an, nicht zu prüfen, wer anruft.

Abdeckung der Sicherheits-Frameworks

CWE

  • CWE-306 Missing Authentication for Critical Function
  • CWE-284 Improper Access Control

MITRE ATT&CK

  • T1610 Deploy Container
  • T1133 External Remote Services

CIS Controls

  • CIS 4 Secure Configuration of Enterprise Assets and Software
  • CIS 6 Access Control Management

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
  • PR.PS Platform Security
  • PR.AA Identity Management, Authentication, and Access Control