TL; DR
Paketlər öz-özünə silinir. Avqust ayında on beş gün ərzində bir npm operatoru yeddi hesabdan doqquz ad altında doqquz paket dərc etdi və onlardan səkkizini şəxsən geri götürdü. Hər birinin gözləmə müddəti on üç saatdan on yeddi dəqiqəyə düşdü. Bu texnika təkcə onların işi deyil: tamamilə fərqli faydalı yük daşıyan əlaqəsiz operatorlardan daha yeddi paket öz nəşriyyatları tərəfindən orta hesabla 37.8 dəqiqə ərzində geri götürüldü. Artefakt əksər müdafiə prosesləri başlamazdan əvvəl yoxa çıxdı və quraşdırma artıq baş verdi.
Reyestrdə göstərilən hər şey fırlanır; faydalı yük isə fırlanmır. Doqquzunun hamısı eyni bayt göndərdi bin/ qovluqda, eyni SHA-256 üç paket adı və iki hesab arasında on beş gün ara ilə digest edir. Məzmun kimliyi bu operatorun pozmadığı yeganə izləmə siqnalıdır və heç vaxt geri götürmədikləri tək paket, onun heç birinin yoxlanılmasının səbəbidir.
Onu quraşdıran insanlar zərərçəkən deyillər və onsuz da çox zərər çəkiblər. Bu alət tərtibatçılar üçün nəzərdə tutulmayıb: gizli ekran görüntüsü, ekranda mətn çıxarılması və cavabların üst-üstə düşməsinə qaytarılması vasitəsilə uzaqdan imtahan nəzarətini məğlub edir. kim qaçırsa npm install hədəf deyil, nəzərdə tutulan faydalanandır. Onlar həmçinin brauzer kukiləri mağazasının şifrəsini açan imzasız ikili fayl işlədirlər və bu hesab bir saat ərzində özünü silir. Onlar düzəliş ala bilmirlər, sonradan nə işlətdiklərini yoxlaya bilmirlər və niyə quraşdırdıqlarını açıqlamadan zərər barədə məlumat verə bilmirlər.
Ekosistem: npm, eyni nümunə PyPI-də müşahidə edildi. Dövr: 2026-cı ilin iyun-avqust ayları.
Ölçmə
Qalma müddəti, reyestrin öz metaməlumatlarından hesablanan paketin görünməsi və yox olması arasındakı intervaldır. Bunlar təxminlər deyil, ölçmələrdir.
| Paketi | Dərc edilib (UTC) | Sol ayaq üstə |
|---|---|---|
moidev | 2026-08-16 16:31 | 5h 58m |
moidevx | 2026-08-17 03:24 | 13h 23m |
moidevz | 2026-08-26 03:38 | 12h 56m |
moideva | 2026-08-26 18:58 | 1h 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 |
Nəşr ardıcıllığı ilə oxuyun, pəncərə qırx dəfədən çox azalır — ən geniş yerdə 13 saat 23 dəqiqədən ən dar yerdə 17 dəqiqəyə qədər. İlk dörd bağlama orta hesabla səkkiz yarım saat, son dörd bağlama isə orta hesabla otuz üç dəqiqə çəkir. 28 avqustda üç bağlama tək bir 77 dəqiqəlik müddətdə dərc edildi və geri götürüldü.
Daralma tədricən azalma deyil. O, 26-28 avqust tarixləri arasında cəmləşib və dəyişən şey operatorun bağlamanın nə qədər müddətə təhlükəsiz şəkildə dayana biləcəyi ilə bağlı təxminidir.
Buradakı hər bir geri çəkilmə naşir tərəfindən başlanır. Hər biri üçün qeydiyyat sənədi boş saxlayıcı siyahısını göstərir vaxt.nəşr olunmamış qeyd — silinmə əvəzinə dərc olunmanın imzası. Doqquzuncu paket, eyouss, heç vaxt geri götürülməyib; bu səbəbdən bunların hər hansı biri araşdırıla bilər.
İkinci bir geri çəkilmə rejimi mövcuddur və bu rejimlə qarışdırılmamalıdır. Yalnız burada faydalı yük versiyası Çəkilir və bağlama sağ qalırsa, median 31 bağlamada təxminən 73 saatdır. Bu əvəzedicilər skriptli partiyalarla gəlir və boş qabıq qoyur — bir paket.json elan etmək Elanlar heç bir fayl göndərməyən — yeganə funksiyası adı saxlamaqdır. Bu rejim cədvəl üzrə ev işləri aparmaqdır. Bu, tənzimlənmiş ekspozisiya pəncərəsidir.
Silinmədən Nə Sağ Qalır
Bu paketlərin doqquzu bir operatordur: moidev, moidevx, moidevz, moideva, moidevh, dost, bmcat, evevox və eyoussAdlar heç bir konvensiyanı paylaşmır — izləyən hər kəs moidev Stem onların yarısından çoxunu qaçırmış olardı — və onlar demək olar ki, hamısı birdəfəlik e-poçt domenlərində qeydiyyatdan keçmiş yeddi ayrı hesabdan dərc olunmuşdu.
Onların paylaşdıqları, mövcud olmaq üçün heç bir səbəbi olmayan açıq bir girişdir:
"zibil qutusu": { "": "bin/kalamasha-tool.js" } } Beş nüsxəni çıxarmazdan əvvəl saxladıq. Beşinin hamısında, bütövlükdə bin/ qovluq baytlarla eynidir:
| fayl | 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 |
Daha iki siqnal da bu fikirlə razılaşır. Paketlərdən üçü 17 avqust, 26 avqust və 31 avqust tarixlərində UTC vaxtı ilə saat 03:24, 03:38 və 03:22-də dərc edilib — on beş gün və üç ayrı hesab üçün on altı dəqiqəlik bir aralıq. Və bu hesablardan ikisi eyni birdəfəlik e-poçt domenində qeydiyyatdan keçirilib və onları koddan asılı olmayaraq bir-birinə bağlayıb.
Hesablar
Bunlar, hər birinin yükləndiyi paket və nə qədər müddətə saxlanıldığı ilə birlikdə, faydalı yükü göndərən npm naşir hesablarıdır:
| Naşir hesabı | Paketi | E-poçt domeni | Sol ayaq üstə |
|---|---|---|---|
letol39119 | moidev:1.0.0 | hutdot.com (birdəfəlik) | 5h 58m |
so1d1a7i27 | moidevx:1.0.0 | ogzmail.com (birdəfəlik) | 13h 23m |
lololololol435678 | eyiouss:3.0.21, 3.0.22, 4.0.1 | ogzmail.com (birdəfəlik) | hələ də nəşr olunub |
tagadob568 | moidevz:1.0.0 | ebflyai.com (birdəfəlik) | 12h 56m |
tayihim489 | moideva:1.0.0 | prodbits.com (birdəfəlik) | 1h 33m |
sahihai123 | amicat:1.0.0, bmcat:2.0.9, eyevox:1.0.0 | istehlakçı veb poçtu | 17m / 47m / 21m |
heytoshan | moidevh:1.0.0 | istehlakçı veb poçtu | 47m |
so1d1a7i27 və lolololololol435678 paylaşmaq ogzmail.com qeydiyyat domeni — hesabı hələ də altında dərc olunmuş hesaba canlı nüsxə yerləşdirən link moidev iki həftə əvvəl kök salmışdır. sahihai123 28 avqustda 77 dəqiqəlik bir pəncərədə üç ayrı paket adını dərc etdi və geri götürdü. heytoşan qeydiyyatdan keçmiş, dərc olunmuş moidevh, və 47 dəqiqə sonra onu geri götürdü; bu, həmin hesabın yeganə nəşri olaraq qalır.
Bu hesabların hər biri e-poçtla təsdiqlənməyib, təsdiqlənmiş mənbəyə nəzarət linki daşımır və əlaqəsiz heç bir layihə dərc etməyib. Yeddi hesabdan altısı artıq heç nəyə sahib deyil.
Bir paket heç vaxt geri götürülmədi. eyiouss:4.0.1 16 avqustdan bəri nəşr olunur və yazıldığı zaman hələ də həll edilə bilən idi. Səkkiz artefakt bərpa edilə bilmədi; kampaniya tamamilə qalan artefaktdan yenidən quruldu. Refleksiv şəkildə silən operator nəticədə yenə də birini yerində saxlayacaq.
Alətin İşi
eyiouss:4.0.1 özünü npm-də "Müasir veb tətbiqləri üçün yüksək performanslı DOM yardımçılığı və diaqnostik körpü" kimi təsvir edir. Bu, uzaqdan imtahan nəzarəti altında işləmək üçün qurulmuş ekran görüntüsü və cavab axtarış vasitəsidir və mənbə bunu öz sözləri ilə deyir.
Başlatıcı, Electron-u işə salmadan əvvəl onu saxta bir fayl adı altında kopyalayır və nədən qaçındığını adlandırır:
// 🛡️ GİZLİ İKİLİ AD: Əsl Testpad ilə toqquşmamalıdır! const GİZLİ_NAME = 'SearchApp.exe';
Eyni faylın başlığı onu çağırır Anti-Proctor Ghost Watchdog və daha sürətli öldürüldükcə geri çəkilən bir respawn döngəsi tətbiq edir. Başqa yerlərdə proses öz prioritetini artırır. CPU-nun tənzimlənməsi ilə mübarizə aparmaq üçün, imtahan ərizəsi diqqət mərkəzində olduqda onu ön plandan itələyir və Təhlükəsiz İmtahan Brauzerinin uşaq prosesini dayandırır taskkill /F /T.
Capture, icra siyasəti deaktiv edilmiş və pəncərə basılmış vəziyyətdə çağırılan paketlənmiş PowerShell skripti vasitəsilə işləyir, ekrandakı mətn isə Windows UI Avtomatlaşdırması vasitəsilə paralel olaraq toplanır. Növbədə duran şəkillər və mətn daxil edilmiş brauzerdə dil modeli sessiyasına təqdim olunur və cavab həmişə üstdə olan örtükdə göstərilir. Bu əlaqə qəsdən təxirə salınır və kod səbəbini verir: daimi NETSTAT məruz qalmasının qarşısını almaq üçün.
Paket həmçinin göndərilir chrome_cookies.ps1, başçılıq edir XROM PEÇENYE ÇIXARDICI, DPAPI vasitəsilə Chrome və Edge kukilərini deşifrə edir və dörd brauzer profilindən kuki verilənlər bazasını oxuyur. Əvvəlcədən bildirilibcisely: Göndərilən heç bir JavaScript faylından adla çağırılan skript tapmadıq. Mövcud və əlçatan olan, saxlanılan sessiya kukilərini daxil edilmiş brauzerə yeridən istehlakçı yarımdır.
Onu quraşdıran insanların mövqeyi
Heç kim bunu təsadüfən quraşdırmır. Onun monitorinq edilən imtahandan başqa heç bir funksiyası yoxdur və çıxışı istifadəçinin öz ekranında cavab örtüyüdür. Aldadıcı paket təsviri heç də quraşdırıcıya yönəlməyib — bu, reyestrə və sonradan maşını yoxlayan hər kəsə yönəlmiş örtükdür. Quraşdırıcı nə əldə etdiyini bilir; təsvir belə mövcuddur ki, rekord quraşdırmanın özü bunu əks etdirmir.
Zərər çəkən tərəflər heç vaxt npm-ə toxunmayan üçüncü tərəflərdir: imtahanı keçirən qurum, digər namizədlər və etimadnaməyə etibar edən hər kəs.
Lakin quraşdırıcı buna görə də təhlükəsiz deyil və bu hissəni qeyd etməyə dəyər, çünki yoxa çıxan paket modelinin özü ifşa yaradır.
Onlar heç kimdən imzasız ikili fayl işlədirlər. uia_extract.exe Artıq mövcud olmayan bir hesabdan heç bir mənbə və quruluş mənşəyi olmadan tərtib edilmiş gəmilər. Eyni fayl, heş vasitəsilə, tərəfindən yenidən dərc edilmişdir letol39119, so1d1a7i27, lolololololol435678, tagadob568, tayihim489, sahihai123 və heytoşan On beş gün ərzində. Soruşmaq üçün nə texniki işçi, nə oxumaq üçün nə depo, nə də yoxlamaq üçün heç bir tarixçə var — onu göndərən hər bir kimlik özünü sildi.
Onlar ona zərərli proqram təminatının ehtiyac duyduğu imkanları tam olaraq veriblər. Saxta bir ad altında işləyən gizli bir proses, brauzer kuki anbarını deşifrə edir, ekranı davamlı olaraq oxuyur, təhlükəsizlik proqramını dayandırır və öldürüldükdə yenidən işə düşür. Bu gün kuki deşifrələmə bir satıcının domenlərinə tətbiq olunur və istifadəçinin öz sessiyasına xidmət göstərir. Bu əhatə dairəsi tək sətirlik bir dəyişiklikdir və çatdırılma modeli ilə bağlı heç bir şey dəyişsəydi - yeni bir ad, yeni hesab, yeni yükləmə ilə - onu üzə çıxarmazdı.
Onlar düzəliş ala bilmirlər. Paket bir saat ərzində dərc olunmayacaq. Yeniləmə yolu, xəbərdarlıq və sonradan quraşdırdıqları versiyanın dostlarının quraşdırdığı versiyadan fərqli olduğunu öyrənməyin yolu yoxdur. Maşında olan hər şey orada qalır.
Onlar nə işlətdiklərini yoxlaya bilmirlər. Onların kilid faylı artıq həll olunmayan bir paketə istinad edir. Əgər onlar sonradan - bir hadisədən və ya mübahisədən sonra - maşınlarında nə olduğunu müəyyən etmək istəsələr, reyestrdə onlara veriləcək heç bir qeyd yoxdur.
Və zərər barədə məlumat verə bilmirlər. Bu alət tərəfindən təhlükəyə məruz qalan istifadəçi, onu niyə quraşdırdığını açıqlamadan sui-istifadə hesabatı təqdim edə bilməz. Bu, təsadüfi deyil. Reyestr sui-istifadə hesabatları qısamüddətli paketlərin tutulduğu əsas kanaldır və bu operatorun istifadəçi bazası struktur olaraq ondan istifadə etmək iqtidarında deyil. Qalan yeganə rəqib avtomatlaşdırılmış skanlamadır - on yeddi dəqiqəlik pəncərə ona qarşı kalibrlənir.
Qurbanın strukturu və qalma müddəti iki dəfə görülən eyni faktdır. Bu, həmçinin zaman xəttindəki anomaliyanı izah edir: əgər geri çəkilmə şikayət qorxusu ilə idarə olunarsa, uzunömürlü populyar paket birinci gedərdi. Şikayətlər heç vaxt gəlmədiyi üçün gəlmədi.
Eyni Nümunə, Fərqli Bir Operator
Nəzarət operatoru bu işdə tək deyil və ən aydın paralel əlaqəsiz bir yük üzərində işləyir.
24-27 avqust tarixləri arasında iki faktorlu identifikasiya vasitələrindən götürülmüş adlar altında dörd npm paketi ortaya çıxdı — auth-otp, gizli açar-2fa, gizli açar2fa və 2fa-gizli açar — aralarında on altı versiya daşıyırdı. Hər biri özünün yeni qeydiyyatdan keçmiş hesabından dərc olunmuşdu (beayilol, jeanpaul686g, zzzalipay, dluuuuu), hamısı e-poçtla təsdiqlənməyib, heç biri təsdiqlənmiş mənbəyə nəzarət linki ilə deyil, heç biri başqa heç nə dərc etməyib. Hər biri öz naşiri tərəfindən geri götürülüb.
Faydalı yükün imtahan proqramı ilə heç bir əlaqəsi yoxdur. Brauzer etimadnamə mağazalarını və Discord tokenlərini oxuyur və yeniləmə tokenini əldə etmək üçün Xbox Live identifikasiya pilləkənini Minecraft başlatma cihazına qarşı gəzdirir. Burada quraşdırıcı var is adi mənada qurban — müqayisəni faydalı edən də elə budur, çünki çatdırılma davranışı hər halda eynidir.
Dörd dövr nəşr sırası ilə 274.9, 37.8, 37.6 və 35.7 dəqiqə davam etdi: bir uzun ilk cəhd, sonra isə sabit qalan rəqəm üzərində konvergensiya. Daha üç paket yenidən digər operatorlara məxsusdur və eyni geri çəkilmə davranışını göstərir.
| Paketi | Operator | Sol ayaq üstə |
|---|---|---|
octopus-action | kəşfiyyat mayak | 2.5 min |
mt-ts-serverless-starter | kəşfiyyat mayak | 9.6 min |
2fa-secretkey | 2FA örtük adları | 35.7 min |
secretkey2fa | 2FA örtük adları | 37.6 min |
secretkey-2fa | 2FA örtük adları | 37.8 min |
auth-otp | 2FA örtük adları | 274.9 min |
hex-encode-utils | digər | 724.2 min |
Yeddi paket, orta hesabla 37.8 dəqiqə, bunların heç biri imtahan proqramı ilə əlaqəli deyildi.
Üç əlaqəsiz faydalı yük, üç əlaqəsiz hesab dəsti, bir ortaq texnika.
Pəncərə Niyə Bağlanır
2026-cı ildə reyestr mühitində bir dəyişiklik oldu və ən əsası skanlamanın daha sürətli olmasıdır.
Son vaxtlara qədər zərərli paketlər əsasən hadisə baş verdikdən sonra aşkar edilirdi: istifadəçi bir şeyi fərq etdikdən sonra, sonrakı hesabat və ya dövri yoxlama yolu ilə. Aşkarlama gecikməsi günlərlə ölçülürdü. Artıq bu, yeganə rejim deyil. Yeni dərc olunmuş paketlərin demək olar ki, real vaxt təhlili — Xygeni-nin öz zərərli proqram təminatı ilə bağlı erkən xəbərdarlıq sənayedə artan bu cür sistemlər dəsti arasında — nəşr və yoxlama arasındakı boşluğu daha qısa bir şeyə qədər bağlayır.
İki seçimi olan operatorla qarşılaşma. Faydalı yükün tanınmasını çətinləşdirin və ya baxılma müddətini qısaldın. İkincisi daha ucuzdur, heç bir mühəndislik tələb etmir və reyestr mexanizmi pulsuz təmin edir: npm-in 72 saatlıq dərcdən çıxma pəncərəsi ərzində naşir paketi birtərəfli şəkildə silə bilər və ad sonradan yenidən istifadə edilə bilər. Geri çəkilmə operatora heç bir xərc gətirmir.
Vaxt uyğun gəlir. Yuxarıdakı hər iki operator bir fiqur üzərində birləşir və onu sürüşmək əvəzinə saxlayır, bu da tənzimlənmiş parametrin rahatlıq məsələsindən daha çox belə görünməsidir. Və onların birləşdiyi parametr — onlarla dəqiqə — əvvəlcədən dayanırcispaketi auditoriyasına çatmaq üçün kifayət qədər uzun müddət quraşdırıla bilən vəziyyətdə saxlayarkən avtomatlaşdırılmış yoxlama keçidini keçmək üçün orada oturmalı olacaq.
Bu, hələ də bir fərziyyə olaraq qalır. Zamanlama məlumatları skan etməyə verilən cavabı qeydiyyatın tətbiqinə verilən cavabdan və ya bu operatorların bir-birindən öyrəndiyi adi əməliyyat yetkinləşməsindən ayıra bilməz. Nəticə çıxarmadan deyilə biləcək şey daha dar və yenə də faydalıdır: Ekspozisiya pəncərəsi artıq o qədər qısadır ki, dərc edildikdən sonra paketin yoxlanılmasından asılı olaraq istənilən idarəetmə operatorun təyin etdiyi saatla işləyir. Yoxlamadan asılı olmayan idarəetmə elementləri — yaşa görə karantin, deaktiv quraşdırma skriptləri — həmin irqdən təsirlənmir, bu da onlara üstünlük verməyin praktik səbəbidir.
Bununla bağlı nə etməli
Yaşa görə karantin. Yaşama müddəti cədvəlində heç bir şey on üç saat davam gətirmədi. 72 saat mövcud olana qədər heç bir asılılıq versiyasının quraşdırıla bilməyəcəyi siyasəti, heç bir şey aşkar etmədən hamısını istisna edərdi.
Quraşdırma skriptlərini standart olaraq deaktiv edin. –ignore-scripts Bu korpusdakı etimadnamə oğurlayan paketlərin asılı olduğu çatdırılma mexanizmini aradan qaldırır. İstifadəçinin qəsdən işlətdiyi bir alətə qarşı kömək etmir, bu da əvvəlcədəncisfərqi başa düşməyə dəyər.
İtkin düşməyə təhlükəsizlik hadisəsi kimi yanaşın. Quraşdırılmış asılılıq həllini dayandırdıqda xəbərdarlıq. Dəlillərin hələ də qeydiyyatda deyil, sizin kilid faylınızda olduğu yerdir.
Adları yox, məzmunu izləyin. Yuxarıdakı altı daycest, paket adından, naşir hesabından və ya versiya sətrindən asılı olmayaraq uyğun gəlir — bu operatorun göstərdiyi hər sahəni dəyişdirəcəyini göstərir. Yeni qeydiyyatdan keçmiş hesabın bir saat ərzində yeganə paketini geri götürməsi barədə reyestr tərəfindəki qayda, yalnız metaməlumatlar üzərindən hər paketə təsir göstərə bilərdi.
Və bu kateqoriyada bir şey quraşdırmağı düşünürsünüzsə: Qeydiyyatın tutulmasını çətinləşdirən xüsusiyyətlər, sizi heç bir müraciət imkanından məhrum edən xüsusiyyətlərlə eynidir. Məsuliyyət daşıyacaq naşir, yeniləmə yolu və işlətdiyiniz məlumatların qeydi yoxdur.
Göstəricilər
| növü | Dəyər |
|---|---|
| fayl | bin/kalamasha-tool.js — qeyri-standard zibil qutusuna giriş nöqtəsi |
| SHA-256 | 0c293be90c10c8a7618d25f4c4811fa63612b7bc5199b86e10bb31eb36c716dd |
| SHA-256 | e2fda5aa8397799669f29258f69e803cf05d322c1d93269eef6754ca024c3865 |
| proses | SearchApp.exe qanuni Elektron işləmə müddətinin yanında yazılmışdır |
| Davranış | powershell -ExecutionPolicy Bypass -File donor yumurtaları, windowsHide: true |
| Davranış | taskkill /F /T Təhlükəsiz İmtahan Brauzer prosesini hədəfləyir |
| Metadata | Yanında boş saxlayıcı siyahısı time.unpublished rekord |
| Hesablar | letol39119, so1d1a7i27, lololololol435678, tagadob568, tayihim489, sahihai123, heytoshan |
| qeyd | ogzmail.com, hutdot.com, ebflyai.com, prodbits.com — birdəfəlik istifadə edilə bilən poçt domenləri |
References
- npm dərcdən çıxarma siyasəti — naşirin müdaxilə olmadan paketi silə biləcəyi 72 saatlıq pəncərə.







