Bemerkenswert ist TrapDoor vor allem wegen seiner vielfältigen Verbreitungswege. Die Angreifer nutzen postinstall-Hooks, ferngeladene JavaScript-Payloads, die beim Import von Paketen ausgeführt werden, sowie bösartige build.rs-Skripte, die sich gezielt an Entwickler von Sui und Move richten. Die Pakete tarnen sich als harmlose Werkzeuge und erreichen dadurch ein breites Publikum.

Bei den npm-Paketen führt der JavaScript-Payload trap-core.js die zentrale Arbeit aus: Er durchsucht das System nach Zugangsdaten und Entwickler-Geheimnissen, prüft gestohlene Daten über API-Aufrufe von AWS und GitHub auf Gültigkeit und richtet Persistenz über Cron-Jobs, systemd-Dienste und Git-Hooks ein. Anschließend bewegt sich die Schadsoftware per SSH durch das Netzwerk. Laut Socket erfolgt die Verankerung zusätzlich über .cursorrules, CLAUDE.md sowie Shell-Hooks.

Die Rust-Crates gehen ähnlich vor: Sie suchen nach lokalen Keystores, verschlüsseln die Daten mit einem fest einprogrammierten XOR-Schlüssel und schleusen sie zu GitHub Gists aus. Ausgelöst wird der Schadcode hier über ein build.rs-Skript.

Die zu TrapDoor gehörenden Python-Pakete werden bereits beim Import automatisch ausgeführt. Ihr Hauptzweck besteht darin, JavaScript von einer durch die Angreifer kontrollierten GitHub-Pages-Domain (ddjidd564.github[.]io) herunterzuladen und mit „node -e“ auszuführen. „Diese Technik erlaubt es dem Python-Paket, die Ausführung an einen entfernten JavaScript-Payload zu delegieren, was dem Angreifer nach der Veröffentlichung mehr Flexibilität verschafft“, erläutert Socket. Da der Payload extern liege, könne der Angreifer das Verhalten ändern, ohne ein neues PyPI-Release zu veröffentlichen.

Ein ungewöhnlicher Aspekt der Kampagne ist das Einschleusen von .cursorrules- und CLAUDE.md-Dateien mit versteckten Anweisungen, die KI-Assistenten zu einem vermeintlichen „Sicherheitsscan“ verleiten sollen – mit dem Ergebnis, dass Geheimnisse aufgespürt und abgezogen werden. Dazu öffnen die Angreifer Pull Requests in populären KI- und Entwicklerprojekten, darunter browser-use/browser-use, langchain-ai/langchain und langflow-ai/langflow.

Diese Pull-Request-Aktivität zeigt laut Socket, dass TrapDoor über das bloße Einschleusen von Schadpaketen hinausgeht. Der Bedrohungsakteur teste vermutlich, ob sich KI-bezogene Projektdateien über reguläre Open-Source-Beitragswege einbringen lassen, sodass KI-Programmierwerkzeuge die versteckten Anweisungen einlesen und befolgen.

Socket fasst zusammen, dass die Angreifer klassisches Typosquatting bei Paketnamen mit neueren Angriffswegen über die Entwicklungsumgebung kombinieren. Die Paketnamen seien so gewählt, dass sie für Krypto-Entwicklung, KI-Tooling, lokale Umgebungseinrichtung und Sicherheitsabläufe relevant erscheinen. Die Schadsoftware nutze anschließend ökosystemspezifische Ausführungswege: build.rs bei Rust, postinstall-Hooks bei npm und Ausführung zur Importzeit bei Python.