Inhalt
Kurz gesagt: Contagious Interview ist eine Angriffsmasche mit falschen Recruitern, betrieben von nordkoreanischen Hackern. Sie geben sich auf Plattformen wie Upwork und LinkedIn als Kunden oder Recruiter aus und bringen dich am Ende dazu, selbst ein „Testprojekt“ auszuführen oder eine „Meeting-App“ zu installieren. Eine Regel entlarvt das: Wenn ein Bewerbungsprozess verlangt, dass du unbekannten Code auf deinem eigenen Rechner ausführst, hör auf. Wenn du ihn schon ausgeführt hast, geh offline, such nach unbekannten Hintergrundprozessen und Ordnern, ändere deine Passwörter und melde auf den wichtigen Websites alle angemeldeten Geräte ab.
Das erste Mal: Juni 2026
Ein Kunde, der sich als Ukrainer ausgab, meldete sich auf Upwork. Er hatte ein Projekt, wollte meine Hilfe dabei und schickte mir ein Node.js-Testprojekt namens „Online_Store“.
Der Schadcode steckte in einer seiner npm-Abhängigkeiten. Welches Paket genau, weiß ich nicht mehr; ich glaube, es hatte mit Tailwind zu tun. Sobald ich das Projekt ausgeführt hatte, legte es unbemerkt einen Ordner ~/.node_modules auf meinem Rechner an, mit axios und socket.io-client darin, eingerichtet, um meine Daten nach draußen zu schicken.
Als ich es bemerkte, lief es schon seit Tagen im Hintergrund. Entdeckt habe ich es nur durch Glück: Einem Kollegen von mir in Großbritannien war genau dasselbe passiert, und als er mir davon erzählte, wurde mir klar, dass es mich wahrscheinlich auch erwischt hatte.
Das zweite Mal: Oktober 2026
Diesmal gab sich die Person als Litauer aus, von einer Kapitalgesellschaft namens Veyron Capital (veyron[.]capital), die auf Upwork einen ganzen Schwung Web3-Jobs ausgeschrieben hatte.
Er schrieb mich zuerst an und setzte dann einen Videocall auf Upwork an. Seine Kamera blieb aus, und er sprach die ganze Zeit Chinesisch mit mir. Danach bat er mich, ihn auf Telegram hinzuzufügen, und holte mich in eine Gruppe, in der ich eine Web3-Demo bauen und sie dem Team in einem Meeting vorstellen sollte.
Als es Zeit für die Präsentation war, hieß es, ein Kollege sei auf Reisen und könne das übliche Meeting-Tool nicht nutzen, also müssten wir auf eine Meeting-App namens „Zeff“ (zeff[.]app) wechseln. Jemand anderes aus der Gruppe „half“ mir bei der Installation und gab mir zwei Möglichkeiten: einen curl | bash-Befehl im Terminal ausführen oder ein DMG herunterladen.
Ich habe es nicht installiert. Nachdem ich mich einmal verbrannt hatte, wusste ich in dem Moment, als ich „Führ diesen unbekannten Befehl in deinem Terminal aus, damit wir ein Meeting machen können“ las, dass es derselbe Trick war.
Rückblick
Beide Male war es Nordkoreas „Contagious Interview“: falsches Recruiting und falsche Vorstellungsgespräche. Sie bauen Vertrauen über etwas auf, das wie ein gewöhnlicher Job aussieht, und bringen dich dann dazu, ihren Code mit deinen eigenen Händen auszuführen.
Am meisten hat mich gestört, dass weder das in macOS eingebaute XProtect noch klassische Antivirensoftware auch nur einen Mucks gemacht haben, beide Male nicht.
Claude Code als mein Forensiker
Nach der ersten Infektion war es Claude Code, das das Problem wirklich ausgegraben hat. Ich habe Fable 5 (Max) benutzt, ihm die nötigen Berechtigungen gegeben und es wie einen Ermittler meine ganze Festplatte und meine Hintergrundprozesse durchgehen lassen. Es fand schnell heraus, dass die Malware noch lief, und führte mich dann Schritt für Schritt durch die komplette Bereinigung.
Was ich verloren habe
Zum Glück nichts. Am meisten ist diese Art Malware auf Krypto-Wallets aus, und auf diesem Rechner habe ich keine. Bei den Accounts, die mir wichtig sind, ist überall die Zwei-Faktor-Authentifizierung aktiviert, also konnte sich selbst mit meinen Passwörtern niemand anmelden.
Eine Warnung trotzdem: Diese Malware stiehlt meist auch die im Browser gespeicherten Login-Sitzungen (Cookies). Damit kann ein Angreifer die Zwei-Faktor-Authentifizierung überspringen und direkt in deine Accounts spazieren. Wenn es dich erwischt, ändere also deine Passwörter und melde außerdem auf den wichtigen Websites alle angemeldeten Geräte ab.
Also habe ich ein Tool gebaut: Tsuba
Nach diesen zwei Begegnungen sah ich, wo die Lücke war. Diese Angriffe kommen jedes Mal in neuer Verpackung und nutzen die gewöhnlichsten Tools überhaupt, wie node, curl und bash, also hat klassische Antivirensoftware keinen Grund, sie verdächtig zu finden.
Also habe ich eine kleine macOS-Menüleisten-App namens Tsuba gebaut (鍔, das Stichblatt eines japanischen Schwerts). Die Idee ist einfach: Bevor unbekannter Code zum ersten Mal läuft, wirft sie für dich einen Blick darauf. Sie ermittelt, was der Code gleich tun wird, woher er kommt und ob er wie ein bekannter Angriff aussieht, und entscheidet dann, ob sie ihn zulässt, dich warnt oder ihn blockiert.
So passt das auf meine beiden Fälle:
- Ein falsches Interview-Projekt wie beim ersten Mal: Bevor du
npm installodernpm startausführst, prüft Tsuba, ob die Abhängigkeiten auf öffentlichen Listen bösartiger Pakete stehen, und durchsucht den Quellcode des Projekts nach verstecktem Code, fest eingetragenen Remote-Adressen oder Code, der Wallets und Passwortspeicher ausliest. Wenn du dir immer noch unsicher bist, kannst du das Projekt probeweise in einer Sandbox laufen lassen und zusehen, was es wirklich tut. - Eine falsche Meeting-App wie beim zweiten Mal: Wenn Tsuba
curl | bashsieht, lädt es das entfernte Skript herunter, ohne es auszuführen, und prüft, was es tun würde. Bei heruntergeladenen DMGs werden auch Signatur, Notarisierung und Herkunft geprüft.
Tsuba ist kostenlos und Open Source (auf GitHub, Apache 2.0). Den Download für Macs mit Apple silicon und Intel und alles Weitere findest du auf der Tsuba-Seite. Wenn du Aufträge über Upwork oder ähnliche Plattformen annimmst oder oft Code ausführst, den andere dir schicken, probier es aus.