AI-gestuurde PromptMink-malwarecampagne
Onderzoekers op het gebied van cyberbeveiliging hebben kwaadaardige code ontdekt die verborgen zat in een npm-pakket. Dit gebeurde nadat een schadelijke afhankelijkheid in een project was geïntroduceerd via code die mede was geschreven door het Claude Opus Large Language Model (LLM) van Anthropic. Deze ontdekking benadrukt hoe bedreigingen voor de softwareleveringsketen evolueren door het misbruik van AI-ondersteunde ontwikkelingsworkflows.
Het pakket dat centraal stond in de campagne, '@validate-sdk/v2', werd op npm gepresenteerd als een softwareontwikkelingskit voor het hashen, valideren, coderen en decoderen van getallen, en het veilig genereren van willekeurige getallen. In werkelijkheid was het ontworpen om gevoelige geheimen te stelen van gecompromitteerde systemen. Onderzoekers vonden aanwijzingen dat het pakket mogelijk was 'vibe-gecodeerd' met behulp van generatieve AI. Het werd voor het eerst geüpload naar npm in oktober 2025.
Inhoudsopgave
PromptMink in verband gebracht met Noord-Koreaanse dreigingsactiviteiten
Onderzoekers hebben de campagne PromptMink genoemd en denken dat deze verband houdt met de Noord-Koreaanse terreurgroep Famous Chollima, ook bekend als Shifty Corsair. Deze groep is eerder in verband gebracht met de langlopende operatie Contagious Interview en frauduleuze IT Worker-oplichting.
De campagne toont aan dat er nog steeds aandacht is voor het open-source ecosysteem, met name voor omgevingen die verbonden zijn aan cryptocurrency en Web3-ontwikkeling.
Door AI mede-geschreven commit introduceerde gevaarlijke afhankelijkheid
Het schadelijke pakket werd via een commit van 28 februari in een repository van een autonome handelsagent geplaatst. Deze commit zou mede geschreven zijn door Claude Opus, een model van Anthropic. Na de installatie konden aanvallers toegang krijgen tot cryptowallets en geld stelen.
De afhankelijkheidsketen liep via meerdere pakketten. '@validate-sdk/v2' werd vermeld in '@solana-launchpad/sdk', dat vervolgens werd gebruikt door een derde pakket genaamd openpaw-graveyard. Dit pakket werd beschreven als een autonome AI-agent die in staat is een sociale on-chain identiteit op te bouwen op de Solana-blockchain via het Tapestry Protocol, cryptocurrency te verhandelen via Bankr en te interageren met andere agenten op Moltbook.
Een commit in de broncode van februari 2026 voegde de besmette afhankelijkheid toe, waardoor kwaadwillende code werd uitgevoerd en inloggegevens werden gelekt die de activa van de wallet in gevaar konden brengen.
Gelaagde infectiestrategie ontworpen om detectie te voorkomen
De aanvallers gebruikten een gefaseerde pakketstructuur. De eerste pakketten leken schoon en bevatten geen duidelijke kwaadaardige code. In plaats daarvan importeerden ze secundaire pakketten waarin de daadwerkelijk schadelijke functionaliteit was opgeslagen. Als een kwaadaardig secundair pakket werd gedetecteerd of verwijderd, werd het snel vervangen.
Enkele van de eerstelaagpakketten die in de campagne werden geïdentificeerd, waren onder meer:
@solana-launchpad/sdk
@meme-sdk/trade
@validate-ethereum-address/core
@solmasterv3/solana-metadata-sdk
@pumpfun-ipfs/sdk
@solana-ipfs/sdk
Deze pakketten beweerden functies te bieden die verband hielden met cryptocurrency en bevatten veel vertrouwde afhankelijkheden zoals axios en bn.js, waardoor ze legitiem leken. Verborgen tussen die vertrouwde bibliotheken bevonden zich echter een kleiner aantal kwaadaardige afhankelijkheden.
Heimelijkheidstechnieken gebruikt door de aanvallers
De daders gebruikten verschillende methoden om de argwaan te verminderen en hun volharding te vergroten:
- Het creëren van kwaadaardige versies van functies die al aanwezig zijn in legitieme, populaire bibliotheken.
- Gebruikmakend van typosquatting-pakketnamen en -beschrijvingen die sterk leken op die van vertrouwde tools.
- Het opsplitsen van de malware in een onschadelijk ogende loader en een payload in de tweede fase.
- Snel roterende, verwijderde of gedetecteerde secundaire pakketten
Het eerste bekende pakket dat aan de campagne is gekoppeld, '@hash-validator/v2', werd in september 2025 geüpload.
Uitbreiding buiten npm en Malware Evolution
Onderzoekers ontdekten maanden later tekenen van deze activiteit, waarmee het gebruik van transitieve afhankelijkheden werd bevestigd om kwaadaardige code uit te voeren op ontwikkelaarscomputers en waardevolle gegevens te stelen. De campagne breidde zich later uit naar de Python Package Index via een kwaadaardig pakket genaamd scraper-npm, dat in februari 2026 werd geüpload en vergelijkbare functionaliteit bood.
Recentere versies van de operatie zouden via SSH permanente toegang op afstand hebben verkregen en gebruik hebben gemaakt van in Rust gecompileerde payloads om complete broncodeprojecten en intellectueel eigendom van geïnfecteerde systemen te stelen.
Van eenvoudige dief tot platformoverschrijdende dreiging
Vroege versies van de malware waren versleutelde JavaScript-stealers die recursief in werkmappen zochten naar .env- en .json-bestanden, alvorens deze voor te bereiden voor exfiltratie naar een door Vercel gehost domein dat eerder in verband was gebracht met activiteiten van Famous Chollima.
Latere versies integreerden PromptMink als een Node.js-applicatie met één uitvoerbaar bestand. Dit verhoogde echter de payloadgrootte van ongeveer 5,1 KB naar bijna 85 MB, waardoor de levering minder efficiënt werd. Om deze beperking te omzeilen, zijn aanvallers naar verluidt overgestapt op NAPI-RS, waarmee vooraf gecompileerde Node.js-add-ons geschreven in Rust mogelijk zijn.
Toenemend risico voor de open-source toeleveringsketen
De ontwikkeling van de campagne, van een simpele informatiediefstal naar een gespecialiseerde, platformoverschrijdende malwarefamilie gericht op Windows, Linux en macOS, toont een aanzienlijke toename in mogelijkheden. De functies omvatten nu het stelen van inloggegevens, het installeren van SSH-backdoors en het stelen van complete ontwikkelprojecten.
Onderzoekers concludeerden dat Famous Chollima AI-gegenereerde code combineert met gelaagde pakketbezorgingsmethoden om detectie te omzeilen en geautomatiseerde codeerassistenten effectiever te manipuleren dan menselijke ontwikkelaars.