Continuous Security mit OWASP Dependency Track

14.03.2022 | Matthias

Einmal alles mit scharf?

Hand aufs Herz - kennst du wirklich alle Libraries und Third-Party-Dependencies in dem Softwarepaket welches du gerade installierst? Egal ob es sich um eine Java-Software mit vielen JARs aus einem Maven-Repository, um eine Frontend-Komponente mit diversen Paketen aus einem NPM-Repository oder eine in Go geschriebene Software mit verschiedenen Modules handelt - niemand mag das Rad neu erfinden. Re-Use von vorhandenen und bewährten Softwarekomponenten gehört zum Entwickler:innen-Alltag.

Was, wenn ein faules Ei dabei ist?

Spätestens seit die Log4j-Sicherheitslücke Log4Shell viel Aufmerksamkeit erhalten hat ist auch einem breiteren Publikum bewusst wie wichtig es ist, eine Übersicht über die in einer Software verwendeten Third-Party-Komponenten zu erhalten. Noch besser ist, dieses Inventory aktiv zu bearbeiten und das DevOps-Team automatisiert zu benachrichtigen bei neuen Vulnerabilities in diesen Komponenten. Automatisiert? Das tönt doch nach einer Aufgabe für einen Computer…

OWASP Dependency Track

Das Open Web Application Security Project OWASP stellt mit Dependency Track ein Tool zur Verfügung, welches es erlaubt eine Übersicht über in Software-Produkten verwendete Komponenten zu erhalten und laufend gegen bekannte und neue Sicherheitslücken zu prüfen. “Continuous SBOM Analysis Platform” nennt sich das - SBOM steht dabei für “Software Bill Of Materials”, also quasi die Stückliste einer Software.

Einsatz in der Praxis

Aus dem Build-Prozess wird vom Build-Tool (Maven, Gradle, NPM, …) eine Liste aller enthaltenen Komponenten eines Software-Produktes erzeugt und auf DependencyTrack via REST-API hochgeladen. DependencyTrack aktualisiert die Liste bekannter Sicherheitslücken laufend aus mehreren Quellen wie der National Vulnerability Database oder GitHub Advisories. Falls in einer verwendeten Komponente eine bekannte oder neue Sicherheitslücke auftaucht ist dies auf dem Dashboard von DependencyTrack sichtbar, und es lassen sich auch Notifikationen via Slack oder E-Mail konfigurieren.

OWASP Dependency Track Dashboard

Das Dashboard von DependencyTrack bietet einen schnellen Überblick über das Software-Portfolio und den Zustand betreffend bekannter Sicherheitslücken:

OWASP Dependency Track Dashboard

Die Projekte lassen sich nach Risk Score sortieren:

OWASP Dependency Track Dashboard

Gefundene Sicherheitslücken können im Detail betrachtet werden. Wenn die Analyse ergibt, dass ein Projekt nicht betroffen ist, kann die Vulnerability auch ignoriert werden, um nicht den Überblick zu verlieren.

OWASP Dependency Track Dashboard

Es lassen sich auch alle enthaltenen Komponenten eines Projektes anzeigen und auf ihre Aktualität prüfen:

OWASP Dependency Track Dashboard

Das Portfolio kann auch auf verwendete Komponenten durchsucht werden. Möchte man zum Beispiel Komponenten suchen welche log4j verwenden ist dies schnell gemacht:

OWASP Dependency Track Dashboard

Fazit

Neben Reviews, Tests und statischer Codeanalyse ist DependencyTrack ein weiteres Tool, welches uns hilft, Security früh im Entwicklungsprozess einzubinden und DevOps zu leben. Die Integration in unseren Entwicklungsprozess ist als Thema an einem unserer “Freaky Mondays” entstanden - ein Tag pro Quartal, an dem wir Innovation intern fördern und alle im Team eigene Ideen einbringen und verfolgen können.