Abhängigkeiten und Sicherheitslücken in Paketen und Containern identifizieren Google OSV-Scanner zur Schwachstellen-Erkennung

Von Thomas Joos Lesedauer: 4 min

Anbieter zum Thema

Google unterstützt Entwickler mit dem sogenannten Open-Source-Vulnerability-, kurz OSV-Scanner. Das Tool nutzt die seit 2021 bereitgestellte OSV-Datenbank, die bisher nur mit APIs zugreifbar war. Dadurch lassen sich Anfälligkeiten schnell erkennen und patchen.

Die Schwachstellen-Datenbank osv.dev lässt sich manuell durchsuchen und sowohl über eine API als auch mit dem Google OSV-Scanner nutzen.
Die Schwachstellen-Datenbank osv.dev lässt sich manuell durchsuchen und sowohl über eine API als auch mit dem Google OSV-Scanner nutzen.
(Bild: Joos / Google)

Der Google OSV-Scanner steht für Windows, Linux und in Docker-Containern bereit, um in Paketen nach Abhängigkeit und Schwachstellen auf Basis der Open-Source-Datenbank osv.dev zu suchen.
Der Google OSV-Scanner steht für Windows, Linux und in Docker-Containern bereit, um in Paketen nach Abhängigkeit und Schwachstellen auf Basis der Open-Source-Datenbank osv.dev zu suchen.
(Bild: Joos / Microsoft)

Mit dem kostenlosen und quelloffenen OSV-Scanner von Google lassen sich vorhandene Open-Source-Pakete inklusive deren Abhängigkeiten auf Sicherheitslücken hin überprüfen. Parallel zu lokal gespeicherten Paketen kann der OSV-Scanner auch Docker-Container und die darin installierten Pakete auf Schwachstellen untersuchen. Der OSV-Scanner ist das offiziell unterstützt Frontend für Googles OSV-Datenbank.

Das Tool wurde in Go entwickelt. Der OSV-Scanner soll verlässliche, qualitativ hochwertige Schwachstelleninformationen sammeln, auf deren Basis sich bekannte Sicherheitslücken schnell schließen lassen. Nutzende erkennen außerdem, welche Open-Source-Produkte im eigenen Netzwerken Schwachstellen aufweisen. Die Open-Source-Plattform unterstützt alle wichtigen Sprachen, diverse Linux-Distributionen sowie Android, Linux-Kernel und OSS-Fuzz für die Suche nach Schwachstellen.

Jede Abhängigkeit enthält bekannte Schwachstellen oder potenzielle neue Schwachstellen, die jederzeit entdeckt werden könnten. Nur Tools wie der OSV-Scanner können Schwachstellen automatisiert auf die Spur kommen. Die U.S. Executive Order for Cybersecurity aus dem Jahr 2021 stellt diese Art der Automatisierung als Anforderung für nationale Standards zur sicheren Softwareentwicklung.

Wenn Entwickler den OSV-Scanner für die Untersuchung ihres Projektes nutzen, werden zunächst alle transitiven Abhängigkeiten gefunden, die durch die Analyse von Manifesten, SBOMs und Commit-Hashes verwendet werden. Der Scanner nutzt danach diese Informationen für die Suche nach Schwachstellen in der OSV-Datenbank und zeigt die für ein Projekt relevanten Lücken an. Zusätzlich ist der OSV-Scanner auch in die Schwachstellenprüfung der OpenSSF Scorecard integriert.

Google OSV-Scanner setzt auf die Online-Datenbank OSV.dev

Als Basis nutzt der Google OSV-Client daher die Datenbank, die Google bereits seit 2021 zur Verfügung stellt. Der Google OSV-Scanner steht als Open Source unter der Apache 2-Lizenz zur Verfügung. Neben Linux kann das Tool in Windows zum Einsatz kommen. Auf der GitHub-Seite des Projektes stehen alle OSV-Scanner-Versionen kostenlos zum Download bereit.

Die Schwachstellen-Datenbank osv.dev lässt sich manuell durchsuchen und sowohl über eine API als auch mit dem Google OSV-Scanner nutzen.
Die Schwachstellen-Datenbank osv.dev lässt sich manuell durchsuchen und sowohl über eine API als auch mit dem Google OSV-Scanner nutzen.
(Bild: Joos / Google)

