Rizikové podnikání: Vysvětlení samomazných npm balíčků

Rizikové podnikání: Balíčky proti proktorování, které se samy odstraní

TL, DR

Balíčky se samy smažou. Během patnácti dnů v srpnu jeden operátor npm publikoval devět balíčků pod devíti jmény ze sedmi účtů a osobně osm z nich stáhl. Doba, po kterou každý z nich zůstal v platnosti, se zkrátila ze třinácti hodin na sedmnáct minut. Tato technika není jen jejich: sedm dalších balíčků od nesouvisejících operátorů, nesoucích zcela odlišné datové zátěže, bylo staženo jejich vlastními vydavateli v průměru za 37.8 minuty. Artefakt je pryč dříve, než se spustí většina obranných procesů, a instalace již proběhla.

Všechno, co registr zpřístupňuje, se rotuje; datová část ne. Všech devět odeslalo bajtově identický bin/ adresář, stejný SHA-256 algoritmus prochází třemi názvy balíčků a dvěma účty s odstupem patnácti dnů. Identita obsahu je jediným sledovacím signálem, který tento operátor neprolomil, a jediný balíček, který nikdy nestáhl, je důvodem, proč by cokoli z něj vůbec mohlo být prozkoumáno.

Lidé, kteří to instalují, nejsou oběťmi a stejně jsou těžce vystaveni riziku. Tento nástroj není určen pro vývojáře: eliminuje vzdálené sledování zkoušek pomocí skrytého snímání obrazovky, extrakce textu na obrazovce a vrácení odpovědí do překryvné vrstvy, takže… kdokoli běží npm install je spíše zamýšleným příjemcem než cílem. Také spouštějí nepodepsaný binární soubor, který dešifruje úložiště souborů cookie jejich prohlížeče z účtu, který se do hodiny sám smaže. Nemohou obdržet opravu, nemohou později auditovat, co spustili, a nemohou nahlásit škodu, aniž by odhalili, proč ji nainstalovali.

Ekosystém: npm, stejný vzorec pozorovaný na PyPI. Období: Červen–srpen 2026.

Měření

Doba prodlevy je interval mezi zobrazením a zmizením balíčku, vypočítaný z vlastních metadat registru. Jedná se o měření, nikoli odhady.

BalíčekPublikováno (UTC)Levý stojící
moidev2026-08-16 16:315h 58m
moidevx2026-08-17 03:2413h 23m
moidevz2026-08-26 03:3812h 56m
moideva2026-08-26 18:581h 33m
amicat2026-08-28 20:4817m
bmcat2026-08-28 21:1747m
eyevox2026-08-28 21:4421m
moidevh2026-08-31 03:2247m

Při čtení v pořadí publikace se okno zmenšuje více než čtyřicetinásobně – z 13 hodin 23 minut v nejširší části na 17 minut v nejužší. První čtyři balíčky trvají v průměru osm a půl hodiny; poslední čtyři v průměru třicet tři minut. Dne 28. srpna byly v rámci jediného 77minutového rozmezí publikovány a staženy tři balíčky.

Nejde o postupný pokles. Je koncentrovaný mezi 26. a 28. srpnem a změnil se odhad operátora, jak dlouho může balík bezpečně stát.

Každé stažení zde iniciuje vydavatel. V registru je pro každý z nich uveden prázdný seznam správců vedle čas.nepublikováno záznam – podpis zrušení publikace, nikoli stažení. Devátý balíček, eyious, nebyl nikdy vůbec stažen; to je důvod, proč cokoli z toho mohlo být prozkoumáno.

Existuje i druhý režim pro odstoupení od smlouvy, který by se s tímto neměl zaměňovat. Pokud pouze verze užitečného zatížení Pokud je balíček vytažen a přežije, je medián zhruba 73 hodin u 31 balíčků. Tyto náhrady dorazí v předem naplánovaných dávkách a zanechají prázdnou schránku – balíček.json prohlašuje hlavní který neposílá žádný soubor – jehož jedinou funkcí je udržovat název zachován. Tímto režimem je dodržování plánu. Tento režim je vyladěné okno expozice.

