Fehler beim Plugin-Pinning setzt KI-Coding-Agenten stillen Supply-Chain-Austausch aus

Plugin4Shell umgeht Plugin-Pinning bei Claude Code, Codex, Copilot und Gemini CLI: Angreifer tauschen Code aus, Anzeige bleibt unverändert.

Von künstlicher Intelligenz erzeugter Text, ohne menschliche Überprüfung veröffentlicht. KI-Transparenz

Fehler beim Plugin-Pinning setzt KI-Coding-Agenten stillen Supply-Chain-Austausch aus
KI

Illustration mit KI erzeugt

Ein Repository-Eigentümer kann Versionssperren für Plugins in vier weit verbreiteten KI-Coding-Agenten umgehen. Dadurch installieren diese ungeprüften Code und zeigen weiterhin die erwartete Version an.

Die von Air Security Plugin4Shell genannte Supply-Chain-Schwachstelle betrifft Anthropic Claude Code, OpenAI Codex, GitHub Copilot und Google Gemini CLI. Air testete den Angriff im Mai erfolgreich gegen alle vier Produkte und informierte deren Anbieter im Juni.

Anthropic und OpenAI haben Korrekturen veröffentlicht. GitHub Copilot ist laut Air weiterhin ungepatcht, während Google keine Behebung für das auslaufende Gemini CLI plant. Bis zum 18. September 2026 war weder eine CVE noch ein Sicherheitsbericht eines Anbieters veröffentlicht worden. Hinweise auf eine Ausnutzung in realen Angriffen gab es nicht.

Ein gepinnter Commit garantiert keinen gepinnten Code

KI-Coding-Agenten können ihren Funktionsumfang erweitern, indem sie Plugins aus Marktplätzen und externen Quellcode-Repositories herunterladen. Damit sich der Code nach der Prüfung nicht verändert, kann ein Marktplatz jedes freigegebene Plugin anhand eines Git-Commit-Hashes identifizieren.

Dieser Hash sollte für einen unveränderlichen Snapshot des Repositorys stehen. Bei den betroffenen Agenten prüft der Installationsprozess jedoch nicht ausreichend, ob der heruntergeladene Inhalt tatsächlich dem angegebenen Commit entspricht.

Plugin4Shell nutzt eine Mehrdeutigkeit bei der Auflösung von Git-Referenzen aus. Auf einem Repository-Dienst, der dies zulässt, kann ein Eigentümer einen Branch mit einem Namen anlegen, der dem gesperrten Commit-Hash des Plugins ähnelt. Anschließend verweist der Angreifer diesen Branch auf einen anderen Commit mit Schadcode.

Wenn der Agent den vermeintlich freigegebenen Commit anfordert, kann Git den Wert als vom Angreifer kontrollierten Branchnamen interpretieren. Der Installer ruft daraufhin den Code eines anderen Commits ab, während der Agent weiterhin meldet, dass sich das Plugin auf der erwarteten, gepinnten Version befindet.

Damit werden sowohl die Prüfung als auch die Transparenz über die Version ausgehebelt. Für den Benutzer kann ein Plugin unverändert erscheinen, obwohl sein ausführbarer Inhalt ersetzt wurde.

OpenAIs öffentliche Änderung für Codex beschreibt denselben Fehler: Git kann eine angeforderte Commit-SHA als Branch-Referenz behandeln, sodass eine Plugin-Quelle auf einen anderen als den im Lock verzeichneten Commit aufgelöst wird. Die Korrektur ist in Codex 0.146.0 enthalten.

Die Ausnutzung hängt vom Repository-Host ab

Die Technik mit einem Hash-ähnlichen Branchnamen funktioniert nicht auf allen Hosting-Plattformen gleichermaßen. GitHub verbietet Branch- und Tagnamen, die wie Commit-Hashes aussehen, und verhindert damit diese spezielle Methode bei dort gehosteten Repositorys.

Air stellte fest, dass der Angriff auf Bitbucket und privat betriebenen Git-Servern funktioniert, die solche Namen möglicherweise zulassen. Die betroffenen Coding-Agenten unterstützen Plugins aus solchen externen Repositorys.

