Heim >Betrieb und Instandhaltung >Docker >Was ist Docker-Container-Escape?

Was ist Docker-Container-Escape?

WBOY
WBOYOriginal
2022-07-25 17:13:574134Durchsuche

Docker-Container-Escape bezieht sich auf den Prozess und das Ergebnis, bei dem der Angreifer die Fähigkeit zur Befehlsausführung unter bestimmten Berechtigungen im Container erlangt hat, indem er die Geschäftslogik des Containers oder die direkte Kontrolle übernommen hat. Da Docker Isolationstechnologie verwendet, ist das Innere des Containers der Prozess Der äußere Prozess kann nicht gesehen werden, aber der äußere Prozess kann nach innen sehen. Wenn ein Container also auf externe Ressourcen zugreifen oder sogar die Berechtigungen des Hosts erhalten kann, wird dies als „Docker-Escape“ bezeichnet.

Was ist Docker-Container-Escape?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.

Was ist Docker-Container-Escape?

„Container-Escape“ bezieht sich auf einen solchen Prozess und ein solches Ergebnis. Durch andere Methoden wurde die Fähigkeit zur Befehlsausführung unter bestimmten Berechtigungen im Container erlangt. Der Angreifer nutzt diese Fähigkeit zur Befehlsausführung und verwendet einige Mittel, um weiter an den direkten Host-Computer zu gelangen, auf dem sich der Container befindet (was oft beobachtet wird). „Eine physische Maschine führt eine virtuelle Maschine aus“, die virtuelle Maschine führt dann den Container aus. In diesem Szenario bezieht sich der direkte Host auf die Fähigkeit zur Befehlsausführung unter bestimmten Berechtigungen auf der virtuellen Maschine außerhalb des Containers.

Da Docker Isolationstechnologie verwendet, kann der Prozess im Container den externen Prozess nicht sehen, der externe Prozess jedoch das Innere. Wenn ein Container also auf externe Ressourcen zugreifen kann, kann er sogar die Berechtigungen des Host-Hosts erhalten namens „Docker Escape“.

Es gibt derzeit drei Gründe für das Entkommen von Docker:

  • verursacht durch Kernel-Schwachstellen.

  • Verursacht durch Docker-Softwaredesign.

  • Verursacht durch privilegierten Modus und falsche Konfiguration.

  • Im Folgenden finden Sie eine kurze Erläuterung dieser drei Fluchtmethoden.

1. Escape aufgrund einer Kernel-Sicherheitslücke

Da Docker ein direkt gemeinsam genutzter Host-Host-Kernel ist, wirkt sich eine Sicherheitslücke im Host-Host-Kernel auch auf die Sicherheit von Docker aus, was dazu führen kann, dass Docker entkommt . Der spezifische Prozess ist wie folgt:

    Verwenden Sie eine Kernel-Schwachstelle, um in den Kernel-Kontext einzutreten.
  • Rufen Sie die Aufgabenstruktur des aktuellen Prozesses ab.
  • Verfolgen Sie die Aufgabenliste zurück, um die Aufgabenstruktur mit pid = 1 zu erhalten. Kopieren Sie die zugehörigen Daten.
  • Wechseln Sie den aktuellen Namespace. Öffne die Root-Shell und vervollständige den Escape. ---runc. Runc war im Februar 2019 einer Docker-Escape-Schwachstelle CVE-2019-5736 ausgesetzt. Das Prinzip der Sicherheitsanfälligkeit besteht darin, dass Docker, Containerd oder andere Runc-basierte Programme zur Laufzeit anfällig für Sicherheitslücken sind. Ein Angreifer kann das Dateihandle erhalten, wenn der Host-Runc die Datei über ein bestimmtes Container-Image oder eine Exec-Operation ausführt, und den Runc ändern Binärdatei, wodurch die Root-Ausführungsberechtigung des Host-Computers erhalten wird, was dazu führt, dass Docker entkommt.
  • 3. Escape durch privilegierten Modus + Verzeichnismontage
  • Diese Escape-Methode wird häufiger verwendet als die anderen beiden. Der privilegierte Modus wurde in Version 6.0 für Docker eingeführt. Seine Kernfunktion besteht darin, dem Root im Container Root-Berechtigungen auf der externen physischen Maschine zu gewähren .

  • Nach dem Starten des Containers im privilegierten Modus (docker run --privileged) darf der Docker-Container auf alle Geräte auf dem Host zugreifen, Zugriffsrechte auf eine große Anzahl von Gerätedateien erhalten und den Mount-Befehl zum Mounten ausführen.

Bei der Steuerung eines Containers im privilegierten Modus kann der Docker-Administrator das externe Host-Festplattengerät über den Mount-Befehl in den Container einbinden, um Lese- und Schreibberechtigungen für Dateien für den gesamten Host zu erhalten. Darüber hinaus kann er auch geplante Aufgaben usw. schreiben . Die Methode führt den Befehl auf dem Host-Computer aus. Zusätzlich zur Verwendung des privilegierten Modus zum Starten von Docker, der dazu führt, dass Docker entkommt, führt die Verwendung funktionaler Mechanismen auch dazu, dass Docker entkommt. Der Linux-Kernel hat seit Version 2.2 Funktionen (Capabilities) eingeführt, die die Konzepte von Superuser und normalen Benutzern in UNIX/LINUX-Betriebssystemen durchbrechen und es normalen Benutzern ermöglichen, Befehle auszuführen, die nur mit Superuser-Berechtigungen ausgeführt werden können. Wenn der Container beispielsweise mit --cap-add=SYSADMIN gestartet wird, darf der Containerprozess eine Reihe von Systemverwaltungsbefehlen wie mount und umount ausführen, wenn der Angreifer zu diesem Zeitpunkt das externe Geräteverzeichnis im Container bereitstellt , Docker-Escape wird stattfinden.

Empfohlenes Lernen: „

Docker-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist Docker-Container-Escape?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn