Zurück zu allen Beiträgen
Veröffentlicht am · von Renaud Deraison

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-prompt zutage 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-mcp als 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.

Der Agent„finde einen Skill"suchtFakeGit-RepoDoppelgänger · 63 SterneREADME = „Doku"liest als FaktEmpfiehltZIP laden + startenoder klont es selbstDeine Maschineluau.exe ico64.txt → SmartLoader → StealCPasswörter · Cookies · Sitzungen · TaskExfilC2via PolygonKein Mensch klickte. Der Agent fand es, glaubte es, holte es heim.
AgentBaiting schließt den Kreis ohne menschlichen Köder. Der Agent sucht eine Fähigkeit, findet ein FakeGit-Repo von selbst, liest die README des Angreifers als Dokumentation und empfiehlt entweder die Installationsschritte oder klont und führt sie selbst aus. Auf einem normalen Setup, das auf deiner Maschine läuft: Der Windows-Loader wird ausgeführt, StealC schürft deine echten Passwörter und Live-Sitzungen, und die Beute wird exfiltriert.

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.

Verwerfbare Linux-VMFakeGit geklontder Agent führtdas ZIP hier ausSmartLoader.bat + luau.exe = PEläuft nicht auf LinuxWas StealC schürfen würdekein Browser · keine Live-SitzungANTHROPIC_API_KEY = brm_9f2a… (fake)git / AWS / ssh = KöderExfil (protokolliert)C2 bekommt Köderauthentifizieren nichtsEchte Geheimnissebleiben am Host-Proxyauf der Leitung getauschtDer Agent empfiehlt und startet es weiterhin. Nur nicht bei dir, mit unechten Schlüsseln.
Gleiches Repo, gleiche Empfehlung, gleicher Klon — andere Maschine. In Bromure läuft der Agent in einer wegwerfbaren Linux-VM: Der Windows-Loader kann nicht ausgeführt werden, es gibt keine Live-Sitzung und keinen echten Schlüssel zum Schürfen, die Zugangsdaten auf der Platte sind Köder, die nur am Host-Proxy gegen die echten getauscht werden, und das C2-Beacon wird protokolliert. Die Empfehlung geschieht weiterhin. Der Diebstahl hat nichts zu nehmen.

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.