Den Kern des Problems bildet laut Straiker eine Lücke in Cursors Schutzmechanismen gegen Shell-Befehle, die von einem Agenten ausgeführt werden. Diese Schutzmaßnahmen erfassten keine Befehle, die innerhalb der Shell selbst ausgeführt werden, sogenannte Shell-Builtins. Dadurch blieb der Parser blind gegenüber Änderungen des Arbeitsverzeichnisses, manipulierten Umgebungsvariablen und einem veränderten Ausführungskontext der Shell.
Weil die macOS-Seatbelt-Sandbox Schreibzugriffe auf das Home-Verzeichnis zulässt, ließen sich diese Builtins nutzen, um aus der Sandbox auszubrechen und die Datei .zshenv zu überschreiben. Diese Datei wird von jeder neuen Zsh-Instanz ausgeführt, darunter Terminal-Fenster, von Anwendungen gestartete Shells, aufgerufene Skripte und das Terminal von Cursor.
Der Angriff beginnt mit Prompts, die in der Datei README.md eines Repositorys versteckt werden. Öffnet das Opfer das Repository in Cursor und liest die KI die README, folgt sie den eingeschleusten Anweisungen, führt den Sandbox-Ausbruch durch und startet ein Skript zur Ausnutzung der Tunnel-Funktion.
Um Cursors integrierten Tunnel zu missbrauchen und Fernzugriff auf das System des Opfers zu erlangen, weist der Angreifer den Agenten zudem an, einen Gerätecode zu erzeugen und an den Server des Angreifers zu senden. Dieser Code ist nötig, um eine authentifizierte GitHub-Sitzung durch den Tunnel zu autorisieren.
„Das GitHub-Konto des Angreifers ist nun berechtigt, auf den Tunnel des Opfers zuzugreifen. In Verbindung mit den Registrierungsdaten des Tunnels – Tunnel-ID und Cluster – kann der Angreifer sich jederzeit verbinden“, erklärt Straiker. Solange der Prozess weiterläuft, die GitHub-Autorisierung nicht widerrufen und die Tunnel-Registrierung nicht gelöscht wird, behält der Angreifer dauerhaften Zugriff auf den Rechner.
