Herrscher über die Unterwelt
Abhängigkeiten systematisch erkennen und auswerten
Fast jede Software hängt von anderen ab. Wer da den Überblick verliert, handelt sich massenweise Probleme etwa in Gestalt von Sicherheitslücken ein. Software-Teilelisten, sogenannte SBOMs, versprechen Einblicke. Die volle Kontrolle bekommen Admins und Entwickler – na klar – mit einem weiteren Werkzeug: Dependency-Track.
Die Sicherheitslücke in der Java-Log-Bibliothek Log4j löste Ende 2021 Schockwellen in vielen Unternehmen aus. Eine harmlose Logging-Bibliothek konnten Angreifer leicht dazu überreden, Schadcode aus dem Internet zu laden. Was Admins und Beobachter überraschte, war nicht nur, dass eine ziemlich leicht zu missbrauchende Funktion so lange in einer so verbreiteten Bibliothek wie Log4j überleben konnte. Überraschend war vor allem das Treiben in vielen IT-Abteilungen – hektisch wurden vielerorts per Hand Tabellen mit verwendeter Software zusammengetragen und auf den Suchbegriff „Java“ gefiltert. Dann begann eine mühsame Suche, bei eigener Software im Quellcode, bei gekaufter Software in Dokumentationen und mit Mails an den Hersteller. Die verzweifelten Fragen: „Wo zur Hölle könnte in unserem Netzwerk Log4j stecken? Haben wir vielleicht etwas übersehen?“ Probleme, die sich nicht auf Mittelständler mit Admin-Einzelkämpfern beschränkten. Unsere Redaktion erreichten auch Berichte, wie die IT-Abteilungen großer Konzerne mit der Frage umgingen. Selbst wenn es einen CISO (Chief Information Security Officer) und ganze Teams für IT-Sicherheit gab, gingen interne Mails an alle Abteilungen und ihre Leitungen. Die sollten schnellstmöglich prüfen und bestätigen, dass die eingesetzten Anwendungen frei von Log4j oder abgesichert seien.
Was sich all diese Softwarebetreiber in diesem Moment wünschten: eine zentrale interne Datenbank, die sämtliche Abhängigkeiten aller Anwendungen kennt. Am besten natürlich durchsuchbar und mit einer Anbindung an Sicherheitslückendatenbanken. In einer perfekten Welt hätte man nur „log4j“ in ein Suchfeld eintippen müssen, um sämtliche Vorkommen der betroffenen Bibliothek im eigenen Betrieb zu finden – feinsäuberlich aufgeschlüsselt nach Projekt und mit der jeweiligen Version. Für einzelne Programmiersprachen gibt es bereits Ansätze, die Abhängigkeiten eines Projekts auf Schwachstellen überprüfen. In der JavaScript-Welt greift man etwa zum Befehl npm audit
. Doch damit ist einer IT-Abteilung, die außerdem noch Docker-Container, .NET, Java-Applikationen und Python-Skripte im Einsatz hat, nur bedingt geholfen. Kaum jemand wird ausschließlich Anwendungen in einer einzigen Programmiersprache nutzen und mit vielen fragmentierten Informationsquellen ist niemandem geholfen.