So überprüfen Sie den Inhalt eines Docker-Images, ohne einen Container zu starten

0
258

Docker-Images können beliebige Binärdateien und Bibliotheken in einem einzigen Datenblob bündeln. Wenn Sie sich ansehen, was sich tatsächlich in einem Bild befindet, können Sie seine Eignung beurteilen und Sicherheitsrisiken erkennen.

Der einfachste Weg, den Inhalt eines Bildes zu erkunden, besteht darin, einen Container zu starten, eine Shell-Sitzung zu starten und dann normale Terminalbefehle wie ls und cd zu verwenden, um die Verzeichnisstruktur von innen anzuzeigen. Dies ist jedoch in sicherheitskritischen Umgebungen nicht ideal – Das Erstellen eines Containers mit einem unbekannten Image könnte Sie einem bösartigen Einstiegsskript aussetzen.

Hier sind Techniken, mit denen Sie die Dateien eines Images überprüfen können, ohne einen Container zu starten.

Erstellen eines Containers ohne ihn zu starten

docker create ist ein weniger bekanntes Gegenstück zu docker run. Es erstellt einen neuen Container über einem bestimmten Image, ohne es zu starten. Sie können es später mit dem Befehl docker start starten.

Das Erstellen eines neuen Containers ist nicht gefährlich, da er bis zur Ausführung inaktiv bleibt. Sie können es grob mit dem Definieren der Konfigurationseinstellungen für eine VM vergleichen, die Sie nicht verwenden. Selbst wenn es so eingestellt ist, dass es von einem fehlerhaften Betriebssystem-ISO bootet, werden Sie Ihrer Umgebung keinen Schaden zufügen.

docker create –name Suspect-Container Suspect-Image:latest Advertisement

Der obige Befehl erstellt einen neuen Container namens Suspect-Container, der auf dem Suspect-Image:latest Image basiert.

Exportieren des Dateisystems des Containers

Jetzt haben Sie einen gültigen, aber gestoppten Container. Sie können sein Dateisystem mit dem Befehl docker export exportieren. Da der Container noch nie gestartet wurde, können Sie sicher sein, dass der Export das von den Ebenen Ihres Bildes definierte Dateisystem genau wiedergibt.

docker export Suspect-Container > Suspect-Container.tar

Am Ende erhalten Sie ein tar-Archiv in Ihrem Arbeitsverzeichnis, das alles in Ihrem Image enthält. Öffnen oder extrahieren Sie dieses Archiv mit Ihrer bevorzugten Software, um die Verzeichnisse des Bildes zu durchsuchen und Dateien aufzulisten und anzuzeigen.

Wenn Sie das Archiv nicht speichern oder öffnen müssen, ziehen Sie es vor, es zu erhalten die Dateiliste in Ihrem Terminal, ändern Sie den tar-Befehl:

docker export Suspect-Container | tar t > Suspect-container-files.txt

tar t listet den Inhalt des Eingabearchivs auf. Am Ende erhalten Sie eine Liste mit allen Inhalten Ihres Bildes in der Datei suspect-container-files.txt.

Verwenden von “Docker-Image-Speichern”

Eine Variante dieser Technik ist die Verwendung von Docker-Image-Speichern. Mit diesem Befehl werden die Daten eines Bildes direkt in einem Tar-Archiv gespeichert.

docker image save suspect-image:latest > Suspect-image.tar-Werbung

Diese Methode erzeugt ein Archiv, das sich auf das Image konzentriert, nicht auf Container, die daraus erstellt wurden. Das tar enthält eine manifest.json-Datei, die die Ebenen des Bildes beschreibt, und eine Reihe von Verzeichnissen, die den Inhalt aller einzelnen Ebenen enthalten.

Dies ist bei der Auswertung hilfreich die Rolle jeder Ebene beim Aufbau des Bildes. Das Erstellen und Exportieren eines gestoppten Containers ist jedoch eine leichter zugängliche Möglichkeit, das endgültige Dateisystem des Bildes zu durchsuchen.

Auflisten von Ebenen mit & #8220;Docker-Image-Verlauf”

Eine andere Möglichkeit, den Inhalt eines Bildes zu überprüfen, besteht darin, seine Ebenenliste mit dem Befehl Docker-Image-Verlauf anzuzeigen.

Docker-Image-Verlauf Suspect-image:latest

Dies macht die Dockerfile-Anweisungen verfügbar, die die Ebenen des Images zusammengestellt haben. Es lässt Sie keine einzelnen Dateien und Verzeichnisse im Dateisystem des Bildes sehen, kann aber effektiver sein, um verdächtiges Verhalten hervorzuheben.

Jede Zeile in der Ausgabe des Befehls steht für ein neue Ebene im Bild. Die “ERSTELLT VON” Spalte zeigt die Dockerfile-Anweisung, die den Layer erstellt hat.

Durch das Scannen der Ebenenliste können Sie schnell verdächtige Aktionen erkennen, die auf Sie hinweisen könnten ein bösartiges Image verwenden. Suchen Sie nach unbekannten Binärdateien in RUN-Anweisungen, unerwarteten Änderungen von Umgebungsvariablen und verdächtigen CMD- und ENTRYPOINT-Anweisungen.

Werbung

Die letzten beiden Ebenen sind wohl die wichtigsten, die bei der Überprüfung des Bildverlaufs zu bewerten sind. Sie sagen Ihnen genau, was gestartet wird, wenn Sie Docker ausführen oder einen Container starten. Wenn eine der Anweisungen verdächtig oder unbekannt aussieht, sollten Sie die oben genannten Techniken verwenden, um die referenzierten Binärdateien oder Skripte vollständig zu überprüfen.

Der Zugriff auf das Dateisystem eines Bildes bietet eine sehr detaillierte Ansicht seines Inhalts, bei der bösartige Inhalte selbst nach manueller Überprüfung leicht unbemerkt bleiben können. Die vom Docker-Image-Verlauf angezeigte Ebenenliste kann Ihnen nicht dabei helfen, getarnte Dateisystemelemente zu finden, ist jedoch effektiver beim Aufdecken offensichtlich bösartiger Vorgänge wie heimlicher Spyware-Downloads oder Überschreibungen von Umgebungsvariablen.

Tools von Drittanbietern

Open-Source-Tools von Drittanbietern sind ebenfalls verfügbar, um Ihnen beim Auflisten des Inhalts von Bildern zu helfen. Diese bieten in der Regel Filterfunktionen, damit Sie installierte Betriebssystempakete, Programmiersprachenabhängigkeiten und normale Dateien schnell auflisten können.

Die Bildprüfung ist in die Container-Scan-Engine von Anchore integriert. Sie können es verwenden, indem Sie nach der Installation von Anchore anchore-cli image content my-image:latest ausführen. Dies bietet eine vollständige Liste der Dateisysteminhalte des Zielimages.

Eine weitere Option ist Dive, ein Tool, das speziell für die Visualisierung von Bildinhalten entwickelt wurde. Es verwendet einen schichtbasierten Ansatz und hebt die Dateisystemänderungen hervor, die mit jeder neuen Schicht vorgenommen wurden. Sie durchsuchen das Dateisystem mithilfe einer baumbasierten interaktiven Terminalansicht.

Fazit

Docker-Images sind zum Zeitpunkt des Konsums normalerweise undurchsichtig. Beliebte Registrys bieten keine Dateiliste in ihren APIs oder Benutzeroberflächen. Diese Funktionalität ist auch nicht in die Docker-CLI integriert. Obwohl viele Entwickler Bilder unverändert verwenden, kann ein ungeprüftes Bild in Umgebungen mit hohem Risiko unerträglich sein.

Werbung

Sie können ein verdächtiges Bild überprüfen, indem Sie es in ein Archiv exportieren und seinen Inhalt durchsuchen. Dies hält das Image inaktiv, verhindert die Ausführung schädlicher Inhalte und bietet gleichzeitig einen vollständigen Überblick über das Dateisystem, das es in einem Container erstellen würde.

Sie können Ihre Sicherheitslage weiter verbessern, indem Sie die manuelle Inhaltserkundung mit automatisierten Images kombinieren scannt. Diese beschleunigen den Prozess der Erkennung bekannter Sicherheitslücken, sind jedoch möglicherweise nicht effektiv beim Auffinden neuer bösartiger Dateien, die an versteckten Orten gespeichert sind. Durch die Verwendung mehrerer Techniken können Sie Ihre Berichterstattung erweitern und die größtmögliche Anzahl verdächtiger Dateien erfassen.