Wie man einen KI-Programmierassistenten davon abhält, anfällige Pakete zu installieren
Du gibst Claude Code eine echte Aufgabe – „Füge dieser App Bild-Uploads hinzu, passe ihre Größe an und speichere sie in S3“ – und lässt es einfach laufen. Es schreibt den Code, erkennt, dass es ein paar Bibliotheken braucht, und installiert sie selbst: hier ein pip install, dort ein npm install, vielleicht ein brew install für ein Systemtool. Du folgst dem Plan und liest nicht die Paketnamen, die an Dir vorbeifliegen. Und jede dieser Installationen läuft unter Deinem Benutzerkonto, mit Deinem Dateizugriff und Deinen Anmeldedaten. Der Assistent ist schnell und wirklich hilfreich – und in diesen wenigen Sekunden ist er auch derjenige, der entscheidet, welcher neue Code auf Deinem Rechner ausgeführt wird.
Claude Code prüft nicht, ob die von ihm installierten Pakete bekannte Sicherheitsprobleme haben; das gehörte nie zu seinen Aufgaben. Normalerweise greift er auf etwas Beliebtes und völlig Unbedenkliches zurück. Aber er hat keine Möglichkeit zu wissen, ob die Version, die er gerade heruntergeladen hat, erst vor einer Stunde veröffentlicht wurde oder ob etwas in der dritten Abhängigkeitsebene letzte Nacht unbemerkt kompromittiert wurde. Wenn es sich bei dem Installationsprogramm um eine KI handelt, die sich in einer einzigen Session schnell durch mehrere verschiedene Paket-Ökosysteme bewegt, entspricht der Schadensumfang einer einzigen falschen Auswahl genau der Größe Deines eigenen Zugriffs – also dem gesamten System.
claude-code-cve-gate greift genau in diesem Moment ein. Es ist ein Hook, der jede Installation abfängt, die Dein Assistant ausführen will – egal ob über pip, npm, composer, Cargo, go, gem oder brew –, sie vor der Ausführung überprüft und diejenigen stoppt, die als „dirty“ zurückkommen.
Das Problem, ganz einfach ausgedrückt
Wenn ein Mensch ein Paket installiert, sieht er zumindest den Namen und kann bei etwas Unbekanntem innehalten. Ein autonomer Assistent hält nicht inne, und Du überprüfst in der Regel seine Absicht („Uploads hinzufügen“), nicht seine Einkaufsliste („installiert sharp, multer und 40 transitive dependencies“). Multipliziere das mit der Anzahl der Ökosysteme, auf die ein moderner Agent zugreift – Python, Node, Pakete –, und Du hast mehrere offene Türen, von denen jede darauf vertraut, dass alles, was hereinkommt, in Ordnung ist. In der Standardkonfiguration wird nichts überprüft.
Wem passiert das schon?
Jeder, der einen KI-Programmierassistenten Installationen durchführen lässt, anstatt Befehle abzuschreiben und manuell auszuführen – was ja gerade der Sinn eines agentischen Workflows ist. Je mehr Du dem Assistenten beim Handeln vertraust, desto wichtiger wird diese Lücke, denn „ihm das Handeln anvertrauen“ bedeutet auch, „zu vertrauen, was auch immer er installiert“.
Was „claude-code-cve-gate“ macht – und wie es funktioniert
Es wird als PreToolUse-Hook registriert – Claude Codes dokumentierter Erweiterungspunkt, der vor der Ausführung eines Befehls ausgelöst wird. Der gate prüft jede Installation, die der Assistent versucht, und entscheidet, ob er sie zulässt.
Es fängt die Installation ab, bevor sie ausgeführt wird
Wenn Claude Code nach pip, npm, Composer, Cargo, go, Gem oder brew greift, fängt der Hook den Befehl zuerst ab – es wird nichts heruntergeladen oder ausgeführt, bis die Überprüfung abgeschlossen ist.
Es löst den gesamten Dependency-Baum auf
Bei pip, npm, Composer und Gem nutzt das Tool den jeweiligen Dry-Run-Modus des Paketmanagers, um den gesamten transitiven Baum aufzulösen, sodass nicht nur das vom Assistenten genannte Paket, sondern auch indirekte Abhängigkeiten überprüft werden. (--no-deps beschränkt die Überprüfung auf die oberste Ebene, wenn Du das möchtest.)
Drei Datenbanken und eine freshness hold
Jedes aufgelöste Paket wird anhand von NIST NVD, OSV.dev und der GitHub Advisory Database überprüft, wobei eine versionsbezogene Filterung zum Einsatz kommt. Für pip und npm gilt zudem eine freshness hold – eine release, die jünger als drei Tage ist (standardmäßig), wird zurückgehalten, da die gefährlichste Version oft diejenige ist, die nur wenige Minuten nach einem Identitätsdiebstahl veröffentlicht wird. Setze diese Einstellung für eine einzelne Session mit SAFE_INSTALL_MIN_AGE=0 außer Kraft, wenn Du wirklich einen gerade veröffentlichten Fix benötigst.
Ehrliche Standardwerte und ein strenger Modus
Standardmäßig arbeitet das Gate nach dem „Best-Effort“-Prinzip: Wenn mindestens eine Datenbank ein einwandfreies Ergebnis liefert, wird die Installation zugelassen, sodass ein einzelner nicht erreichbarer Feed Deine Arbeit nicht blockiert. Wenn Du eine strengere Vorgehensweise wünschst – bei der jeder Datenbankfehler zu einer harten Blockierung führt –, setze STRICT_FAIL_CLOSED=1. Es ist gut zu wissen, in welchem Modus Du Dich befindest; daher gibt das gate dies ausdrücklich an, anstatt so zu tun, als sei jede Prüfung absolut.
Installiere es und nutze es
Installieren
git clone https://github.com/sharkyger/claude-code-cve-gate.git
cd claude-code-cve-gate && bash install.sh
install.sh registriert den PreToolUse-Hook in Deiner Claude Code-Konfiguration.
Danach läuft es einfach
Es muss nichts ausgeführt werden. Sobald der Hook registriert ist, wird jede von Claude Code versuchte Installation automatisch überprüft; eine einwandfreie Installation wird fortgesetzt, eine mit Schwachstellen behaftete Installation wird blockiert und gemeldet. Passe die „freshness hold“-Einstellung oder den strengen Modus über die oben genannten Umgebungsvariablen an. Die vollständige Konfiguration und der Quellcode sind auf GitHub zu finden: github.com/sharkyger/claude-code-cve-gate (MIT).
FAQ
Überprüft Claude Code die Pakete, bevor er sie installiert?
Nein – Claude Code kann zwar Pakete für Dich installieren, überprüft diese aber nicht auf bekannte Schwachstellen. claude-code-cve-gate fügt diese Überprüfung als Hook hinzu: Es fängt jede Installation ab, die Dein Assistent ausführt, und überprüft sie, bevor sie auf Dein System gelangt.
Welche Paketmanager werden unterstützt?
pip, npm, Composer, Cargo, Go, gem und brew. Bei pip, npm, Composer und gem wird der gesamte transitive Dependency-Baum über den Dry-Run-Modus des jeweiligen Paketmanagers aufgelöst, sodass auch indirekte Dependencies geprüft werden.
Ist das ein offizielles Tool von Anthropic?
Nein. „claude-code-cve-gate“ ist ein unabhängiges Tool eines Drittanbieters und steht in keiner Verbindung zu Anthropic. Es bindet sich in den dokumentierten Erweiterungspunkt „PreToolUse“ von Claude Code ein.
claude-code-cve-gate ist eines der 5bats supply-chain gates . Wenn Dein Stack stattdessen auf Mistral basiert, übernimmt mistral-code-cve-gate dort die gleiche Funktion; für Installationen, die Du selbst durchführst, gibt es gates für Python , PHP und Homebrew .
