162 skadelige release-artefakter fordelt på 108 unike pakker. Det er omfanget sikkerhetsselskapet Socket nå har kartlagt i PolinRider-kampanjen, som knyttes til den nordkoreanske trusselklyngen «Contagious Interview» (også kjent som «Famous Chollima»). Angrepet startet i npm-registeret, men har ifølge developer-tech spredt seg til 80 Go-moduler, 10 Packagist-pakker og minst én Chrome-utvidelse.
Det tekniske er verdt å forstå fordi det utnytter verktøyene dine, ikke applikasjonen din. Angriperne gjemmer en JavaScript-loader inne i falske .woff2-fontfiler og legger en skjult bakgrunnsoppgave i .vscode/tasks.json. Oppgaven kjører automatisk når du åpner prosjektmappen, sender fontfila til Node.js og starter infeksjonen før du har kompilert en eneste linje. Loaderen henter så krypterte andretrinns-nyttelaster fra offentlig RPC-infrastruktur på TRON, BNB Smart Chain og Aptos, dekrypterer med innebygde XOR-nøkler og kjører koden via eval().
Metoden for å komme inn er kapring av legitime vedlikeholderkontoer. Socket peker på GitHub-kontoen «Xpos587», der flere prosjekter fikk samtidige oppdateringer innenfor et smalt tidsvindu, et mønster som avslører kontokompromittering framfor vanlig vedlikehold. Angriperne bruker Git force-push og antidaterte commits for å veve endringene inn i eldre historikk, slik at commit-loggen ser rutinemessig ut.
Sluttmålet er ikke maskinen din, men CI/CD-pipelinen bak den. Andretrinns-nyttelastene OmniStealer og DEV#POPPER høster legitimasjon, og tyveri av for eksempel Kubernetes-nøkler gir angriperne direkte tilgang til produksjonsinfrastruktur. Der kan de injisere skadelige artefakter i selskapets egne bygg og gjøre offeret til distributør av neste ledd i forsyningskjedeangrepet.
Hva bør du gjøre?
- Pin avhengigheter til eksakte versjoner og gjennomgå repo-aktivitetslogger for force-push og antidaterte commits, ikke bare selve diff-en.
- Slå av automatisk kjøring av
tasks.jsoni VS Code, og vær skeptisk til.woff2-filer og andre «statiske» ressurser i pakker du trekker inn. - Se etter loadere gjemt i konfigfiler som
vite.config.jsogeslint.config.js, der 7span-teamet overså sekundære varianter under opprydding.