Dependency Firewall

Dependency Firewall,
Bedrohungen früh stoppen.

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

registry.npmjs.orgproxy.golang.orgpypi.orgdocker.ioghcr.io
ci-runner — build
$
npm error 403 Forbidden
npm 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
}
237 726Schadpaket-Advisories, gegen die jede Anfrage geprüft wird - Stand September 2026.

Enterprise-Setup

Ein zentraler Kontrollpunkt.

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.

Internes Netzwerk
EntwicklerrechnerCI/CD-PipelinesContainer-Builds
Direktzugriff gesperrt
DevGuard
Dependency Firewall
Öffentliche Registries
registry.npmjs.orgnpmproxy.golang.orgGopypi.orgPyPIdocker.io · ghcr.io · quay.ioOCI
Vier Ökosysteme, ein Übergang
npm, Go-Module, PyPI und OCI-Container-Images laufen über denselben Kontrollpunkt. Container-Pulls werden über spezifikationskonforme OCI-Endpunkte ausgeliefert, sodass unveränderte OCI-Clients funktionieren.
Getrennt nach Organisation, Projekt oder Repository
Jede Ebene erhält eine eigene Proxy-URL und eine eigene Config. Ein Plattform-Team setzt zentral eine Grundlinie, ein einzelnes Repository kann sie weiter verschärfen.
Ein Cache, der prüft, was er ausliefert
Pakete werden auf Platte zwischengespeichert, jeder Lesezugriff wird gegen den SHA-256-Hash verifiziert. Gegen die Schadpaket-Datenbank wird vor dem Cache geprüft.

Aktuelle Feeds

Basierend auf der Malicious Package Database.

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.

MAL-Advisories in der Datenbank0

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.

npm221 544234 071
PyPI11 73216 873
Go1818

Abdeckung nach Ökosystem

Alle Ökosysteme sind in der Datenbank erfasst. Die gelb markierten lassen sich heute über die Firewall führen – dazu kommen die OCI-Container-Registries.

proxy.blocked

@ctrl/transmission@7.3.1

403

MAL-2025-47143

chalk@5.6.1

403

MAL-2025-46969

@ctrl/deluge@7.2.2

403

MAL-2025-47131

Jede Abweisung mit Namen

Eine blockierte Anfrage nennt das auslösende Advisory. Wer darauf stößt, sieht den konkreten Befund statt eines allgemeinen Netzwerkfehlers.

dependency-proxy-configs
1# deny by default, allow what you trust
2*
3!pkg:npm/react@*
4!pkg:pypi/requests*
5!pkg:go/github.com/spf13/*
6!docker.io/library/nginx:*
7
8# never, at any version
9pkg:npm/@ctrl/tinycolor@*
geprüfte Anfragen
  • pkg:npm/react@19.2.0erlaubt
  • pkg:pypi/requests@2.32.3erlaubt
  • pkg:npm/left-pad@1.3.0gesperrt
  • pkg:npm/@ctrl/tinycolor@4.1.1gesperrt

Policy in einem Format, das alle schon lesen können

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.

72h
veröffentlichtgehalteninstallierbar
  • chalk@5.6.1gehalten
  • react@19.2.0installierbar

Einstellbare Cool-Down-Karenzzeit

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

Der npm-Wurm von 2025 war schneller, als ein Review je sein kann.

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 lesen
291
Advisories, veröffentlicht am 15. und 16. September 2025 – den beiden Tagen, an denen die erste Welle durch npm lief.
1 433
Advisories, veröffentlicht in den zwei Wochen ab dem 20. November 2025, als die zweite Welle folgte.

Einführung

Eine Zeile je Paketmanager.

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.

npm
registry in .npmrc
Go
GOPROXY
Python
index-url in pip.conf
Container-Images
die Registry, aus der gezogen wird

DevGuard ist Open Source und selbst betreibbar – der Proxy und die von ihm zwischengespeicherten Pakete können vollständig in der eigenen Infrastruktur bleiben.

Einen Kontrollpunkt vor die Lieferkette setzen.

Wir zeigen gerne, wie sich die Dependency Firewall in bestehende Netzwerke einfügt, wie eine Egress-Policy darum herum aussieht und wie andere Teams sie über ihre Pipelines ausgerollt haben.