CrowdStrike: informasjonstyveren PhantomRaven er nesten sikkert LLM-generert
Sporer informasjonstyveren PhantomRaven til en aktør som høster CI/CD-hemmeligheter fra typosquattede npm-pakker og bruker tilgangen til å kreve inn dusører.
«Koden var nesten helt sikkert LLM-generert, og forfatterens tekniske nivå er sannsynligvis lavt.» Det er dommen CrowdStrike Counter Adversary Operations feller over PhantomRaven, JavaScript-tyveren som ble distribuert gjennom npm i november 2025. I den nye analysen knytter CrowdStrike pakkene til npm-profilene jpdhellonpm1 og jpd15, og til en aktør som selv sier han bruker HackerOne til å håndtere innmeldinger og utbetalinger. Et av kallenavnene aktøren har brukt, er jpdhackerone11.
Leveringsmetoden er det du bør merke deg. De typosquattede pakkene inneholder nesten ingenting, gjerne bare et Hello, world!-skript. Men avhengigheten er oppgitt som en HTTP-URL i stedet for en vanlig npm-referanse, og under installasjonen henter npm den fra angriperens egen infrastruktur. Pakken som kommer tilbake, er PhantomRaven, og den har et preinstall-skript som kjører av seg selv. Domenet npm.jpartifacts.com gikk igjen som kommando- og kontrollkanal i kampanjen i november 2025.
Selve tyveriet er bredt, men grunt. Malwaren samler operativsystem, arkitektur, vertsnavn, lokal og ekstern IP, arbeidskatalog, prosess-ID, Node-versjon, kommandolinjeargumenter og miljøvariabler, pluss brukernavn og e-postadresser fra Git- og npm-konfigurasjonen. Det som koster mest, er listen over CI-variabler fra GitHub Actions, GitLab CI, Jenkins og CircleCI. GITHUB_ACTOR, CI_PROJECT_ID, JENKINS_URL, CIRCLE_BUILD_URL og npm_config_registry står alle der, altså nok til å kartlegge byggkjeden og plukke opp det som måtte ligge av tokens i miljøet. Ekstern IP hentes fra api64.ipify.org, og alt sendes ut både som spørrestreng i en HTTP GET og som JSON i en POST. En reservekanal over WebSocket ligger i koden, men den er ufullstendig og peker på plassholderen wss://yourserver.com/socket.
«Koden inneholder en kommentar foran hver globale variabel og hver funksjonsdefinisjon, til tross for åpenbar overlapp mellom kommentarens forklaring og navnet på symbolet.» — CrowdStrike Counter Adversary Operations
Det er slike spor CrowdStrike bygger LLM-vurderingen på, sammen med plassholderkode, statistisk tokenanalyse og det underlige valget om å eksfiltrere med både GET og POST. Aktøren har også en Python-variant: CrowdStrike fant GitHub-kontoen i desember 2025, og der hadde vedkommende i februar 2025 spurt hvorfor koden ikke lot seg laste opp til PyPI. Svaret fra PyPI-organisasjonen var at navn som ligner eksisterende eller slettede prosjekter ikke tillates, og et medlem anklaget samtidig aktøren for å bygge en informasjonstyver.
Forsvaret har beveget seg i mellomtiden. npm slapp i juni 2026 en versjon som stopper preinstall-skript i avhengigheter med mindre utvikleren eksplisitt tillater dem. I npm 12 og nyere får du et varsel om at skriptet er blokkert, og det kjører først når du godkjenner det med npm install-scripts approve. CrowdStrike venter at flere eCrime-aktører tar i bruk KI-generert verktøy, og viser til PowerShell-skript fra en TRAVELING SPIDER INC-affiliate og PUNK SPIDER sent i 2025 og tidlig i 2026.
Hva bør du gjøre?
- Oppgrader npm til versjon 12 eller nyere, og bruk
npm install-scripts lstil å se hva som er blokkert før du godkjenner noe. - Sett
ignore-scripts=truei.npmrcsom standard, og slå på skriptkjøring bare for de pakkene du faktisk stoler på. - Gå gjennom hva CI-jobbene dine legger i miljøet. PhantomRaven tar alt som ligger der, så tokens som bare trengs i ett steg bør ikke være satt globalt for hele kjøringen.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.