Lt; DR
Paketai patys išsitrina. Per penkiolika rugpjūčio dienų vienas npm operatorius paskelbė devynis paketus devyniais vardais iš septynių paskyrų ir aštuonis iš jų atsiėmė asmeniškai. Kiekvieno likęs galiojimo laikas sutrumpėjo nuo trylikos valandų iki septyniolikos minučių. Ši technika nėra vienintelė jų: dar septynis paketus iš nesusijusių operatorių, kuriuose buvo visiškai skirtingi naudingieji duomenys, jų pačių leidėjai atsiėmė vidutiniškai per 37.8 minutės. Artefaktas dingsta dar prieš paleidžiant daugumą gynybinių procesų, o diegimas jau įvyko.
Viskas, ką registras atskleidžia, keičiasi; naudingoji apkrova – ne. Visi devyni išsiuntė baitiškai identišką kodą bin/ kataloge tie patys SHA-256 santraukų rinkiniai trijuose paketų pavadinimuose ir dviejose paskyrose, su penkiolikos dienų skirtumu. Turinio tapatybė yra vienintelis sekimo signalas, kurio šis operatorius nenulaužė, o vienintelis paketas, kurio jie niekada neatsiėmė, yra priežastis, kodėl jį apskritai buvo galima ištirti.
Jį montuojantys žmonės nėra aukos ir vis tiek yra labai pažeidžiami. Ši priemonė nėra skirta kūrėjams: ji panaikina nuotolinį egzaminų stebėjimą naudodama paslėptą ekrano kopiją, teksto ištraukimą ekrane ir atsakymų grąžinimą į perdangą, todėl kas bėga npm install yra numatytas naudos gavėjas, o ne taikinys. Jie taip pat paleidžia nepasirašytą dvejetainį failą, kuris iššifruoja jų naršyklės slapukų saugyklą iš paskyros, kuri per valandą išsitrina. Jie negali gauti pataisos, vėliau negali patikrinti, ką paleido, ir negali pranešti apie žalą neatskleisdami, kodėl jį įdiegė.
Ekosistema: npm, tas pats modelis pastebėtas ir PyPI. Laikotarpis: 2026 m. birželis–rugpjūtis.
Matavimas
Užlaikymo laikas yra intervalas tarp paketo pasirodymo ir išnykimo, apskaičiuojamas pagal paties registro metaduomenis. Tai matavimai, o ne įvertinimai.
| Paketas | Paskelbta (UTC) | Kairė stovinti |
|---|---|---|
moidev | 2026-08-16 16:31 | 5val 58m |
moidevx | 2026-08-17 03:24 | 13val 23m |
moidevz | 2026-08-26 03:38 | 12val 56m |
moideva | 2026-08-26 18:58 | 1val 33m |
amicat | 2026-08-28 20:48 | 17m |
bmcat | 2026-08-28 21:17 | 47m |
eyevox | 2026-08-28 21:44 | 21m |
moidevh | 2026-08-31 03:22 | 47m |
Skaitant leidimo tvarka, langas susitraukia daugiau nei keturiasdešimt kartų – nuo 13 val. 23 min. plačiausiame lange iki 17 minučių siauriausiame lange. Pirmieji keturi paketai vidutiniškai trunka aštuonias su puse valandos; paskutiniai keturi – trisdešimt tris minutes. Rugpjūčio 28 d. per vieną 77 minučių laikotarpį buvo paskelbti ir pašalinti trys paketai.
Susitraukimas nėra laipsniškas dreifas. Jis sutelktas rugpjūčio 26–28 dienomis, o pasikeitė operatoriaus įvertinimas, kiek laiko pakuotė gali saugiai stovėti.
Kiekvieną pašalinimą čia inicijuoja leidėjas. Kiekvieno registro dokumente šalia rodomas tuščias prižiūrėtojų sąrašas. laikas.nepaskelbtas įrašas – paskelbimo panaikinimo, o ne pašalinimo parašas. Devintas paketas, eyious, niekada nebuvo atšauktas; tai yra priežastis, kodėl visa tai galėjo būti išnagrinėta.
Yra antras išėmimo iš darbo režimas, kurio nereikėtų painioti su šiuo. Kai tik Naudingosios apkrovos versija ištraukiama ir pakuotė išlieka, mediana yra maždaug 73 valandos 31 pakuotėje. Šie pakaitalai atkeliauja pagal scenarijų parengtomis partijomis ir palieka tuščią apvalkalą – a paketas.json deklaruojant pagrindinis kuris nesiunčia jokio failo – kurio vienintelė funkcija yra išsaugoti vardą. Tas režimas tvarko pagal tvarkaraštį. Šis yra sureguliuotas ekspozicijos langas.
Kas išlieka po ištrynimo
Devyni iš šių paketų yra vieno operatoriaus: moidev, moidevx, moidevz, moideva, moidevh, draugiškas, bmcat, eyevox bei eyiousPavadinimai neturi jokios konvencijos – kas nors, kas seka moidev „stem“ būtų praleidęs daugiau nei pusę jų – ir jie buvo paskelbti iš septynių atskirų paskyrų, beveik visos registruotos vienkartinio naudojimo el. pašto domenuose.
Jie dalijasi manifestiniu įrašu be jokios priežasties egzistuoti:
„dėžė“: { "": "bin/kalamasha-tool.js" } } Prieš pašalinimą išsaugojome penkių kopijas. Visuose penkiuose – visas šiukšliadėžė/ katalogas yra baitų atžvilgiu identiškas:
| filė | SHA-256 |
|---|---|
bin/kalamasha-tool.js | 0c293be90c10c8a7618d25f4c4811fa63612b7bc5199b86e10bb31eb36c716dd |
bin/uia_extract.exe | e2fda5aa8397799669f29258f69e803cf05d322c1d93269eef6754ca024c3865 |
bin/chrome_cookies.ps1 | 21b61ec810331850d72423c40c5448e6cd310c4cfad6aed54f92cd7e7cac5f3a |
bin/stealth_capture.ps1 | c9baf5897c03b941c54f736df5af9243ad28794a9e69746d41d4f4a34065589c |
bin/uia_extract.py | c20b38c63efd9221930095c54b42cdd5adffa1972c44c4578226cbe1e4dbac3e |
bin/uia_get_text.ps1 | 4a3f3ada0bdf13aa8e89edb8af817c7816296147dae5be25f169ff960d28a87c |
Dar du signalai sutampa. Trys paketai buvo paskelbti rugpjūčio 17, 26 ir 31 dienomis 03:24, 03:38 ir 03:22 UTC laiku – šešiolikos minučių trukmės juosta per penkiolika dienų ir trijose atskirose paskyrose. Be to, dvi iš šių paskyrų buvo užregistruotos tame pačiame vienkartiniame el. pašto domene, susiejant jas nepriklausomai nuo kodo.
Sąskaitos
Šios yra „npm“ leidėjų paskyros, iš kurių buvo išsiųstas naudingasis turinys, nurodant kiekvieną įkeltą paketą ir kiek laiko jis buvo paliktas veikti:
| Leidėjo paskyra | Paketas | El. pašto domenas | Kairė stovinti |
|---|---|---|---|
letol39119 | moidev:1.0.0 | hutdot.com (vienkartinis) | 5val 58m |
so1d1a7i27 | moidevx:1.0.0 | ogzmail.com (vienkartinis) | 13val 23m |
lololololol435678 | eyiouss:3.0.21, 3.0.22, 4.0.1 | ogzmail.com (vienkartinis) | vis dar publikuojamas |
tagadob568 | moidevz:1.0.0 | ebflyai.com (vienkartinis) | 12val 56m |
tayihim489 | moideva:1.0.0 | prodbits.com (vienkartinis) | 1val 33m |
sahihai123 | amicat:1.0.0, bmcat:2.0.9, eyevox:1.0.0 | vartotojų žiniatinklio paštas | 17m / 47m / 21m |
heytoshan | moidevh:1.0.0 | vartotojų žiniatinklio paštas | 47m |
taip1d1a7i27 bei lololololol435678 dalintis ogzmail.com registracijos domenas – nuoroda, jungianti paskyrą, kurioje vis dar yra aktyvi kopija, su paskyra, kurioje buvo paskelbta pagal moidev stiebas dviem savaitėmis anksčiau. sahihai123 rugpjūčio 28 d. per vieną 77 minučių laikotarpį paskelbė ir atšaukė tris atskirus paketų pavadinimus. Heitošanas registruotas, paskelbtas moidevhir atsiėmė jį po 47 minučių; tai lieka vienintele tos paskyros publikacija.
Visos šios paskyros neturi patvirtinto el. pašto adreso, neturi patvirtintos nuorodos į šaltinio valdymo platformas ir nėra publikavusios jokio nesusijusio projekto. Šešiose iš septynių nebelieka jokių talpinamų duomenų.
Vienas paketas niekada nebuvo atsiimtas. eyiouss:4.0.1 buvo publikuotas nuo rugpjūčio 16 d. ir rašymo metu vis dar buvo išsprendžiamas. Aštuoni artefaktai buvo neatkurti; kampanija buvo visiškai rekonstruota iš to, kuris liko. Operatorius, kuris refleksyviai ištrina, galiausiai vis tiek paliks vieną.
Ką daro įrankis
eyiouss:4.0.1 „npm“ platformoje save apibūdina kaip „didelio našumo DOM įrankį ir diagnostikos tiltą šiuolaikinėms žiniatinklio programoms“. Tai ekrano kopijų fiksavimo ir atsakymų paieškos įrankis, sukurtas veikti nuotolinio egzaminų stebėjimo sistemoje, ir šaltinis tai teigia savo žodžiais.
Prieš paleisdamas paleidimo priemonę, ji nukopijuojama naudojant netikrą failo pavadinimą ir nurodo, ko vengiama:
// 🛡️ SLAPTŲ DVEJETAŽEČIŲ PAVADINIMAS: NETURI susidurti su tikru „Testpad“! const STEALTH_NAME = 'SearchApp.exe';
To paties failo antraštė jį vadina Anti-Proctor vaiduoklių sargybinis ir įgyvendina atgimimo ciklą, kuris tuo greičiau atsitraukia, kuo greičiau jis sunaikinamas. Kitur procesas padidina savo prioritetą. kovoti su procesoriaus apribojimu, išstumia egzamino programą iš priekinio plano, kai ji sufokusuojama, ir nutraukia saugaus egzamino naršyklės antrinį procesą su taskkill /F /T.
Fiksavimas vykdomas per susietą „PowerShell“ scenarijų, iškviečiant jį išjungus vykdymo politiką ir užblokavus langą, o ekrane rodomas tekstas renkamas lygiagrečiai naudojant „Windows UI Automation“. Eilėje esantys vaizdai ir tekstas pateikiami kalbos modelio sesijai įterptojoje naršyklėje, o atsakymas pateikiamas visada viršuje esančiame perdengime. Šis ryšys sąmoningai atidedamas, o kode nurodoma to priežastis: siekiant išvengti nuolatinio NETSTAT poveikio.
Pakuotė taip pat siunčiama chrome_cookies.ps1, vadovaujama CHROME sausainių ištraukiklis, kuris iššifruoja „Chrome“ ir „Edge“ slapukus per DPAPI ir nuskaito slapukų duomenų bazę iš iki keturių naršyklės profilių. Nurodyta iš ankstocisely: neradome šio skripto, iškviesto pagal pavadinimą, iš jokio atsiųsto „JavaScript“ failo. Yra ir pasiekiama tik naudojančioji pusė, kuri įterpja saugomus seanso slapukus į įterptąją naršyklę.
Žmonių, kurie jį įrengia, pozicija
Niekas to neįdiegia atsitiktinai. Jis neturi jokios funkcijos, išskyrus stebimą egzaminą, o jo rezultatas yra atsakymo perdanga vartotojo ekrane. Apgaulingas paketo aprašymas visiškai nėra skirtas diegimo programai – tai yra priedanga, nukreipta į registrą ir visus, kurie vėliau tikrina įrenginį. Diegimo programa žino, ką gauna; aprašymas egzistuoja, kad... įrašas diegimo informacija to neatspindi.
Nukentėjusios šalys yra trečiosios šalys, kurios niekada nelietė npm: egzaminą organizuojanti įstaiga, kiti kandidatai ir visi paskesni procesai, kurie remiasi kvalifikacijos reikšme.
Tačiau montuotojas todėl nėra saugus, ir šią dalį verta paminėti, nes pats dingstančio paketo modelis sukuria apšvitą.
Jie paleidžia nepasirašytą dvejetainį failą iš niekieno. uia_extract.exe Sukompiliuoti failai, be šaltinio ir kilmės duomenų, iš paskyros, kuri nebeegzistuoja. Tas pats failas, naudojant maišos kodą, buvo pakartotinai publikuotas letol39119, taip1d1a7i27, lololololol435678, tagadob568, tayihim489, sahihai123 bei Heitošanas per penkiolika dienų. Nėra prižiūrėtojo, kurio reikėtų paklausti, nėra saugyklos, kurią būtų galima skaityti, ir nėra istorijos, kurią būtų galima patikrinti – kiekviena jį išsiuntusi tapatybė pati išsitrynė.
Jie suteikė jai būtent tas galimybes, kurių reikia kenkėjiškoms programoms. Paslėptas procesas, veikiantis netikru pavadinimu, kuris iššifruoja naršyklės slapukų saugyklą, nuolat skaito ekraną, nutraukia saugos programinės įrangos veikimą ir vėl paleidžiamas, kai ji išjungiama. Šiandien slapukų iššifravimas apsiriboja vieno tiekėjo domenais ir aptarnauja paties vartotojo sesiją. Ši apimtis yra vienos eilutės pakeitimas, ir niekas apie pristatymo modelį nebūtų rodoma, jei jis pasikeistų – naujas vardas, nauja paskyra, naujas įkėlimas.
Jie negali gauti pataisos. Paketo publikavimas atšaukiamas per valandą. Nėra jokio atnaujinimo kelio, jokio pranešimo ir jokio būdo vėliau sužinoti, kad jų įdiegta versija skyrėsi nuo tos, kurią įdiegė jų draugas. Kas yra kompiuteryje, tas ir lieka jame.
Jie negali patikrinti, ką atliko. Jų užrakinimo failas dabar nurodo paketą, kurio nebegalima išspręsti. Jei vėliau, po incidento ar ginčo, jie norėtų išsiaiškinti, kas buvo jų kompiuteryje, registras neturėtų jokio įrašo, kurį galėtų jiems pateikti.
Ir jie negali pranešti apie žalą. Šio įrankio paveiktas vartotojas negali pateikti pranešimo apie piktnaudžiavimą neatskleidęs, kodėl jį įdiegė. Tai nėra atsitiktinumas. Registro piktnaudžiavimo ataskaitos yra pagrindinis kanalas, kuriuo sugaunami trumpalaikiai paketai, o šio operatoriaus vartotojų bazė struktūriškai negali jo naudoti. Vienintelis likęs priešininkas yra automatinis nuskaitymas, pagal kurį sukalibruotas septyniolikos minučių langas.
Aukos struktūra ir išlaikymo trukmė yra tas pats faktas, pastebėtas du kartus. Tai taip pat paaiškina laiko juostos anomaliją: jei pasitraukimą lemtų skundų baimė, pirmiausia būtų atsisakyta ilgai gyvavusio populiaraus paketo. Taip nenutiko, nes skundai niekada nekyla.
Tas pats modelis, kitas operatorius
Proktoriaus operatorius nėra vienintelis, kuris tai daro, ir aiškiausias lygiagretusis veikimas atliekamas su nesusijusiu naudinguoju kroviniu.
Rugpjūčio 24–27 d. pasirodė keturi npm paketai, kurių pavadinimai buvo pasiskolinti iš dviejų veiksnių autentifikavimo įrankių. auth-otp, slaptasis raktas-2fa, slaptasis raktas2fa bei 2fa-slaptasis raktas — nešdamos šešiolika versijų. Kiekviena buvo paskelbta iš savo naujai užregistruotos paskyros (beayilol, jeanpaul686g, zzzalipay, dluuuuu), visi el. pašto adresai nepatikrinti, nė vienas neturi patvirtintos šaltinio kontrolės nuorodos, nė vienas neskelbia nieko kito. Kiekvieną atšaukė jo paties leidėjas.
Naudingoji apkrova neturi nieko bendra su egzamino programine įranga. Ji nuskaito naršyklės kredencialų saugyklas ir „Discord“ žetonus bei atlieka „Xbox Live“ autentifikavimo kopėčias prieš „Minecraft“ paleidimo priemonę, kad užfiksuotų atnaujinimo žetoną. Čia diegimo programa. is auka įprastąja prasme – todėl palyginimas yra naudingas, nes pristatymo elgesys yra identiškas nepaisant to.
Keturi ciklai vyko publikavimo tvarka: 274.9, 37.8, 37.6 ir 35.7 minutės: vienas ilgas pirmas bandymas, tada konvergavimas ties skaičiumi, kuris išlieka. Dar trys paketai vėl priklauso kitiems operatoriams ir rodo tą pačią išėmimo elgseną.
| Paketas | operatorius | Kairė stovinti |
|---|---|---|
octopus-action | žvalgybos švyturys | 2.5 min |
mt-ts-serverless-starter | žvalgybos švyturys | 9.6 min |
2fa-secretkey | 2FA priedangos vardai | 35.7 min |
secretkey2fa | 2FA priedangos vardai | 37.6 min |
secretkey-2fa | 2FA priedangos vardai | 37.8 min |
auth-otp | 2FA priedangos vardai | 274.9 min |
hex-encode-utils | kitas | 724.2 min |
Septyni paketai, mediana 37.8 minutės, nė vienas iš jų nesusijęs su egzaminų programine įranga.
Trys nesusiję naudingieji krūviai, trys nesusiję sąskaitų rinkiniai, viena bendra technika.
Kodėl langas užsidaro
2026 m. registro aplinkoje kažkas pasikeitė, ir akivaizdus veiksnys yra tas, kad nuskaitymas tapo greitesnis.
Iki šiol kenkėjiški paketai buvo aptinkami daugiausia po fakto: vartotojui ką nors pastebėjus, gavus pranešimą iš tolesnio serverio arba periodiškai tikrinant. Aptikimo delsa buvo matuojama dienomis. Tai nebėra vienintelis režimas. Beveik realiuoju laiku atliekama naujai paskelbtų paketų analizė – „Xygeni“ ankstyvojo įspėjimo apie kenkėjiškas programas sistema tarp vis didėjančio tokių sistemų rinkinio visoje pramonėje – sumažina atotrūkį tarp publikavimo ir patikrinimo iki daug trumpesnio.
Operatorius susiduria su dviem variantais. Apsunkinti naudingosios apkrovos atpažinimą arba sutrumpinti laiką, per kurį ją galima peržiūrėti. Antrasis variantas yra pigesnis, nereikalauja jokių inžinerijos darbų, o registras šį mechanizmą suteikia nemokamai: per npm 72 valandų publikavimo atšaukimo laikotarpį leidėjas gali vienašališkai pašalinti paketą, o pavadinimą galima pakartotinai naudoti vėliau. Pašalinimas operatoriui nieko nekainuoja.
Laikas sutampa. Abu aukščiau pateikti operatoriai konverguoja ties skaičiumi ir jį išlaiko, užuot dreifavęs, o tai labiau atrodo kaip suderintas parametras, o ne dėl patogumo. O parametras, ties kuriuo jie konvergavo – dešimtys minučių – yra priešcisbūtent tokią padėtį, kurioje jis turėtų būti, kad įveiktų automatinio patikrinimo reikalavimus, tuo pačiu paliekant paketą įdiegimą pakankamai ilgai, kad pasiektų savo auditoriją.
Tai lieka hipoteze. Laiko duomenys negali atskirti atsako į nuskaitymą nuo atsako į registro vykdymą ar nuo įprasto operacinio brendimo, kai šie operatoriai mokosi vieni iš kitų. Tai, ką galima pasakyti nedarant išvadų, yra siauresnė ir vis tiek naudinga: Ekspozicijos langas dabar pakankamai trumpas, kad bet kokia kontrolė, priklausanti nuo pakuotės patikrinimo po paskelbimo, lenktyniauja su operatoriaus nustatytu laiku. Valdikliai, kurie nepriklauso nuo patikrinimo – karantinas pagal amžių, išjungti diegimo scenarijai – neturi įtakos šiai rasei, todėl praktiškai juos verta rinktis.
Ką daryti su tuo
Karantinas pagal amžių. Niekas iš laikymo laiko lentelės neišliko trylika valandų. Politika, pagal kurią jokia priklausomybės versija negali būti įdiegta, kol ji neegzistuoja 72 valandas, būtų išskyrusi kiekvieną iš jų nieko neaptikus.
Pagal numatytuosius nustatymus išjungti diegimo scenarijus. –Ignoruoti scenarijus pašalina pristatymo mechanizmą, nuo kurio priklauso šiame korpuse esantys kredencialų vagiantys paketai. Tai nepadeda nuo įrankio, kurį vartotojas naudoja sąmoningai, kuris yra iš ankstocistikrai vertas supratimo skirtumas.
Dingimą traktuokite kaip saugumo įvykį. Įspėti, kai įdiegta priklausomybė nustoja veikti. Įrodymai saugomi jūsų užrakinimo faile, o ne registre.
Stebėkite turinį, o ne vardus. Šešios aukščiau pateiktos santraukos sutampa nepriklausomai nuo paketo pavadinimo, leidėjo paskyros ar versijos eilutės – kiekvienas šio operatoriaus parodytas laukas pasikeis. Registro pusės taisyklė, pagal kurią naujai užregistruota paskyra, per valandą atsiimanti savo vienintelį paketą, yra praneštinas modelis, būtų suveikė kiekvienam paketui, vien tik pagal metaduomenis.
O jei svarstote apie šios kategorijos įrangos diegimą: Ypatybės, kurias registrui sunku aptikti, yra tos pačios, dėl kurių jūs neturite jokių teisių gynimo priemonių. Nėra jokio leidėjo, kuris būtų laikomas atsakingu, nėra atnaujinimo kelio ir nėra įrašų apie tai, ką vykdėte.
rodikliai
| Tipas | Reikšmė |
|---|---|
| filė | bin/kalamasha-tool.js — ne-standard šiukšliadėžės įėjimo taškas |
| SHA-256 | 0c293be90c10c8a7618d25f4c4811fa63612b7bc5199b86e10bb31eb36c716dd |
| SHA-256 | e2fda5aa8397799669f29258f69e803cf05d322c1d93269eef6754ca024c3865 |
| Procesas | SearchApp.exe parašyta šalia teisėtos „Electron“ vykdymo aplinkos |
| elgsena | powershell -ExecutionPolicy Bypass -File su windowsHide: true |
| elgsena | taskkill /F /T nukreiptas į saugaus egzamino naršyklės procesą |
| metaduomenų | Tuščias prižiūrėtojų sąrašas šalia a time.unpublished įrašas |
| sąskaitos | letol39119, so1d1a7i27, lololololol435678, tagadob568, tayihim489, sahihai123, heytoshan |
| Registracija | ogzmail.com, hutdot.com, ebflyai.com, prodbits.com – vienkartinio pašto domenai |
Nuorodos
- npm paskelbimo atšaukimo politika — 72 valandų laikotarpis, per kurį leidėjas gali pašalinti paketą be įsikišimo.