Co přežije smazání

Devět z těchto balíčků je od jednoho operátora: moidev, moidevx, moidevz, moideva, moidevh, amicat, bmcat, eyevox a eyiousNázvy nemají žádnou konvenci – kdokoli sleduje moidev Stem by jich více než polovinu minul – a byly publikovány ze sedmi různých účtů, téměř všechny registrované na doménách jednorázových e-mailů.

Sdílejí pouze záznam v manifestu, který nemá žádný důvod k existenci:

"koš": { "": "bin/kalamasha-tool.js" } }

Před odstraněním jsme si ponechali kopie pěti. U všech pěti, celá zásobník/ adresář je bajtově identický:

SouborSHA-256
bin/kalamasha-tool.js0c293be90c10c8a7618d25f4c4811fa63612b7bc5199b86e10bb31eb36c716dd
bin/uia_extract.exee2fda5aa8397799669f29258f69e803cf05d322c1d93269eef6754ca024c3865
bin/chrome_cookies.ps121b61ec810331850d72423c40c5448e6cd310c4cfad6aed54f92cd7e7cac5f3a
bin/stealth_capture.ps1c9baf5897c03b941c54f736df5af9243ad28794a9e69746d41d4f4a34065589c
bin/uia_extract.pyc20b38c63efd9221930095c54b42cdd5adffa1972c44c4578226cbe1e4dbac3e
bin/uia_get_text.ps14a3f3ada0bdf13aa8e89edb8af817c7816296147dae5be25f169ff960d28a87c

Dva další signály se shodují. Tři z balíčků byly publikovány v 03:24, 03:38 a 03:22 UTC 17. srpna, 26. srpna a 31. srpna – šestnáctiminutové pásmo v patnácti dnech a na třech samostatných účtech. A dva z těchto účtů byly registrovány na stejné jednorázové e-mailové doméně, což je spojovalo nezávisle na kódu.

Účty

Toto jsou účty vydavatelů npm, které odeslaly datovou část, s každým nahraným balíčkem a dobou, po kterou byl balíček ponechán:

Účet vydavateleBalíčekE-mailová doménaLevý stojící
letol39119moidev:1.0.0hutdot.com (jednorázové)5h 58m
so1d1a7i27moidevx:1.0.0ogzmail.com (jednorázový)13h 23m
lololololol435678eyiouss:3.0.21, 3.0.22, 4.0.1ogzmail.com (jednorázový)stále vydáváno
tagadob568moidevz:1.0.0ebflyai.com (jednorázové)12h 56m
tayihim489moideva:1.0.0prodbits.com (jednorázové)1h 33m
sahihai123amicat:1.0.0, bmcat:2.0.9, eyevox:1.0.0spotřebitelský webmail17m / 47m / 21m
heytoshanmoidevh:1.0.0spotřebitelský webmail47m

so1d1a7i27 a lololololol435678 sdílet ogzmail.com registrační doména – odkaz, který propojuje účet, na kterém je stále hostována aktivní kopie, s účtem, který byl publikován pod doménou moidev stonek o dva týdny dříve. sahihai123 zveřejnil a stáhl tři samostatné názvy balíčků v rámci jednoho 77minutového okna 28. srpna. hejtošan registrované, zveřejněné moidevha o 47 minut později jej stáhl; zůstává jedinou publikací z tohoto účtu.

Žádný z těchto účtů nemá ověřený e-mail, nemá ověřený odkaz na správu zdrojů a nepublikoval žádný nesouvisející projekt. Šest ze sedmi již nic nehostuje.

Jeden balíček nebyl nikdy stažen. eyious:4.0.1 byl publikován od 16. srpna a v době psaní tohoto článku byl stále řešitelný. Osm artefaktů nebylo možné obnovit; kampaň byla kompletně rekonstruována z toho, který zůstal. Operátor, který reflexivně smaže, nakonec jeden artefakt zachová.

Co nástroj dělá

eyious:4.0.1 Na npm se popisuje jako „vysoce výkonný nástroj DOM a diagnostický most pro moderní webové aplikace“. Jedná se o nástroj pro snímání obrazovky a načítání odpovědí, který je navržen pro běh pod vzdáleným dohledem nad zkouškami, a zdroj to uvádí vlastními slovy.