Diese Unterscheidung begrenzt die Gefährdung für Nutzer erheblich, die ausschließlich die standardmäßigen Marktplätze verwenden. Eine Prüfung der Kataloge der Agenten und der zugrunde liegenden Schwachstelle am 18. September ergab, dass der Community-Katalog von Anthropic sowie die standardmäßigen Kataloge von Claude Code und Copilot auf GitHub-Repositorys verwiesen.

Das Hosting bei GitHub behebt jedoch nicht grundsätzlich die fehlerhafte Validierungslogik. Copilot kann beispielsweise Plugins aus Repositorys außerhalb von GitHub installieren. Nutzer, die ein Bitbucket-Repository, einen privaten Git-Server oder einen anderen Host zulassen, der mehrdeutige Referenznamen erlaubt, bleiben bei Verwendung eines ungepatchten Agenten gefährdet.

Auch Gemini CLI weist ein separates Problem bei der Auflösung von Repositorys auf. Laut Air kann sein Installer durch ein Repository beeinflusst werden, dessen Haupt-Branch FETCH_HEAD heißt. Die dokumentierte Einschränkung von GitHub für hashähnliche Namen schließt FETCH_HEAD nicht eindeutig aus. Daher können bei GitHub gehostete Gemini-CLI-Plugins hinsichtlich dieser Variante nicht als definitiv sicher gelten.

Automatische Updates können eine weitere Bestätigung überflüssig machen

Am riskantesten ist eine Konfiguration, bei der ein Agent ein bereits vertrauenswürdiges Plugin im Hintergrund aktualisiert. Sobald Nutzer die ursprüngliche Installation genehmigt haben, könnte ein Repository-Eigentümer ändern, worauf eine mehrdeutige Referenz verweist, und Ersatzcode ohne eine weitere Bestätigung ausliefern.

Air berichtete, dass Hintergrund-Updates für Plugins in Claude Code und Codex standardmäßig aktiviert sind. Das bedeutet jedoch nicht, dass jede Standardinstallation unmittelbar gefährdet ist.

Automatische Updates sind standardmäßig nur für die integrierten Marktplätze der Produkte aktiviert, die auf GitHub gehostet werden. Die Dokumentation von Anthropic und GitHub zeigt, dass Aktualisierungen aus externen Marktplätzen deaktiviert oder optional sind. Die Namensregeln von GitHub blockieren daher in diesen Standardkatalogen die wichtigste Variante des Angriffs mit einem Hash-ähnlichen Branch.

Die Gefahr steigt, wenn Organisationen private Marktplätze konfigurieren oder Plugins direkt aus unterstützten Nicht-GitHub-Repositorys installieren. Ein Marktplatzbetreiber kann bereits eingesetzte Agenten nicht nachträglich reparieren, da die Referenzvalidierung auf dem Rechner jedes Nutzers erfolgt. Der Agent selbst muss bestätigen, dass das abgerufene Objekt exakt dem gesperrten Commit entspricht.

Die vier Agenten unterscheiden sich bei den Abhilfemaßnahmen deutlich

Produkt Aktueller Status Empfohlene Reaktion
Anthropic Claude Code Laut Air ist das Problem in 2.1.179 behoben Auf Version 2.1.179 oder höher aktualisieren
OpenAI Codex In 0.146.0 behoben Auf Version 0.146.0 oder höher aktualisieren
GitHub Copilot Laut Air wurde noch keine Korrektur veröffentlicht Plugins aus nicht vertrauenswürdigen externen Repository-Hosts vermeiden
Google Gemini CLI Google plant keine Behebung für das auslaufende Produkt Wenn möglich zu Antigravity migrieren

In den Release Notes zu Claude Code 2.1.179 wird Plugin4Shell nicht genannt. Die Einschätzung, dass diese Version das Problem behebt, stammt von Air. OpenAI dokumentierte die entsprechende Korrektur bei der Auflösung von Git-Referenzen dagegen öffentlich.

Air teilte mit, Microsoft im Juni informiert zu haben. Ein entsprechendes Copilot-Update wurde jedoch nicht veröffentlicht. Bis sich das ändert, sollten Copilot-Nutzer Plugins, die auf Bitbucket, privaten Git-Servern und ähnlichen Diensten gehostet werden, als potenziell gefährdet betrachten.

