GitHub hat den Umfang der Dependabot-Warnungen für bösartige Pakete von npm auf acht Ökosysteme erweitert, nachdem die GitHub Advisory Database mit den Daten des OpenSSF-Repositorys für bösartige Pakete verbunden wurde. Die neue Abdeckung umfasst npm, PyPI, Maven, RubyGems, NuGet, Go, crates.io und PHP Composer. Dadurch lassen sich schädliche Abhängigkeiten in Projekten erkennen, die Sprachen und Werkzeuge jenseits von JavaScript verwenden.
Dependabot hatte bereits früher im Jahr damit begonnen, Malware in npm-Abhängigkeiten zu erkennen. Die neue Erweiterung basiert auf dem Import von OpenSSF-Datensätzen im OSV-Format, anstatt für jedes Ökosystem separate Erkennungssysteme aufzubauen. Laut dem Beitrag enthält das OpenSSF-Repository seit seiner Einführung im Jahr 2023 mehr als 15.000 Berichte. Die Zahl wächst durch Meldungen aus der Community und automatisierte Erkennungsquellen weiter, darunter Pakete mit Namensähnlichkeit, Dependency-Confusion-Pakete, Account-Übernahmen und bösartige vorab erstellte Binärdateien.
Ein einheitlicher Importer für Daten zu bösartigen Paketen
Das Engineering-Team für die Sicherheit der Software-Lieferkette von GitHub entwickelte einen einzigen Importer, der dem Muster der für öffentliche Advisory-Repositorys verwendeten Importer folgt. Der Importer liest die seit dem letzten Lauf geänderten Dateien und überprüft Pflichtfelder, Typen und Format gemäß dem OSV-Schema, bevor ein Datensatz in die Datenbank aufgenommen wird. Datensätze, die die Validierung nicht bestehen, werden abgelehnt und zur Prüfung protokolliert, anstatt automatisch geändert und weitergeleitet zu werden.
Nach erfolgreicher Validierung werden die Datensätze in Feed-Einträge umgewandelt, die Quelle, Kennung und, sofern vorhanden, die CVE-Kennung enthalten. Außerdem wird der vollständige ursprüngliche Datensatz als Referenzkopie gespeichert. Der Importer verarbeitet auch Unterschiede zwischen den Datenquellen, etwa dass OpenSSF den Namen PyPI verwendet, während die GitHub-Datenbank pip nutzt, dass betroffene Versionen als einzelne Werte statt als Bereiche dargestellt werden, dass in einigen Berichten keine verwendbare Version vorhanden ist und dass Berichte zurückgezogen werden, die sich später als falsch herausstellen.
Duplikate verhindern und den Veröffentlichungsweg schützen
Ein zusätzliches Problem entsteht dadurch, dass GitHub selbst Daten zum OpenSSF-Repository beiträgt, während GitHubs Warnungen zu bösartigen npm-Paketen in das Repository fließen. Um den erneuten Import derselben Daten zu verhindern, stützt sich der Importer auf die Quelldaten des Datensatzes in OSV und schließt jeden Eintrag mit dem Label ghsa-malware aus, da dieser ursprünglich von GitHub stammt. Der Beitrag weist darauf hin, dass mehr als die Hälfte der monatlich neu im Repository eingehenden npm-Berichte auf GitHub-Warnungen zurückzuführen waren und daher als Wiedereinführungszyklen ausgeschlossen werden.
Warnungen zu bösartigen Paketen werden automatisch veröffentlicht, ohne dass jeder Bericht vor der Veröffentlichung von einem Menschen gelesen wird. Denn eine Verzögerung der Warnung um mehrere Tage kann einem Angreifer zusätzliche Zeit verschaffen, wenn das Paket Zugangsdaten stiehlt. Dies unterscheidet sich von Schwachstellenwarnungen, die normalerweise eine manuelle Überprüfung der Paketübereinstimmung, der Versionsbereiche und des Schweregrads des Problems erfordern.
Drei Ebenen für den Umgang mit fehlerhaften Daten
- Stapelgrenzen: Jeder Lauf legt eine konfigurierbare Obergrenze für die Anzahl der Warnungen fest, die erstellt werden können. Überschreiten die Daten diese Grenze, wird der gesamte Lauf angehalten und nichts veröffentlicht; dabei wird die genaue Anzahl der Warnungen übermittelt.
- Quellennachverfolgung: Jede Warnung ist mit dem jeweiligen Commit im Repository malicious-packages verknüpft. Dadurch lässt sich bei Vorfällen die Quelle des Berichts bestimmen.
- Rollback: Jeder Stapel kann als eine Einheit definiert und zurückgerollt werden, falls verunreinigte Daten durchgelangt sind, anstatt die Warnungen manuell aus der Datenbank zu entfernen.
Aktivierung für Benutzer
Warnungen zu bösartigen Abhängigkeiten in Dependabot sind nun optional verfügbar und können in den Sicherheitseinstellungen eines Repositorys, einer Organisation oder einer Enterprise-Umgebung aktiviert werden. Nach der Aktivierung gleicht Dependabot die Abhängigkeiten mit den Malware-Warnungen in der GitHub Advisory Database ab, einschließlich eines nachträglichen Abgleichs mit bereits vorhandenen Warnungen.