Aus Linux-Magazin 09/2014

Insecurity-Bulletin: Ausbruch aus Docker-Containern

Das Tool Docker betreibt Ressourcen-schonende Virtualisierung innerhalb des Betriebssystems. Die so erzeugten Container sind aber nicht ausbruchsicher, wie ein Exploit im Juni gezeigt hat.

Das Open-Source-WerkzeugDocker [1] erfreut sich derzeit großer Beliebtheit. Mit Cgroups und LXC separiert es Dateien und Prozesse eines Anwendungscontainers vom Rest des Systems. Mit dieser Schmalspurvirtualisierung lassen sich insbesondere Entwickler- und Testsysteme leicht aufsetzen und verteilen.

Ein Proof-of-Concept-Exploit des Openwall-Entwicklers Sebastian Krahmer zeigte Mitte Juni, dass Docker das Hostsystem nicht wirkungsvoll gegen Programme im Container abschirmt. Das C-Programm namens Shocker [2] kann beliebige Dateien auf dem Host lesen. Standardmäßig gibt es den Inhalt von »/etc/shadow« aus, das normalerweise nur Root lesen kann (Abbildung 1).

Abbildung 1: Der Shocker-Exploit liest die Shadow-Datei des Hosts.

Abbildung 1: Der Shocker-Exploit liest die Shadow-Datei des Hosts.

Capabilities

Im angreifbaren Docker 0.11 laufen die Programme innerhalb des Containers mit den Linux-Capabilities »CAP_DAC_OVERRIDE« und »CAP_DAC_READ_SEARCH« [3]. Diese erlauben es Prozessen, die Prüfung von Berechtigungen beim Dateizugriff zu umgehen. Container und Host teilen sich die C-Struktur für das Dateisystem, doch wegen des von Docker verwendeten Bind-Mounts können sie auf Dateien nicht per Pfad zugreifen.

Aber die Capability »CAP_DAC_READ_SEARCH« erlaubt es Shocker, den Systemaufruf »open_by_handle_at()« zu verwenden. Damit kann das Programm Dateien anhand ihres Filehandle öffnen. Das Handle von »/« ist stets 2 und damit bekannt. Nun hangelt sich Shocker durch den Verzeichnisbaum des Hosts, bis es bei der gewünschten Datei ankommt und sie ausgibt. Ähnlich ließe sich auch ein Chroot austricksen.

Krahmer sandte seine Entdeckung an die Openwall-Mailingliste OSS-Security [4]. Dort sorgte sie für unterschiedliche Reaktionen. Manche wollten schon eine CVE-Kennung beantragen. Red Hats SE-Linux-Mann Dan Walsh dagegen wies darauf hin, dass Docker nicht als Security-Sandbox gedacht sei: “Warum sollte man das als Problem sehen? Container halten nicht dicht.” Wer eine abgesicherte Umgebung brauche, müsse zu Techniken für die Mandatory Access Control (MAC) greifen, etwa zu SE Linux.

Loch gestopft

In der derzeit stabilen Docker-Version 1.0 erhalten Prozesse innerhalb des Containers keine »CAP_DAC_READ_SEARCH« -Capability mehr. Damit ist der beschriebene Angriff nicht mehr möglich.

Infos

  1. Rob Knight, “Volle Ladung”: Linux-Magazin 08/13, S. 64
  2. Shocker: http://stealth.openwall.net/xSports/shocker.c
  3. Linux-Capabilities: http://man7.org/linux/man-pages/man7/capabilities.7.html
  4. Sebastian Krahmers Mail: http://seclists.org/oss-sec/2014/q2/565
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben