DOCKERWATCH – THE VIRUSTOTAL FOR CONTAINER IMAGES

Bachelor Studiengang IT Security

Thomas Farfeleder, BSc

Dozent: DI DI Christoph Lang-Muhr, BSc 

Ausgangslage

Die Applikation ist entwickelt, das Dockerfile wurde mit allen Abhängigkeiten erstellt, das Image gebaut und auf der Entwickler Maschine getestet. Nun wird darauf gewartet, dass das CI/CD das Image abholt. Das Präproduktions-Image wird aktualisiert, die Integrationstests bestanden und Funktionstests geben grünes Licht. Ist es nun an der Zeit das Image in die Produktion auszurollen? Nicht so schnell! Container Images bestehen aus mehreren Schichten, wobei jede Schicht die Änderungen gegenüber der vorherigen widerspiegelt. Um die Entwicklungszeit zu verkürzen, wird meist auf bekannte öffentliche Images wie Ubuntu, Alpine oder Debian als Basis zurückgegriffen. Diese beinhalten in ihrer Basis eine Vielzahl an verschiedenen Paketen, die oft bekannte Schwachstellen aufweisen. Diese können in den darüber liegenden Schichten mitigiert werden, dies geschieht jedoch nur sehr selten. Deshalb sollte auch immer nur das notwendigste im Image enthalten sein, da die meisten der Pakete meist nicht im endgültigen Image benötigt werden. Da die aus den Images resultierenden Container selten in einer virtuellen Maschine, sondern direkt am Host und somit mit demselben Kernel laufen, können Schwachstellen im schlimmsten Fall zur Übernahme des Hosts führen. Aufgrund dessen sollten Schwachstellen in Images niemals ignoriert werden. Um den sicheren Einsatz zu gewährleisten, muss jedoch erst das Wissen vorherrschen, welche Schwachstellen ein bestimmtes Image überhaupt enthält. Dafür haben sich mittlerweile verschiedene Schwachstellen Scanner am Markt etabliert, die genau diese Informationen aus den Images gewinnen und zur Verfügung stellen. 

Ziel

Ziel dieses Projekts war es die derzeit am Markt vorhandenen Container Image Schwachstellenscanner zu eruieren, deren Funktionalität zu überprüfen und die besten davon in einem Projekt zu kombinieren. Das Projekt soll über ein Webinterface verfügen, welches den Imagenamen und den Imagetag des zu überprüfenden Image übergeben bekommt und nach der Analyse, die, durch die verschiedenen Tools, gefundenen Sicherheitslücken wieder ausgibt. Ähnlich der Funktionsweise von VirusTotal.

Ergebnis

Es wurde ein modularer Prototyp entwickelt, der die verschiedenen Funktionen und Scanner jeweils in separate Images aufsplittet, wodurch die Applikation gut skalierbar ist. Sie basiert im Ganzen auf einem Frontend, einer Jobqueue, einem Backend und einer Datenbank, zur Speicherung der Analyseergebnisse. Das Backend, holt aus der auf Redis basierenden Jobqueue, die vom Frontend übergebenen Daten. Die implementierten Schwachstellenscanner werden mit diesen angestoßen. Nach erfolgreicher Analyse werden die relevanten Ergebnisse selektiert und in einer Graph Datenbank gespeichert, wodurch sie für verschiedene Abfragen bereitstehen. Die Images können nun visuell aufbereitet mit ihren Paketen und deren Schwachstellen ausgegeben werden. Es kann jedoch auch umgekehrt eine Suchanfrage nach einer bekannten CVE gestellt werden, wodurch alle Pakete, die davon betroffen sind, und Images, in denen diese Pakete enthalten sind, zurückgeliefert werden.