Die Angriffskette beginnt damit, dass der Angreifer das Repository des Coding-Agenten und die darin enthaltene Projekt-Anweisungsdatei kontrolliert. Diese Datei wird manipuliert, vom Agenten aber genutzt und als vertrauenswürdig behandelt.
Im Kern wird bei SymJack ein schädlicher Symlink so umbenannt, dass er harmlos aussieht. Mit einem cp-Befehl lässt sich die im getarnten Symlink versteckte Schadlast automatisch in die Konfigurationseinstellungen des Agenten einfügen. Diese Schadlast registriert den schädlichen MCP-Server, dessen Startbefehl beim nächsten Hochfahren beliebigen vom Angreifer gewünschten Code ausführt.
Adversa fasst den Ablauf so zusammen: Der Entwickler sehe nur eine einzige Aufforderung – diese unverdächtig wirkende Datei in einen Dokumentationsordner zu kopieren. Er stimme zu. Nichts auf dem Bildschirm weise auf das Konfigurationsverzeichnis, die MCP-Datei oder ausführbaren Inhalt hin. Beim nächsten Neustart starte der eingeschleuste Server, und der Code des Angreifers laufe als Benutzer und ohne Sandbox. In einem realen Angriff könne er SSH-Schlüssel, Cloud-Token und Browser-Sitzungen stehlen oder sogar Produktivsysteme zerstören, bevor der Entwickler ein weiteres Wort tippe.
Richtet sich der Angriff gegen die CI, vergrößert sich der Schadensradius laut Adversa ohne weiteres Zutun des Nutzers. CI-Runner enthalten bereits die für den Betrieb nötigen Geheimnisse. Eine einzige schädliche Pull-Request könne sie allesamt abziehen, bevor ein Mensch die Änderung prüfe – ein Supply-Chain-Angriff mit einem Coding-Agenten als Lieferweg. Einen Proof of Concept stellt Adversa auf GitHub bereit.
Adversa betont, dass es sich nicht um einen Fehler in den Coding-Agenten handelt. Die Agenten folgen lediglich den Anweisungen, die sie erhalten. SymJack ließe sich stoppen, wenn der Nutzer den betreffenden cp-Befehl ablehnt – doch dazu sieht er keinen Anlass, weil nichts beunruhigend wirkt. Gerade die Beschleunigung der Entwicklung sei der Zweck solcher Werkzeuge, weshalb Nutzer dazu neigen, schnell zuzustimmen.
Geprüft wurde die Methode bei Claude Code, Gemini CLI und Antigravity CLI, Cursor Agent CLI, Grok Build CLI sowie GitHubs Copilot CLI. Adversa meldete das Problem allen fünf Anbietern. Zum Zeitpunkt der Veröffentlichung hatten xAI und GitHub nicht reagiert. Google wies den Bericht zurück, da die ausdrückliche Zustimmung des Nutzers als beabsichtigtes Verhalten gelte. Cursor lehnte ebenfalls ab und gab an, das Problem bereits zu kennen. Anthropic stufte es als außerhalb des Zuständigkeitsbereichs ein.
Trotz der anfänglichen Ablehnung härtete Anthropic Claude Code wenig später still ab. Laut Adversa löst die gehärtete Version nun Symlinks auf, bevor sie um Zustimmung bittet, und zeigt den tatsächlichen Zielpfad in der Abfrage an. Nutzer zum Nachdenken vor dem Handeln zu bewegen, könne einen SymJack-Angriff aufhalten und ließe sich auch von anderen Coding-Agenten umsetzen.