Google stellte die Bereitstellung des Gemini CLI für Privatkunden im Juni ein und verweist Nutzer auf Antigravity. Laut Air ist Antigravity für diesen Angriff nicht anfällig. Google erklärte, dass der Zugriff von Unternehmen auf Gemini CLI weiterhin Updates erhalten werde. Ob diese Updates Plugin4Shell beheben, ist jedoch nicht bekannt.

Schadplugins erben die Zugriffsrechte des Benutzers

Ein ersetztes Plugin wird mit den Berechtigungen ausgeführt, die der Person zur Verfügung stehen, die den Coding-Agenten verwendet. Seine tatsächliche Reichweite hängt daher von den lokalen Berechtigungen, gespeicherten Geheimnissen, der Agentenkonfiguration und authentifizierten Sitzungen ab.

Mögliche Folgen sind das Auslesen von Quellcode und lokalen Dateien, der Diebstahl gespeicherter Zugangsdaten sowie der Zugriff auf Entwicklungs- oder Geschäftssysteme, die über die bestehende Authentifizierung des Benutzers erreichbar sind. Entwicklerarbeitsplätze sind besonders sensibel, da sie häufig Repository-Zugriff, Cloud-Zugangsdaten, Signaturmaterial und Verbindungen zu internen Netzwerken vereinen.

Bis zum 18. September 2026 waren keine bestätigten Kompromittierungen oder aktiven Ausnutzungskampagnen bekannt. Es war keine CVE-Kennung vergeben worden, und keiner der vier Anbieter hatte einen speziellen Sicherheitsbericht veröffentlicht.

Plugin4Shell zeigt dennoch, dass eine angezeigte Version kein Beleg für die Identität des installierten Codes ist. Die Sperre ist nur dann aussagekräftig, wenn der Installer das resultierende Git-Objekt überprüft, anstatt der Namensauflösung zu vertrauen.

Bereits installierte Plugins müssen separat geprüft werden

Ein Upgrade von Claude Code oder Codex sollte künftige Ersetzungen verhindern. Die verfügbaren Informationen zeigen jedoch nicht, ob eines der beiden Updates bereits ersetzte Plugins erkennt oder entfernt. Organisationen sollten die Behebung des Problems und die nachträgliche Prüfung daher als getrennte Aufgaben behandeln.

Administratoren und Entwickler sollten:

  • Claude Code auf 2.1.179 oder höher aktualisieren.
  • Codex auf 0.146.0 oder höher aktualisieren.
  • Externe Copilot-Plugin-Quellen meiden, bis GitHub eine Korrektur veröffentlicht.
  • Wenn betrieblich möglich von Gemini CLI zu Antigravity migrieren.
  • Den Inhalt installierter Plugins unabhängig mit dem vertrauenswürdigen Repository-Commit vergleichen.
  • Plugins prüfen, die vor dem Upgrade des Agenten installiert wurden, statt davon auszugehen, dass der Patch sie bereinigt.
  • Den Zugriff von Plugins auf Dateien, Zugangsdaten, Tokens und authentifizierte Systeme beschränken.
  • Plugin-Repositorys und Update-Aktivitäten auf unerklärliche Änderungen an Referenzen untersuchen.
  • Zugangsdaten und verbundene Dienste nach verdächtigen Plugin-Updates auf unerwartete Zugriffe überwachen.

Nutzer können ihre Gefährdung verringern, indem sie die standardmäßigen, auf GitHub gehosteten Kataloge der Agenten bevorzugen. Dort verhindert die dokumentierte Namensbeschränkung den Angriff mit einem Hash-ähnlichen Branch. Dieser Schutz ist jedoch nicht uneingeschränkt, insbesondere bei Gemini CLI wegen der Variante mit FETCH_HEAD.

Die dauerhafte Abhilfe ist eine strengere clientseitige Validierung: Nach dem Abruf muss der Agent feststellen, dass die installierte Quelle exakt auf den Commit aufgelöst wird, der im Marktplatz oder in der Lock-Datei verzeichnet ist. Alles andere lässt eine Lücke zwischen der dem Benutzer angezeigten Version und dem tatsächlich ausgeführten Code bestehen.

Auch interessant

Quellen

Dieser Artikel ist eine eigenständige Aufbereitung auf Basis der folgenden Quellen.

Verwandte ThemenPlugin4ShellKI-Coding-AgentenSupply-Chain-AngriffPlugin-PinningClaude CodeGitHub Copilot
Zurück zur Startseite