Blootgestelde Docker-daemon

Blootgestelde Docker-daemon

Een Docker-daemon die op het netwerk antwoordt, is een externe root.

Wat is Blootgestelde Docker-daemon?

De Docker API is root-equivalent en heeft geen eigen authenticatie. Met een daemon die aan een gewone TCP-poort is gebonden, kan iedereen die hem kan bereiken containers starten, het hostbestandssysteem aankoppelen en de machine lezen. Er is geen sprake van kwetsbaarheid. Je onderzoekt poort 2375 die van buitenaf niet is geverifieerd, geeft een lijst met productiecontainers en koppelt de hostroot aan om het omgevingsbestand te lezen. Vervolgens verwijdert u de tcp://0.0.0.0:2375-binding, hebt u TLS-clientcertificaten nodig en wordt dezelfde test geweigerd. De oefening behandelt ook het monteren van /var/run/docker.sock in een container.

Wat je leert in Blootgestelde Docker-daemon

Blootgestelde Docker-daemon — Trainingsstappen

  1. De publieke statuspagina lezen

    Bob bevindt zich nergens binnenin. Hij zit op zijn eigen laptop en leest de publieke operations-pagina van Palliston. Die is bedoeld om klanten gerust te stellen dat het platform gezond is, en noemt daarbij de productienodes, hun publieke IP-adressen en de Docker-engine die elk ervan draait. Bekijk wat deze prijsgeeft voordat Bob het gebruikt.

  2. De regel die te veel zegt

    Er is maar één regel voor nodig. Het publieke IP-adres van een productienode en het feit dat deze Docker draait, zijn alles wat Bob nodig heeft om de goedkoopste aanval die er is te proberen.

  3. Aankloppen bij de daemon

    De Docker-daemon kan worden geconfigureerd om te luisteren op een netwerkpoort in plaats van alleen de lokale socket. Als dat zo is, en TLS staat uit, antwoordt hij iedereen. Bob richt zijn eigen Docker CLI op poort 2375 van die node en stelt de meest onschuldige vraag die er is: welke versie ben je. Als hij antwoordt, is het spel al voorbij.

  4. De productievloot uitlezen

    De Docker API is niet iets beperkts. Ze somt containers op, start, stopt en bouwt ze, en doet dat allemaal als root. Bobs eerste zet is simpelweg kijken: wat draait deze host eigenlijk.

  5. De host mounten, de secrets meenemen

    Bob hoeft niet in te breken op de draaiende containers. De daemon start voor hem een gloednieuwe, en mount alles wat hij vraagt. Hij vraagt om het complete root-bestandssysteem van de host op /host, en leest vervolgens het productie-environmentbestand rechtstreeks via de mount. De container is van hem. De host ligt eronder. Er is nooit een muur tussen beide geweest.

  6. Wat dit mogelijk maakte

    Eén moment stilstaan bij het mechanisme voordat de respons begint.

  7. De daemon logt een vreemde

    Palliston stuurt zijn Docker-daemonlogs naar een centrale collector. Er is geen intrusion-detectieproduct nodig om te merken wat er opdook: API-aanroepen naar de daemon op ops-node-01, vanaf een IP-adres dat aan niemand bij Palliston toebehoort.

  8. Bevestig dat de deur openstaat

    Voordat ze iets wijzigt, reproduceert Alice wat de logs beschrijven. Als een ongeauthenticeerde version probe vanaf haar eigen machine antwoord krijgt, is de daemon precies zo blootgesteld als Priya vreesde.

  9. Open de daemonconfiguratie

    Het gedrag van de daemon wordt bepaald in één bestand, /etc/docker/daemon.json. Wat hem ook heeft opgedragen om zonder TLS op het netwerk te luisteren, staat als regel hierin.

  10. Vind wat de poort heeft geopend

    Twee instellingen, naast elkaar, vormen de volledige blootstelling. De ene zet de API op het netwerk; de andere zegt dat hij niet moet controleren wie er belt.

Dekking van beveiligingsframeworks

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