634 passord på 56 sekunder
En utvikler gikk gjennom to intervjurunder med et falskt selskap. Ekte nettside, ekte ansikter, ekte tekniske samtaler. Så kjørte de kodeutfordringen. På under ett minutt var alle Chrome-passord, macOS-nøkkelringen og kryptolommebok-data borte.
En utvikler — sikkerhetsbevisst, erfaren, noen som aktivt leter etter svindel — gikk gjennom en flertrinns intervjuprosess med et falskt selskap. HR-samtale. Teknisk intervju med to ingeniører. Ekte nettside med teambilder. Ekte LinkedIn-profiler. Uker med relasjonsbygging.
Så ble de bedt om å kjøre en liten kodeutfordring under skjermdeling.
56 sekunder senere hadde angriperne 634 lagrede Chrome-passord, macOS-nøkkelring-filen (som inneholder nøkkelen som dekrypterer dem), og MetaMask-lommebokdata.
Hvordan angrepet fungerte
GitHub-repoet så rent ut. Noen få backend-filer, ingenting mistenkelig. Men én avhengighet — winston-middleware, en pakke som høres helt normal ut — hadde sin egen avhengighet: next-runtimejs.
Der lå våpenet.
I det øyeblikket npm install kjørte, ble et shell-skript utført i stillhet. Ingen varsler, ingen advarsler. Det lastet ned en Go-basert bakdør og registrerte den til å starte automatisk ved hver oppstart.
Dette var ikke et script kiddie-verktøy. Egendefinert RC4-kryptert C2-protokoll. Kommandoer for shell-utførelse, filtyveri, uttrekking av Chrome-passord, eksfiltrering av nøkkelring og målretting av kryptolommebøker. Profesjonelt bygget.
Bakdøren startet klokken 16:16:37. Chrome-passord ble aksessert klokken 16:17:33. Utvikleren la merke til en macOS-popup om en utgående forbindelse og skrudde av WiFi innen ett minutt — men skaden var allerede gjort.
Hvorfor intervjuet betydde noe
Dette angrepet ville feilet som en kald e-post. «Kjør dette repoet» fra en fremmed blir ignorert.
Men etter to intervjurunder? Etter å ha ledd sammen over hvor mange falske jobbsvindler som retter seg mot utviklere? Etter at en av intervjuerne sa «Bare se etter bakdører» med et smil?
Da senker du garden. Tilliten er sårbarheten. Malwaren er bare nyttelasten.
Utvikleren sa det best: «Hvis det skjedde med meg, kan det skje med hvem som helst på teamet ditt.»
Hva Chrome-passord faktisk betyr
Chrome krypterer lagrede passord med AES. Dekrypteringsnøkkelen lagres i macOS-nøkkelringen. Angriperne stjal begge filene på under ett minutt.
Hvert lagrede passord — bank, e-post, GitHub, skykonsoller — var lesbart på deres side. Nøkkelring-filen kan knekkes offline uten hastighetsbegrensninger. Utvikleren måtte rotere alt.
Dette er den skitne hemmeligheten med nettleserlagrede passord: de er kryptert med en nøkkel som bor på samme maskin. Kompromitter maskinen, og «krypteringen» er pynt.
DPRK-mønsteret
Utvikleren nevnte at deres forrige selskap også ble hacket av Nord-Korea tre måneder tidligere. Dette er «Contagious Interview»-kampanjen — DPRK-statssponsede angripere som kjører falske jobbintervjuer for å plante malware på utviklermaskiner.
Det er ikke tilfeldig. De retter seg spesifikt mot utviklere på grunn av hva utviklere har tilgang til: produksjonslegitimasjon, signeringsnøkler, skyinfrastruktur og — i økende grad — AI-agent-tokens som kan gi enda mer tilgang.
Skalaen er industriell. Falske selskaper med genererte ansikter. Polerte nettsider. Intervjuprosesser over flere uker. De investerer fordi avkastningen er der.
«Passordadministratorer hjelper ikke»
Utvikleren kom med en interessant påstand i tråden: «Passordadministratorer hjelper ikke hvis de har tilgang til datamaskinen din via en bakdør som dette, fordi de kan overføre hvilken som helst fil senere, lage et spesialtilpasset exploit bare for deg, tasteloggere, skjermbilder.»
Dette er delvis riktig og delvis feil.
En passordadministrator som lagrer hvelvet på den lokale disken din, låst opp med et hovedpassord du skriver inn — ja, en bakdør med tastelogging og filtilgang kan kompromittere det.
Men en passordadministrator med maskinvarebundne nøkler — der dekrypteringsnøkkelen er utledet fra en fysisk autentikator og aldri finnes som en fil på disk — er fundamentalt annerledes. Bakdøren kan stjele filer, logge tastetrykk, ta skjermbilder. Men den kan ikke hente ut en nøkkel som bare finnes inne i en maskinvaresikkerhetsmodul under et fysisk trykk.
De 634 Chrome-passordene ble stjålet fordi både de krypterte dataene og dekrypteringsnøkkelen var filer på filsystemet. Hvis dekrypteringsnøkkelen krever fysisk besittelse av en enhet, får du krypterte blokker og ingenting annet ved å stjele filer.
Hva du bør gjøre
- Kjør aldri kode fra intervjuer på primærmaskinen din. Bruk en VM eller en separat enhet.
- Kjør
npm install --ignore-scriptspå ethvert ukjent repo før du kjører noe - Bruk en utgående brannmur (Little Snitch, LuLu) som varsler om nye forbindelser
- Slutt å lagre passord i Chrome. Punktum.
- Oppbevar krypto på maskinvarelommebøker, ikke nettleserutvidelser
- Behandle hver kodeutfordring fra en rekrutterer som potensielt fiendtlig, uansett hvor mange samtaler du har hatt
Utvikleren overlevde fordi en macOS-popup fanget den utgående forbindelsen i tide. De fleste ville klikket Tillat uten å tenke seg om.
56 sekunder. Det er alt som skal til.