Spouštěč před spuštěním zkopíruje běhové prostředí Electron pod falešným názvem souboru a pojmenuje to, čemu se vyhýbá:

// 🛡️ NÁZEV BINÁRNÍHO SOUBORU STEALTH: NESMÍ kolidovat se skutečným Testpadem! const STEALTH_NAME = 'SearchApp.exe';

Záhlaví stejného souboru jej nazývá Hlídací pes proti duchům Anti-Proctor a implementuje smyčku respawnu, která se tím více zpomaluje, čím rychleji je zničen. Jinde si proces zvyšuje vlastní prioritu. bojovat proti omezení CPU (proctoringu), po získání fokusu odsune aplikaci zkoušky z popředí a ukončí podřízený proces Bezpečného prohlížeče zkoušek pomocí taskkill /F /T.

Zachycení probíhá pomocí skriptu PowerShellu, který je spuštěn s vypnutou politikou spouštění a potlačeným oknem, přičemž text na obrazovce je shromažďován paralelně prostřednictvím automatizace uživatelského rozhraní systému Windows. Obrázky a text ve frontě jsou odesílány do relace jazykového modelu ve vloženém prohlížeči a odpověď je vykreslena v překryvné okně, která je vždy nahoře. Toto připojení je záměrně odloženo a kód uvádí důvod: aby se zabránilo trvalé expozici NETSTATu.

Balíček je také odesílán chrome_cookies.ps1, v čele CHROMOVÝ EXTRAKTOR NA SUŠENKY, který dešifruje soubory cookie Chrome a Edge pomocí DPAPI a čte databázi souborů cookie až ze čtyř profilů prohlížeče. Uvedené předemcisely: V žádném dodaném JavaScriptovém souboru jsme nenašli skript volaný podle názvu. Přítomná a dosažitelná je pouze ta část, která vkládá uložené soubory cookie relace do vloženého prohlížeče.

Postavení lidí, kteří jej instalují

Nikdo tohle neinstaluje náhodou. Mimo monitorovanou zkoušku to nemá žádnou funkci a výstupem je překryvná vrstva odpovědi na obrazovce uživatele. Klamavý popis balíčku vůbec není zaměřen na instalačního programu – je to maskování zaměřené na registr a na kohokoli, kdo následně provádí audit počítače. Instalační program ví, co dostává; popis existuje, takže záznam instalace to neodráží.

Poškozenými stranami jsou třetí strany, které se nikdy nedotkly npm: instituce pořádající zkoušku, ostatní kandidáti a všichni následní uchazeči, kteří se spoléhají na to, že pověření něco znamená.

Instalační program ale proto není bezpečný a tuto část je třeba zdůraznit, protože samotný model mizejícího balíčku vytváří expozici.

Spouštějí nepodepsaný binární soubor od nobody. uia_extract.exe je kompilován bez uvedení zdroje a původu sestavení z účtu, který již neexistuje. Stejný soubor byl znovu publikován uživatelem hash. letol39119, so1d1a7i27, lololololol435678, tagadob568, tayihim489, sahihai123 a hejtošan během patnácti dnů. Není potřeba se zeptat správce, není potřeba číst repozitář ani kontrolovat historii – každá identita, která jej odeslala, se sama smazala.

Poskytli mu přesně ty funkce, které malware potřebuje. Skrytý proces běžící pod falešným jménem, ​​který dešifruje úložiště souborů cookie prohlížeče, nepřetržitě čte obrazovku, ukončuje bezpečnostní software a po ukončení se znovu spustí. Dnes je dešifrování souborů cookie omezeno na domény jednoho dodavatele a obsluhuje vlastní relaci uživatele. Tento rozsah je změna jednoho řádku a nic o modelu doručování by ji neodhalilo, pokud by se změnila – nové jméno, nový účet, nové nahrání.

