Der Agent empfahl die Malware
Island entdeckte FakeGit: rund 7.600 bösartige GitHub-Repositorys, mehr als 800 davon getarnt als KI-Skills und MCP-Server, die einen Windows-Loader namens SmartLoader verbreiten, der den Infostealer StealC installiert. Neu ist die Auslieferung: AgentBaiting — Claude Code, Gemini und ChatGPT finden diese Repos von selbst, lesen die README des Angreifers als Dokumentation und liefern dir die Installationsschritte. In einem Test klonte Claude Code ein Repo und führte die Dateien selbst aus. Bromure Agentic Coding lässt diesen gesamten Weg von der Empfehlung bis zur Ausführung in einer verwerfbaren Linux-VM laufen, wo ein Windows-Loader inert ist und die einzigen zu stehlenden Zugangsdaten Köder sind.
Du hast deinen Coding-Agenten gebeten, einen Skill zu finden. Er suchte, las eine README, die wie Dokumentation aussah, und sagte dir, du sollst ein ZIP herunterladen und ausführen. Niemand hat dir einen schlechten Link geschickt. Der Agent fand die Malware von selbst und empfahl sie — und in einem Testlauf klonte er das Repo und führte die Dateien für dich aus.
Am 21. Juli 2026 veröffentlichte Island eine Untersuchung zu einer Kampagne, die es FakeGit nennt — und zu einer Auslieferungstechnik, die es AgentBaiting tauft. Die Zahlen sind groß: rund 7.600 bösartige GitHub-Repositorys über etwa 6.600 Konten, von denen sich mehr als 800 als KI-Skills oder MCP-Server tarnen — Gmail- und WhatsApp-Integrationen, Databricks-, Jenkins- und Docker-Werkzeuge, genau die Art von Fähigkeit, die ein Entwickler einen Coding-Agenten suchen lässt. Mehr als 600 davon waren zudem in öffentlichen KI-Registries wie LobeHub, Glama, MCP.so und MCP Market gelistet. Bis Juli hatte eine Teilmenge von etwa 200 Repositorys mehr als 14 Millionen Downloads ihrer Release-Dateien verzeichnet.
Die Nutzlast ist ein Windows-Loader namens SmartLoader, der Persistenz herstellt und StealC nachlädt, einen Informationsdieb. Die Malware ist der gewöhnliche Teil. Wie sie dich erreicht, ist der neue Teil.
AgentBaiting: der Agent ist der Auslieferungsweg
Angriffe auf die Lieferkette brauchten früher einen Köder — einen Link in einer E-Mail, einen tippfehlergetarnten Paketnamen, den du vertippt hast, ein Suchergebnis, auf das du geklickt hast. FakeGit entfernt den Menschen aus diesem Schritt. Islands Befund, in seinen Worten: „Ein KI-Agent muss keinen bösartigen Link erhalten. Er kann ein FakeGit-Repository von selbst entdecken, die README als legitime Dokumentation behandeln und die Anweisungen des Angreifers an den Nutzer weitergeben."
Sie testeten es an echten Agenten:
- Bitte Claude Code, „einen kostenlosen Skill für filmreife Prompts zu
finden", und er brachte
adlaiponderous700/claude-skill-cinematic-promptzutage und empfahl in einigen Läufen die Schritte zum Herunterladen und Ausführen. - Bitte Gemini um einen „kostenlosen Walmart-MCP-Server", und es lieferte
DomingosNgongo/walmart-mcpals Top-Ergebnis, mit einem direkten GitHub-Link. - ChatGPT listete dasselbe Repo unter seinen Optionen und hob es als „den besten Startpunkt" hervor.
Keinem von ihnen wurde ein Link gegeben. Die Agenten suchten nach einer
Fähigkeit, fanden die Repositorys der Kampagne über gewöhnliche Suche und
Registry-Durchsicht und lasen die vom Angreifer verfasste README, wie sie
jede Dokumentation lesen — als Tatsache. Die Repos sind genau für diesen
Leser gekleidet: Mann1988/awesome-claude-skills kopiert das echte
ComposioHQ/awesome-claude-skills (67.000+ Sterne) und stopft sich mit 63
Sternen und 18 Forks voll, damit es etabliert wirkt. Benutzernamen sind ein
Zeichen von dem eines bekannten Maintainers entfernt. Die README führt den
Leser durch drei Schritte: das ZIP von GitHub Releases herunterladen,
ausführen, jede Sicherheitswarnung wegklicken, dem Setup-Assistenten folgen.
Und in mindestens einem Lauf, berichtet Island, hielt Claude Code nicht bei der Empfehlung an — er „klonte bösartige Repositorys und lud die bösartigen Dateien auf die Testmaschine herunter", bevor etwas in den Indikatoren ihn stoppte. Das ist die gesamte Angriffsfläche in einem Satz: der Agent, bei einer Routineaufgabe, brachte die Nutzlast selbst auf die Platte.
Was tatsächlich landet
Das ZIP ist kein Quellcode. Island ist deutlich beim Verräter: „Ein legitimer
MCP-Server oder Skill ist Quellcode mit einem Manifest, kein Windows-ZIP mit
einem Startskript, einer umbenannten Laufzeitumgebung und einer als
Textdatei getarnten Nutzlast." In einem FakeGit-Release wie
server_databricks_mcp_1.6.zip findest du einen kleinen .cmd- oder
.bat-Starter, eine umbenannte LuaJIT-artige Laufzeit (luau.exe) und eine
etwa 300 KB große obfuszierte Lua-Nutzlast, die den Namen einer Datendatei
trägt — ico64.txt. Der Starter führt start luau.exe ico64.txt aus, das
Konsolenfenster versteckt sich, und SmartLoader:
- löst seine Command-and-Control-Adresse aus einem Wert auf, der in einem Polygon-Smart-Contract gespeichert ist — dezentral, schwer abzuschalten;
- registriert geplante Aufgaben unter
%LOCALAPPDATA%, um einen Neustart zu überstehen; - lädt verschlüsselte Stufen von GitHub und injiziert StealC über einen PE-Crypter in einen anderen Prozess.
StealC tut dann, was Infostealer tun, und ein bisschen schlimmer: Es nimmt Browser-Passwörter und -Cookies, Erweiterungsdaten, E-Mail- und Fernzugriffs-Zugangsdaten, Screenshots, Host-Details — und aktive Sitzungen. Islands Hinweis zu diesem letzten Punkt zählt: „StealC nimmt Live-Sitzungen, nicht nur Passwörter, sodass ein bloßes Zurücksetzen der Passwörter nicht genügt." Ein gestohlenes Sitzungstoken ist schon an deinem Login vorbei.
Warum das Prüfen des Repos nie die ganze Antwort war
Der Instinkt ist, das schlechte Repo zu fangen — den Doppelgänger-Namen melden, die README bewerten, das Konto sperren. Islands eigener Rat weist auf etwas Schwierigeres: „Beobachte die Pfade, die Agenten nutzen, nicht nur die Pfade, die Nutzer nutzen. AgentBaiting bedeutet, dass ein Download, ein git clone oder ein Shell-Befehl von einem Agenten ausgehen kann, der eine Routineaufgabe erledigt." Die Suche des Agenten ist kein Pfad, auf den du einen menschlichen Kontrollpunkt setzen kannst. Sie läuft mit Maschinengeschwindigkeit, über Tausende nahezu identischer Repos, und behandelt, was immer sie findet, als Dokumentation, weil das ihre Aufgabe ist.
Das ist dieselbe Wand, gegen die der Rest der agentischen Sicherheit immer wieder läuft. Eine Sperrliste, die den Befehl liest, verliert gegen die Shell, die ihn umschreibt. Ein Scanner, der das Paket liest, verliert gegen die Nutzlast, die nicht im Paket ist. Und eine Prüfung, die Malware finden soll, führt die Malware aus, die sie finden sollte. FakeGit fügt eine weitere hinzu: eine Empfehlungsmaschine, die die README eines Angreifers als Wahrheit behandelt. Jede davon setzt einen Filter dorthin, wo das Schlechte beschrieben wird, und hofft, es zu fangen, bevor das Schlechte läuft. Die Beschreibung gehört dem Angreifer. Die Ausführung ist der einzige Ort, an dem das Ergebnis entschieden wird.
Wo Bromure die Linie zieht
Bromure Agentic Coding versucht nicht, die Suchergebnisse des Agenten zu überlisten. Es ändert, was in dem einen Moment geschieht, der zählt — wenn das Empfohlene läuft. Jeder Agent, den Bromure ausführt — Claude Code, Codex, Grok Build — läuft in einer verwerfbaren Linux-VM auf deinem Mac, nicht auf macOS selbst. Wenn der Agent also das FakeGit-Repo klont und das ZIP so ausführt, wie Island es bei Claude Code beobachtete, sind bereits drei Dinge wahr.
Erstens, die Nutzlast ist inert. SmartLoader ist ein Windows-Programm:
ein .bat-Starter, eine luau.exe-Laufzeit, eine PE-Crypter-Injektion,
geplante Aufgaben unter %LOCALAPPDATA%. Der Bromure-Agent läuft auf Linux.
Der .cmd-Starter hat keinen Interpreter, die luau.exe und das injizierte
StealC-PE werden nicht ausgeführt, und es gibt kein %LOCALAPPDATA% und
keinen Windows-Aufgabenplaner, an den sich die Persistenz heften kann. Ein
für ein Betriebssystem kompilierter Angriff läuft auf dem anderen und findet
nichts, womit er umzugehen weiß.
Zweitens, es gibt keine echten Zugangsdaten zu nehmen. Angenommen, der
Angreifer hätte einen Linux-Build ausgeliefert. StealCs ganzer Zweck ist es,
Browser-Speicher, Live-Sitzungen und gespeicherte Zugangsdaten zu schürfen —
und in der VM gibt es keinen angemeldeten Browser, kein Cookie-Glas, keine
Sitzung zum Abgreifen. Die Geheimnisse, die es auf der Platte und in der
Umgebung finden kann, sind Köder: Bromure injiziert Platzhalterwerte
(brm_…, eine synthetische ~/.kube/config, wegwerfbare ssh- und
Cloud-Token) in die VM und tauscht die echten nur auf dem Host zurück, im
Proxy, auf dem Weg hinaus zur echten API. Die echten Schlüssel betreten die
Box nie. Was auch immer den über Polygon aufgelösten C2 erreicht, ist ein
Sack Zeichenketten, der sich bei nichts authentifiziert.
Drittens, der Ausgang ist sichtbar und die Box ist wegwerfbar. Die C2-Auflösung, das Nachladen der verschlüsselten Stufe von GitHub, das Exfiltrations-Beacon — all das erscheint in Bromures Sicherheitsprotokoll als ausgehender Verkehr, den du sehen kannst. Und weil das Home der VM wegwerfbar ist, verschwinden die geplante Aufgabe und jede abgelegte Binärdatei beim nächsten Zurücksetzen des Profils auf die Basis. Es gibt keinen dauerhaften Host, auf dem SmartLoader Fuß fassen könnte.
Es gibt eine vierte Schicht, denn dieser Angriff ist ein Leseangriff, bevor
er ein Ausführungsangriff ist. Die FakeGit-README ist genau die Art von
nicht vertrauenswürdiger Autorität, die Bromure überwacht — dieselbe Klasse
wie eine bösartige CLAUDE.md, eine AGENTS.md oder eine SKILL.md.
Bromures On-Device-Erkennung von Prompt-Injektion bewertet den Inhalt, den
der Agent als Dokumentation aufnimmt, gegen lokale Modelle, die den Mac nie
verlassen, plus einen deterministischen Scanner für Tricks mit unsichtbarem
Unicode. Eine README, die dem Agenten sagt „lade dieses ZIP herunter, führe
es aus, klick die Warnung weg", ist genau der Fall, für dessen Meldung dieser
Detektor existiert. Es ist keine Wand für sich — aber in Bromure sitzt er
über der Isolierung, sodass ein Fehlschlag dennoch von einer Box gefangen
wird, in der nichts Echtes ist.
Worum das eine Linie zieht
Isolierung ist Eindämmung, kein Empfehlungsfilter. Es lohnt sich, genau zu sein, was Bromure hier ändert und was nicht.
Der Agent kann das Repo weiterhin empfehlen
Bromure prüft weder GitHub noch MCP-Registries noch die Suchergebnisse eines Agenten, und es hält den Agenten nicht davon ab, ein FakeGit-Repo zutage zu fördern oder dir dessen Installationsschritte zu reichen. Sein Lieferketten-Scanning deckt Paket-Registries ab — npm, PyPI, Cargo und den Rest — nicht die README eines Doppelgänger-Repos. Was sich ändert, ist, wo das Empfohlene läuft und was es erreichen kann, wenn es das tut.
Eine Windows-Nutzlast wird von der OS-Grenze gestoppt, nicht von einer Regel
SmartLoader scheitert, weil der Agent auf Linux läuft, nicht weil Bromure ihn per Fingerabdruck erkannt hätte. Ein Linux-nativer Stealer würde ausgeführt — und käme dennoch leer aus, weil es in der VM keinen angemeldeten Browser und keine Live-Sitzung gibt, die Zugangsdaten Köder sind und das Home wegwerfbar ist.
Substitution deckt die Geheimnisse ab, die du konfigurierst
Der Köder-Tausch schützt Zugangsdaten, die du in ein Profil legst: Modell-Schlüssel, git- und Cloud-Token, verwaltete Datenbank-Endpunkte, ssh-Schlüssel. Eine Sitzung, die du von Hand in der Box aufbaust, oder ein Geheimnis, das ein Skript mitten im Lauf in eine Datei schreibt, ist nur Daten. Halte Geheimnisse im Broker, nicht im Arbeitsbereich.
Erkennung ist ein Netz, keine Wand
Die On-Device-Injektionsbewertung meldet eine Installier-und-führe-aus-README öfter als nicht, aber ein entschlossener Autor kann einen Köder so formulieren, dass er an einem einzelnen Scanner vorbeirutscht. Behandle den Detektor als eine Schicht; die Eindämmung — eine wegwerfbare Box mit unechten Schlüsseln und einem protokollierten Ausgang — ist es, was hält, wenn ein Detektor versagt.
Islands Schlusssatz ist der, bei dem man verweilen sollte: „KI-Fähigkeiten sind zu einem Weg geworden, über den Software ins Unternehmen gelangt, und FakeGit wird nicht die letzte Kampagne sein, die ihn nutzt." Dein Agent wird nach Skills und Servern suchen, und ein Teil dessen, was er findet, wird gekleidet sein, um gefunden zu werden. Die Frage ist nicht, ob er je das falsche Repo empfiehlt — bei 7.600 Repos und 14 Millionen Downloads wird er es manchmal tun. Die Frage ist, was läuft, wenn er es tut: deine Maschine, deine Browser-Sitzungen und deine echten Schlüssel, oder eine Linux-Box, die du mit einer Handvoll Köder darin wegwerfen kannst. Bromure macht es zur zweiten.