Die Schadpaket-Datenbank
Advisories und die konkret betroffenen Versionen, importiert aus OSV. Die Datenbank wird mehrmals täglich neu gebaut, laufende Instanzen synchronisieren sie selbstständig.
DevGuard sitzt zwischen den Builds und den öffentlichen Registries. Jede Anfrage an npm, Go, PyPI und Container-Registries wird zuerst gegen die Datenbank bekannter Schadpakete geprüft - bekannte Schadversionen werden beim Installationsversuch abgewiesen, nicht im Nachhinein gemeldet.
Prüft jede Anfrage an
$ npm install @ctrl/tinycolornpm error 403 Forbiddennpm error X-Malicious-Package: blocked { "error": "Forbidden", "message": "This package has been blocked by the malicious package firewall", "reason": "Package @ctrl/tinycolor is flagged as malicious (ID: MAL-2025-47141)", "blocked": true}Enterprise-Setup
In einem typischen Enterprise-Setup sind öffentliche Registries von Entwicklerrechnern, CI-Runnern und Container-Builds aus nicht erreichbar. Der Dependency Proxy von DevGuard ist der einzige erlaubte Download-Pfad.
Aktuelle Feeds
DevGuard verfolgt die MAL-Advisories aus OSV – jenen Feed, zu dem auch das OpenSSF-Projekt malicious-packages beiträgt. Die Datenbank wird mehrmals täglich neu gebaut und jede DevGuard-Instanz synchronisiert sie automatisch – ein neu gemeldetes Paket wird abgewiesen, ohne dass jemand eine Konfiguration anfassen muss.
Advisories und die konkret betroffenen Versionen, importiert aus OSV. Die Datenbank wird mehrmals täglich neu gebaut, laufende Instanzen synchronisieren sie selbstständig.
Alle Ökosysteme sind in der Datenbank erfasst. Die gelb markierten lassen sich heute über die Firewall führen – dazu kommen die OCI-Container-Registries.
@ctrl/transmission@7.3.1
403MAL-2025-47143
chalk@5.6.1
403MAL-2025-46969
@ctrl/deluge@7.2.2
403MAL-2025-47131
Eine blockierte Anfrage nennt das auslösende Advisory. Wer darauf stößt, sieht den konkreten Befund statt eines allgemeinen Netzwerkfehlers.
1# deny by default, allow what you trust2*3!pkg:npm/react@*4!pkg:pypi/requests*5!pkg:go/github.com/spf13/*6!docker.io/library/nginx:*7 8# never, at any version9pkg:npm/@ctrl/tinycolor@*Die Regeln folgen der Gitignore-Logik: ein Muster pro Zeile, # für Kommentare, * als Platzhalter, ! für eine Ausnahme – und die letzte passende Regel gewinnt. Alles sperren und Paket für Paket öffnen, oder gezielt einzelne Namen blockieren.
Je Geltungsbereich lässt sich ein Mindestalter für Releases setzen: Eine Version muss so lange veröffentlicht sein, bevor ein Build sie ziehen darf - genau das Fenster, in dem ein kompromittiertes Release meist auffällt und zurückgezogen wird.
Warum das zählt
Im September 2025 veröffentlichte ein sich selbst verbreitender Wurm – später Shai-Hulud genannt – mit gestohlenen Maintainer-Zugängen schädliche Versionen weit verbreiteter npm-Pakete und sammelte auf jedem Rechner, der sie installierte, weitere Zugangsdaten ein. Betroffen waren unter anderem chalk, debug und der @ctrl-Scope – in Versionen, denen Teams zu Recht vertraut hatten.
CISA-Warnmeldung zur npm-Kompromittierung lesenEinführung
Der Proxy spricht das native Protokoll jedes Ökosystems – die Einführung ist eine Registry-Einstellung, keine Migration. Der Paketmanager zeigt auf die DevGuard-URL für Organisation, Projekt oder Repository, und ab da wird jede Anfrage geprüft. Die Dokumentation führt Schritt für Schritt durch jedes Ökosystem.
DevGuard ist Open Source und selbst betreibbar – der Proxy und die von ihm zwischengespeicherten Pakete können vollständig in der eigenen Infrastruktur bleiben.