Nemohou dostat opravu. Publikace balíčku je zrušena do hodiny. Neexistuje žádná cesta k aktualizaci, žádné upozornění a žádný způsob, jak později zjistit, že verze, kterou nainstalovali, se lišila od té, kterou nainstaloval jejich přítel. Cokoli je v počítači, tam zůstane.

Nemohou auditovat, co provozovali. Jejich soubor lockfile nyní odkazuje na balíček, který se již neresolvuje. Pokud by později chtěli zjistit, co se na jejich počítači nacházelo – po incidentu nebo sporu – registr jim žádný záznam neposkytne.

A nemohou nahlásit újmu. Uživatel napadený tímto nástrojem nemůže podat hlášení o zneužití, aniž by uvedl, proč jej nainstaloval. To není náhoda. Hlášení o zneužití registru jsou hlavním kanálem, kterým jsou zachycovány krátkodobé balíčky, a uživatelská základna tohoto operátora je strukturálně neschopná používat. Jediným zbývajícím protivníkem je automatické skenování – vůči kterému je kalibrováno sedmnáctiminutové okno.

Struktura oběti a doba setrvání jsou stejný fakt, který byl pozorován dvakrát. Vysvětluje to také anomálii v časové ose: pokud by stažení bylo motivováno strachem ze stížností, dlouhodobě populární balíček by zmizel jako první. Nestalo se tak, protože stížnosti nikdy nepřicházejí.

Stejný vzorec, jiný operátor

Operátor dozoru v tom není sám a nejjasnější paralelní operace běží na nesouvisejícím datovém zatížení.

Mezi 24. a 27. srpnem se objevily čtyři npm balíčky pod názvy převzatými z nástrojů pro dvoufaktorové ověřování – auth-OTP, tajný klíč-2fa, tajný klíč2fa a 2fa-tajný klíč — nesou mezi sebou šestnáct verzí. Každá z nich byla publikována z vlastního nově registrovaného účtu (beayilol, jeanpaul686g, zzzalipay, dluuuuu), všechny neověřené e-mailem, žádné s ověřeným odkazem na správu zdrojů, žádné nepublikující nic jiného. Každý z nich byl stažen vlastním vydavatelem.

Úžitková zátěž nemá nic společného se softwarem pro zkoušky. Čte úložiště přihlašovacích údajů prohlížeče a tokeny Discordu a prochází ověřovacím žebříčkem Xbox Live ve spouštěči Minecraftu, aby zachytil token pro obnovení. Zde je instalační program. is oběť v běžném slova smyslu – což je to, co dělá srovnání užitečným, protože chování při doručování je bez ohledu na to stejné.

Čtyři cykly probíhaly v pořadí podle publikace v časech 274.9, 37.8, 37.6 a 35.7 minuty: jeden dlouhý první pokus, poté konvergence k platnému číslu. Další tři balíčky opět patří jiným operátorům a vykazují stejné chování při výběru.

BalíčekOperátorLevý stojící
octopus-actionprůzkumný maják2.5 min
mt-ts-serverless-starterprůzkumný maják9.6 min
2fa-secretkeyKrycí jména 2FA35.7 min
secretkey2faKrycí jména 2FA37.6 min
secretkey-2faKrycí jména 2FA37.8 min
auth-otpKrycí jména 2FA274.9 min
hex-encode-utilsostatní724.2 min

Sedm balíčků, medián 37.8 minuty, žádný z nich se netýkal softwaru pro zkoušky.

Tři nesouvisející datové části, tři nesouvisející sady účtů, jedna sdílená technika.

Proč se okno zavírá

V prostředí registru se během roku 2026 něco změnilo a zřejmým kandidátem je, že se skenování zrychlilo.

Až donedávna byly škodlivé balíčky objevovány hlavně dodatečně: na základě zaznamenání uživatelem, na základě následného hlášení nebo pravidelného prohledávání. Latence detekce se měřila ve dnech. To už není jediný režim. Analýza nově publikovaných balíčků v téměř reálném čase – Vlastní systém včasného varování před malwarem od společnosti Xygeni mezi rostoucím počtem takových systémů v celém odvětví – zmenšuje propast mezi publikací a inspekcí na něco mnohem kratšího.

