Abhängigkeiten und Sicherheitslücken in Paketen und Containern identifizieren Google OSV-Scanner zur Schwachstellen-Erkennung
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.

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 „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:
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
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)