Die „Open Source Vulnerabilities“-Datenbank steht seit Februar 2021 mit dem Ziel zur Verfügung, die Suche nach Sicherheitslücken für Entwickler und Benutzer von Open-Source-Software zu automatisieren und zu verbessern. Die Schwachstellen-Datenbanken folgen einem verteilten Modell. Da verschiedene OSV-Datenbanken ein eigenes Format zur Beschreibung von Schwachstellen verwenden, muss ein Client, der Schwachstellen in mehreren Datenbanken nutzen soll, jede vollständig separat unterstützen.

Das Google Open Source Security-Team, das Go-Team und die Community haben daher ein Schema für den Austausch von Schwachstellen entwickelt. Die Open-Source-Datenbank osv.dev nutzt dieses Schema und der OSV-Client unterstützt es ebenfalls, um Schwachstellen in der gescannten Software auf Basis der Informationen von osv.dev zu finden. Dadurch ist eine Automatisierung der Schwachstellensuche möglich.

Praxis: OSV-Scanner herunterladen und nutzen

Der Download erfolgt als ausführbare Datei, die im Terminal ausgeführt werden kann. Alle Informationen zu den einzelnen Parametern zeigt das Tool mit der folgenden Syntax an:

osv-scanner_1.1.0_windows_amd64.exe --help

Die Version des Scanners lässt sich wiederum mit dem folgenden Befehl anzeigen:

osv-scanner_1.1.0_windows_amd64.exe --version

Um Pakete in einem Verzeichnis zu scannen, kommt zum Beispiel der folgende Befehl zum Einsatz:

osv-scanner -r <Verzeichnis mit Paketen>

Durch diesen Befehl sammelt der OSV-Scanner eine Liste von Abhängigkeiten und Versionen von Paketen, die im Verzeichnis gespeichert sind. Diese Liste gleicht das Tool über die osv.dev-API mit der OSV-Datenbank ab. Wichtig ist an dieser Stelle, dass entweder alle Pakete in diesem Verzeichnis gespeichert sind oder dass alle Verzeichnisse nacheinander überprüft werden.

Durch die Verwendung von „--recursive / -r“ durchsucht das Tool alle Unterverzeichnisse im angegebenen Pfad. Die Suche nach dem Git-Commit-Hash ist für Projekte optimiert, die Git-Submodule oder einen ähnlichen Mechanismus verwenden, bei dem Abhängigkeiten als Git-Repositories ausgecheckt werden. Der OSV-Scanner unterstützt SBOM-Tools und kann SPDX-Dateien nutzen. Die Syntax dazu ist:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung
osv-scanner --sbom<Pfad>/sbom.json

Der OSV-Scanner nutzt dabei verschiedene Lockfiles. Um ein Lockfile zu nutzen, kommt zum Beispiel der folgende Befehl zum Einsatz:

osv-scanner --lockfile=/path/to/your/package-lock.json --lockfile=/path/to/another/Cargo.lock

Der OSV-Scanner kann an die eigenen Anforderungen angepasst werden. Dazu wird eine Datei „osv-scanner.toml“ erstellt und im OSV-Scanner-Verzeichnis gespeichert. Beim Start von OSV-Scanner kann diese Konfigurationsdatei als Parameter mitgegeben werden, zum Beispiel mit:

--config=/path/to/config.toml

Findet der OSV-Scanner Schwachstellen, zeigt das Tool die Daten in einer Tabelle an. Mit dem Parameter „--json“ ist es möglich, die Ausgabe direkt in einer JSON-Datei zu speichern.

Docker-Container auf Schwachstellen überprüfen

Google OSV-Scanner unterstützt Docker als Basis und kann Pakete in Docker-Containern auf Schwachstellen überprüfen.
Google OSV-Scanner unterstützt Docker als Basis und kann Pakete in Docker-Containern auf Schwachstellen überprüfen.
(Bild: Joos / Canonical)

Neben dem Durchsuchen von Paketen nach Schwachstellen ist Google OSV-Scanner dazu in der Lage, innerhalb von Docker-Containern nach Schwachstellen in den installierten Paketen zu suchen. Die Syntax dazu lautet zum Beispiel:

osv-scanner --docker image_name:latest

Docker-Images lassen sich natürlich nur dann scannen, wenn Docker lokal auf dem entsprechenden Computer installiert ist und der Benutzer, mit dem OSV-Scanner startet, die jeweiligen Berechtigungen hat. OSV-Scanner kann selbst innerhalb von Docker-Containern genutzt werden. Dazu steht das Tool als Container zur Verfügung. Der Download und der Start erfolgen in diesem Fall mit den beiden folgenden Befehlen:

docker pull ghcr.io/google/osv-scanner:latest
docker run -it ghcr.io/google/osv-scanner -h

(ID:49051273)