Operátor, který čelí tomuto problému, má dvě možnosti. Ztížit rozpoznání datové části nebo zkrátit dobu, po kterou je k dispozici k prohlížení. Druhá možnost je levnější, nevyžaduje žádné inženýrské zásahy a registr poskytuje mechanismus zdarma: během 72hodinového okna pro zrušení publikování v npm může vydavatel balíček jednostranně odstranit a název lze později znovu použít. Zrušení operátora nic nestojí.

Načasování sedí. Oba výše uvedené operátory konvergují k určitému číslu a drží ho, místo aby se odchylovaly, což je spíše to, jak vypadá laděný parametr, než aby to byla otázka pohodlí. A parametr, ke kterému konvergovali – desítky minut – se nachází předcispřesně tam, kde by se musel nacházet, aby překonal automatickou inspekční propustku a zároveň ponechal balíček instalovatelný dostatečně dlouho na to, aby oslovil své publikum.

Toto zůstává hypotézou. Časová data nemohou oddělit reakci na skenování od reakce na vynucení registru ani od běžného operačního zrání, jak se tito operátoři učí jeden od druhého. To, co lze říci bez inference, je užší a stále užitečné: Okno expozice je nyní dostatečně krátké, aby jakákoli kontrola závislá na kontrole balíčku po publikaci závodila s časem nastaveným operátorem. Ovládací prvky, které nezávisí na inspekci – karanténa podle věku, zakázané instalační skripty – nejsou danou rasou ovlivněny, což je praktický důvod pro jejich preferenci.

Co s tím dělat

Karanténa podle věku. Nic v tabulce doby prodlevy nepřežilo třináct hodin. Zásada, že žádná verze závislostí nemůže být nainstalována, dokud neexistuje 72 hodin, by vyloučila všechny verze, aniž by cokoli detekovala.

Ve výchozím nastavení zakázat instalační skripty. –Ignorovat skripty odstraňuje mechanismus doručování, na kterém závisí balíčky kradející přihlašovací údaje v tomto korpusu. Nepomáhá proti nástroji, který uživatel spouští úmyslně, což je předemcisten rozdíl, který stojí za pochopení.

Zmizení považujte za bezpečnostní událost. Upozornit, když se nainstalovaná závislost přestane řešit. Důkazy se stále nacházejí ve vašem souboru zámku, nikoli v registru.

Sledujte obsah, ne jména. Šest výše uvedených výtahů se shoduje bez ohledu na název balíčku, účet vydavatele nebo řetězec verze – každé pole, u kterého tento operátor prokázal, se změní. Pravidlo na straně registru, že nově registrovaný účet, který stáhne svůj jediný balíček do hodiny, je vzorem pro hlášení, by se aktivovalo u každého balíčku zde, a to pouze na základě metadat.

A pokud uvažujete o instalaci něčeho v této kategorii: Vlastnosti, které registru ztěžují zachycení, jsou tytéž vlastnosti, kvůli kterým nemáte žádnou možnost nápravy. Neexistuje žádný vydavatel, kterého byste mohli hnát k odpovědnosti, žádná cesta k aktualizaci a žádný záznam o tom, co jste spustili.

indikátory

TypHodnota
Souborbin/kalamasha-tool.js — ne-standard vstupní bod pro koš
SHA-2560c293be90c10c8a7618d25f4c4811fa63612b7bc5199b86e10bb31eb36c716dd
SHA-256e2fda5aa8397799669f29258f69e803cf05d322c1d93269eef6754ca024c3865
ProcesSearchApp.exe napsané vedle legitimního běhového prostředí Electron
Chovánípowershell -ExecutionPolicy Bypass -File s windowsHide: true
Chovánítaskkill /F /T zaměření na proces Bezpečného prohlížeče zkoušek
MetadataPrázdný seznam správců vedle time.unpublished záznam
Účtyletol39119, so1d1a7i27, lololololol435678, tagadob568, tayihim489, sahihai123, heytoshan
Registraceogzmail.com, hutdot.com, ebflyai.com, prodbits.com — domény pro jednorázové e-maily

Reference

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni