TL; DR
Fil-21 ta' Mejju 2026, il-pubblikatur tal-npm jaggle ħarġet disa' verżjonijiet (1.0.0 permezz 1.0.8) ta ' @jaggle/resizeobserves f'tieqa ta' madwar sagħtejn.
Il-pakkett huwa typosquat tal-legittimu @juggle/resize-observer polyfill — pakkett użat ħafna b'miljuni ta' downloads kull ġimgħa — iżda ma jinkludi l-ebda implimentazzjoni attwali ta' ResizeObserver.
Minflok, il-pakkett ganċ ta' wara l-installazzjoni jinstalla payload Python miġbur flimkien, jirreġistra l-persistenza bħala runtime broker li jidher nattiv għall-pjattaforma, u juża hijacker tal-clipboard bejn il-pjattaformi li jimmira lejn tranżazzjonijiet ta' kriptomunita.
Linux il-persistenza tidher bħala python3-dbus-helper, MacOS as com.apple.python.runtime, u twieqi as PyRuntimeBroker.
Il-payload jimmonitorja kontinwament il-clipboard għall-indirizzi tal-kartieri madwar aktar minn 40 blockchain u tissostitwixxi fis-skiet l-indirizzi kkupjati b'kartieri kkontrollati mill-attakkant.
Il-malware jopera kompletament lokalment mingħajr infrastruttura C2 'l barra, u b'hekk is-sostituzzjoni tal-clipboard innifisha ssir il-mekkaniżmu ta' esfiltrazzjoni.
L-IOC primarju huwa l-isem tal-pakkett innifsu: @jaggle/resizeobserves — innota l-vokali li tneħħiet f’“jaggle” u ż-“s” miżjuda f’“resizeobserves”.
Severità: għolja.
L-Attakk: Kif Jaħdem
npm:@jaggle/resizeobserves ma jidhirx bħal malware fuq ħarsa każwali veduta npm. Tagħha README.md huwa l-README kelma b'kelma ta' npm:@juggle/resize-observer — l-istess kampjuni ta' kodiċi, l-istess struzzjonijiet dwar l-użu, l-istess importa { ResizeObserver } minn '@juggle/resize-observer' referenzi tul il-paġna kollha. Il-plaġjariżmu huwa tant komplet li kull min jagħti ħarsa lejn id-dokumentazzjoni jassumi li qed jaqra d-dokumenti tal-pakkett leġittimu.
il package.json, għall-kuntrarju, huwa skars: le repożitorju qasam, wieħed bin dħul li jipponta lejn bin/clipboard-guardian.js, U wara l-installazzjoni skript li jaħdem node npm-install.jsL-eżempji ta' "Użu bażiku" tar-README jirreferu għal implimentazzjoni ta' JavaScript li ma teżisti mkien fit-tarball. L-uniku JavaScript fil-pakkett huwa l-iskritt tal-installazzjoni.
Stadju 1 — npm postinstall bootstraps payload ta' Python
npm-install.js huwa konxju tal-pjattaforma. Jsib pip eżekutibbli tul mogħdija ta' tiftix fissa (/usr/bin/pip3, /usr/local/bin/pip, terġa' lura għal python3 -m pip), jinstalla l-pakkett Python inkluż mid-direttorju tarball, u — fuq Linux — jiġbed xclip or xsell minn apt-nikseb, Pacman, Jew dnf jekk l-ebda waħda minnhom ma tkun diġà preżenti:
L-użu ta ' –pakketti tas-sistema-pawża huwa intenzjonat: id-distribuzzjonijiet moderni tal-Linux iwasslu Python bil-markatur tal-ambjent ġestit esternament tal-PEP 668 attivat, li jimblokka installazzjonijiet pip fis-sit kollu awtomatikament. L-iskritt tal-installazzjoni jisforza l-installazzjoni.
L-iskritt huwa wkoll konxju tas-sudo. Meta l-uid li jkun qed jaħdem ikun ir-riżultat ta' installazzjoni tas-sudo npm, l-iskritt jgħid SUDO_USER u tonfoq flus lil getentpasswd biex issib il - reali id-direttorju tad-dar tal-utent, imbagħad jikteb il-fajls tal-persistenza tiegħu hemmhekk minflok ġewwa / GħerqIl-persistenza hija għal kull utent, mhux għas-sistema kollha.
Stadju 2 — Persistenza bejn l-OS taħt ismijiet ta' sensar tar-runtime
Wara li jiġi installat il-pakkett Python, l-iskritt jirreġistra entrata ta' bidu awtomatiku taħt isem differenti fuq kull sistema operattiva:
- Linux — unità ta' utent systemd f' ~/.config/systemd/user/python3-dbus-helper.serviceL-unità deskrizzjoni is Għajnuna għar-Runtime tad-D-Bus tal-PythonL-iskritt jipprova wkoll jippermettih permezz ta' systemctl –utent jippermetti, billi terġa' lura għal symlink manwali taħt default.target.wants/ meta systemctl ifalli. Jekk jaħdem taħt sudo, l-iskritt jaqleb għal sudo -u systemctl –utent, Ma ' XDG_RUNTIME_DIR issettjat sabiex is-sejħa tal-user-bus taħdem.
- MacOS — plist ta' LaunchAgent fuq ~/Librerija/LaunchAgents/com.apple.python.runtime.plist ma RunAtLoad=veru u, Żomm Ħaj=veru, imbagħad mgħobbija permezz ta' tagħbija tat-tnedija.
- twieqi — Task Skedat bl-isem PyRuntimeBroker, attivat minn AtLogOn, b'limitu ta' ħin ta' eżekuzzjoni ta' żero (jiġifieri, mingħajr timeout), irreġistrat permezz ta' PowerShell.
It-tliet ismijiet huma kredibbli mal-ewwel daqqa t'għajn. python3-dbus-helper isegwi l-konvenzjoni tal-ismijiet tal-integrazzjoni leġittima ta' Python-D-Bus fuq desktops Linux. com.apple.python.runtime jimita t-tikkettar reverse-DNS ta' Apple għas-servizzi tiegħu stess. PyRuntimeBroker jirrepeti l-Windows RuntimeBroker.exe — servizz reali u ffirmat ta' Microsoft li jinnegozja talbiet għal permess għal apps UWP. L-ebda minn dawn mhu servizz reali ta' Apple/Microsoft/Python f'dan il-kuntest, iżda difensur li jagħmel skenn viżwali malajr ta' systemctl –lista-unitajiet tal-utenti or Get-ScheduledTask mhux probabbli li jitriegħed.
Stadju 3 — Il-ħtif tal-clipboard
Il-payload tal-Python, installat fuq clipboard_guardian/guardian.py, imexxi linja infinita li tinterroga l-clipboard tas-sistema kull 400 millisekonda. Ma' kull tick, jiġbed il-kontenut attwali tal-clipboard permezz ta' pyperclip.paste() u jħaddimhom kontra lista ta' aktar minn erbgħin espressjoni regolari kkumpilati minn qabel li jkopru formati ta' indirizzi tal-kartieri għal 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, u diversi oħrajn stubbed iżda vojta fil-konfigurazzjoni default (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin).
Meta tinstab tqabbil, l-iskritt jaqra l-indirizz tal-attakkant għal dik il-katina minn ~/.config/clipboard-guardian/config.json (jew l-ekwivalenti tal-pjattaforma tiegħu) u jissostitwixxi l-clipboard bit-test sostitwit:
M'hemm l-ebda beacon tan-netwerk. Il-clipper ma jċempelx lid-dar, ma jirreġistrax hosts infettati, u ma jesfiltra xejn. L-esfiltrazzjoni hija s-sostituzzjoni nnifisha: meta utent jikkopja indirizz ta' riċevitur mill-UI tal-kartiera tiegħu u jippejstjah f'djalogu ta' mittent, l-indirizz ippejstjat jappartjeni lill-operatur. Il-fondi jintilfu in-band, b'mod trasparenti għall-utent.
X'hemm ġdid hawn
Xi dettalji jispikkaw meta mqabbla mal-mudell ġeneriku tal-kripto-klipper:
1. npm → qsim ta' Python. Il-biċċa l-kbira tal-kripto-klippers li naraw f'npm huma JavaScript pur, ta' spiss mgħottija b' _0x rotazzjoni tal-firxa jew eval(atob(…)) munzelli. Dan il-kampjun juża t-tarball npm bħala xejn aktar ħlief pakkett tal-kunsinna għal pakkett Python — Python nadif — u jħalli lil pip jieħu ħsieb l-installazzjoni tad-dipendenza (pyperclip, psutil, fakultattiv setproctitle) iddikjarat fil-pakkett pyproject.tomlM'hemm l-ebda offuskazzjoni tal-JavaScript biex tegħleb. Il-klipper innifsu huwa Python sempliċi u leġġibbli.
2. Tikketti tal-persistenza Tri-OS magħżula għall-plawżibbiltà. Ħafna installaturi cross-platform jirreġistraw il-persistenza taħt ismijiet ġeneriċi (servizz tal-aġġornament, helper.plist). Dan il-kampjun jieħu l-inkwiet li jagħżel tikketti li jixbħu sensara ta' runtime nattivi tal-pjattaforma fuq kull OS. L-ismijiet huma l-uniku tentattiv ta' moħbija — m'hemm l-ebda rootkit, l-ebda ħabi tal-userland, l-ebda offuskazzjoni tal-mogħdija. L-imħatra hija li d-difensuri rarament jagħmlu verifika ~/.config/systemd/user/ u li servizz bl-isem python3-dbus-helper mhux se jispikka f'reviżjoni każwali.
3. It-travestiment tat-titlu tal-proċess huwa reali, iżda l-anti-analiżi hija rieqda. Il-payload ta' Python jiddefinixxi _proċess_taħbi() funzjoni li tissettja t-titlu tal-proċess permezz ta' setproctitle (Linux/macOS) jew Issettja t-Titlu tal-KonsolaW (Windows) — u prinċipali () isejħilha. Allura ps biex se juru python3-dbus-helper minflok python3 …/gwardjan.pyMadankollu, l-istess modulu jiddefinixxi qed_jimmonitorja() funzjoni li telenka għodod magħrufa għall-monitoraġġ tal-proċessi (htop, btop, Task Manager, Activity Monitor, Process Hacker, Resource Monitor, monitors tas-sistema GNOME / KDE / Xfce / MATE, eċċ.) — u prinċipali () qatt ma jsejħilha. Il-linja ta' sostituzzjoni taħdem mingħajr kundizzjonijiet, kemm jekk l-utent ikollu monitor tal-proċess miftuħ kif ukoll jekk le. Il-funzjoni hija kodiċi mejjet fil-verżjoni mibgħuta. X'aktarx hija fdal minn iterazzjoni preċedenti, jew scaffolding għal karatteristika li għadha mhix konnessa. Jew il-mod, il-wiċċ kontra l-analiżi tal-payload ippubblikat huwa isem ġdid ta' titlu ta' proċess wieħed, mhux evażjoni attiva ta' monitor.
4. L-imġiba tal-config-merge miġbura flimkien. npm-install.js jikteb il-lista tal-kartieri awtomatiċi lil ~/.config/clipboard-guardian/config.json u, jekk diġà jeżisti fajl ta' konfigurazzjoni, jgħaqqad kwalunkwe ċavetta li l-valur eżistenti tagħha huwa vojt. Dan ifisser utent li qabel kien infettat u naddaf parzjalment il-konfigurazzjoni — ngħidu aħna, billi vojta l- ethereum valur — se jerġa' jimtela minn kull installazzjoni sussegwenti ta' pakkett malizzjuż. Ma jkun hemm l-ebda tindif tal-fajl tal-persistenza fl-ebda mogħdija tal-kodiċi.
| Data / Ħin (UTC) | avveniment |
|---|---|
2026-05-21 18:50:32 | @jaggle/resizeobserves@1.0.0 ippubblikat. |
2026-05-21 19:55:55 | 1.0.1 ippubblikata — l-ewwel verżjoni mmarkata minn skennjar estern. |
2026-05-21 19:58:10 | 1.0.2 ippubblikat. |
2026-05-21 20:05:03 | 1.0.3 ippubblikat. |
2026-05-21 20:09:24 | 1.0.4 ippubblikat. |
2026-05-21 20:13:48 | 1.0.5 ippubblikat. |
2026-05-21 20:41:52 | 1.0.6 ippubblikat. |
2026-05-21 20:43:56 | 1.0.7 ippubblikat — iżid try/catch tgeżwir madwar il-pass tal-kitba tal-wallet-config npm-install.js. |
2026-05-21 20:46:15 | 1.0.8 ippubblikat — installatur semmieh mill-ġdid npm-install.js → npm-install.cjs (kontenut identiku għall-byte). |
2026-05-22 | Verdetti u IOCs ippubblikati. Il-verżjonijiet għadhom jeżistu fir-reġistru fil-ħin tal-pubblikazzjoni (għaddejjin). |
Disa' verżjonijiet f'siegħa u sitta u ħamsin minuta huwa veloċi anke għal typosquat. Il-mudell huwa konsistenti ma' kampanja ta' pubblikazzjoni u ħruq — imla r-reġistru taħt manku wieħed, ħalli s-sejbien jieħu l-kors tiegħu, u imxi għal manku ġdid ladarba titneħħa verżjoni waħda. Id-deltas viżibbli matul il-ġirja huma kożmetiċi: 1.0.1 żiedet espliċita /usr/bin/pip3mogħdijiet stil għal-lista tat-tiftix pip (kompatibilità tas-sudo), 1.0.7 daħħlet il-kitba tal-wallet-config fi try/catch, u 1.0.8 semmiet mill-ġdid l-installatur minn JS għal .cjs filwaqt li jżomm il-kontenut tiegħu identiku għall-byte. .cjs semmi mill-ġdid it-traċċi b'twissijiet npm dwar riżoluzzjoni ambigwa tal-modulu f'pakketti mingħajr definizzjoni espliċita "Tip" qasam, u jista' jkun tentattiv biex jiġi soppress l-istorbju fil-ħin tal-installazzjoni li jista' jiġbed l-attenzjoni. Il-payload ta' Python — l-unika parti li fil-fatt tisraq — ma nbidilx fid-disa' verżjonijiet kollha.
Indikaturi ta' Kompromess
Pakketti
| Ekosistema | Pakkett | verżjonijiet | Status |
|---|---|---|---|
| npm | @jaggle/resizeobserves | 1.0.0 permezz 1.0.8 | Dirett fil-ħin tal-pubblikazzjoni; mitluba t-tneħħija. |
Fajls u Hashes
| Path | Noti |
|---|---|
clipboard_guardian/guardian.py(md5 f7935c2c82bc881288611ab6cd634f17) | Identiku fid-disa' verżjonijiet ippubblikati kollha (1.0.0 permezz 1.0.8). Il-piż tal-klipper. |
npm-install.js (1.0.0 – 1.0.7)npm-install.cjs (1.0.8) | Installatur tal-persistenza; l-istess imġiba minn tarf sa tarf. 1.0.7's .js u, 1.0.8's .cjs huma identiċi għall-byte. |
~/.config/clipboard-guardian/config.json | Konfigurazzjoni tal-persistenza tal-Linux u pakkett tal-kartiera. |
~/Library/Application Support/clipboard-guardian/config.json | Konfigurazzjoni tal-persistenza tal-macOS u pakkett tal-kartiera. |
%APPDATA%\clipboard-guardian\config.json | Konfigurazzjoni tal-persistenza tal-Windows u pakkett tal-kartiera. |
~/.config/systemd/user/python3-dbus-helper.service | Persistenza tal-istartjar awtomatiku tal-Linux. |
~/Library/LaunchAgents/com.apple.python.runtime.plist | Persistenza tal-macOS LaunchAgent. |
~/Library/Logs/com.apple.python.runtime.log | Log tal-macOS stdout/stderr għall-aġent. |
Scheduled Task PyRuntimeBroker | Kompitu tal-istartjar awtomatiku tal-Windows (AtLogOn, mingħajr timeout). |
Indikaturi tal-Imġieba
| Sinjal | deskrizzjoni |
|---|---|
pip install --break-system-packages minn npm wara l-installazzjoni | Iġġiegħel installazzjoni ta' Python fis-sit kollu billi tevita l-protezzjonijiet tal-PEP 668. |
apt-get install -y xclip (jew pacman/dnf) | Jinstalla utilitajiet tal-clipboard fuq Linux waqt l-installazzjoni tal-pakkett. |
python3-dbus-helper.service unità tal-utent systemd | Persistenza rreġistrata taħt isem ta' runtime-helper li jidher plawżibbli. |
com.apple.python.runtime LaunchAgent | Tikketta ta' persistenza barra l-mogħdijiet leġittimi tas-sistema Apple. |
PyRuntimeBroker Kompitu Skedat | Persistenza falza tal-broker tar-runtime tal-Windows mingħajr sors leġittimu tal-installatur. |
Proċess Python intitolat python3-dbus-helper importazzjoni pyperclip u, psutil | Nuqqas ta' qbil fl-imġiba bejn l-isem tal-proċess muri u l-libreriji importati. |
| Il-clipboard jinbidel ~0.4s wara li tiġi kkopjata l-indirizz tal-kartiera | Imġieba tal-firma tas-sostituzzjoni tal-indirizz tal-kriptomunita. |
Pakkett ta' kartieri għall-attakkanti (lista għall-kaċċa tad-difensuri)
Il-lista tal-kartieri postali tintbagħat hardcoded fi npm-install.js u, clipboard_guardian/guardian.pyId-difensuri jistgħu jużaw il-lista kemm bħala blocklist (jitrattaw kwalunkwe trasferiment lejn dawn l-indirizzi minn kartieri korporattivi bħala suspettuż) kif ukoll bħala hunting key (jitrattaw il-preżenza ta' kwalunkwe minn dawn l-istrings f'fajl ta' konfigurazzjoni mhux awtentikat, artifatt tal-bini, jew magna tal-iżviluppatur bħala indikatur ta' infezzjoni).
Pakkett tal-Kartiera tal-Attakkant
| katina | indirizz |
|---|---|
| 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 |
| Polkadot | 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG |
| TEMM | 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364 |
| Cosmos | cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e |
| osmosis | osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t |
| Celestia | celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5 |
| Injetiv | inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh |
| Kava | kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux |
| Harmony | one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a |
| Dinja | terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x |
| Algorand | XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI |
| Stellar | GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE |
| Cardano | addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f |
| MultiverseX | erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0 |
| apt | 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e |
| sui | 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78 |
| Nano | nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn |
| Filekin | f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui |
| Tezos | tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk |
| Ergo | 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA |
| header | 0.0.10488092 |
Ktajjen b'kopertura regex iżda slots vojta tal-kartiera fil-konfigurazzjoni default — Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB — mhumiex sostitwiti b'mod attiv f'din il-bini iżda huma skoperti. Ittrattahom bħala ambitu ta' monitoraġġ aktar milli ambitu ta' sostituzzjoni.
Attribuzzjoni u Motivazzjoni
Il-kampanja toffri wiċċ ta' attribuzzjoni dgħajjef. Ma stajniex nikkonfermaw l-identità tal-operatur. Dak li nistgħu nirreġistraw:
- Metadata tal-pubblikatur. Il-kont npm tħawwad jelenka l-email tiegħu bħala olgascarlet@deltajohnsons.comId-dominju deltajohnsons.com ma jirriżolvix għal identità korporattiva li nistgħu nivverifikaw. Il-kont npm ma juri l-ebda verifika tal-email u l-ebda SCM verifika. M'hemm l-ebda preżenza pubblika assoċjata ma' GitHub.
- Qasam tar-repożitorju. il package.json iġorr l-ebda repożitorju qasam. Il-leġittimu npm:@juggle/resize-observer jipponta lejn repożitorju reali ta' GitHub b'eluf ta' stilel u kwistjonijiet attivi. L-assenza ta' link ta' repożitorju hija l-iktar indikazzjoni viżwali mgħaġġla fuq l-UI tal-npm.
- Plaġjariżmu README. Il-pakkett README huwa l-leġittimu @juggle/resize-observer README byte b'byte, inkluż importazzjoni eżempji li jirreferu @juggle/resize-observer innifsu (mhux il-pakkett tal-pubblikazzjoni). L-operatur lanqas biss ħa ħsieb jikteb mill-ġdid l-importazzjonijiet — sinjal komuni li r-readme tneħħa, mhux ġie adattat.
- L-ebda infrastruttura li tista' tiddawwar fuqha. M'hemm l-ebda endpoint C2, l-ebda tfittxija DNS, l-ebda IP. L-imġieba malizzjuża hija inkapsulata kompletament fil-clipper lokali flimkien mal-pakkett tal-kartieri hard-coded. Dan jagħmel il-pivoting ibbażat fuq id-dominju jew l-ASN mhux disponibbli. Id-difensuri li jduru bejn kampanji għandhom iqabblu l-kartieri ma' kwalunkwe clipper preċedenti li għandhom fil-fajl; l-użu mill-ġdid ta' kartiera bejn pakketti huwa l-aktar rabta faċli bejn il-kampanji.
- L-għażla tal-isem. @jaggle/resizeobserves huwa karattru wieħed 'il bogħod minn @juggle u inflessjoni waħda 'l bogħod mill-magħruf sew osservatur tad-daqs mill-ġdidId-distanza tal-editjar ikkombinata hija żewġ glifi. Din hija ħabta viżwali intenzjonata, mhux squat ġeneriku.
Motivazzjoni, ibbażata fuq l-imġiba tal-payload: monetizzazzjoni pura permezz ta' sostituzzjoni opportunistika tal-clipboard. M'hemm l-ebda ħsad ta' kredenzjali, l-ebda teħid ta' marki tas-swaba' tal-host, l-ebda qari ta' varjabbli tal-ambjent. L-operatur ma jimpurtahx min hi l-vittma — jimpurtah li t-trasferiment li jmiss tal-vittma jippunta lejn wieħed mill-indirizzi elenkati. Il-kopertura ta' erbgħin katina hija l-mudell tal-lotterija fl-azzjoni: mitfugħa wiesgħa, bit-tama li pejst wieħed ta' valur għoli jinżel darba għal kull N installazzjonijiet.
L-operatur jidher li mhux imħasseb dwar it-tneħħija. Il-pubblikazzjoni ta' disa' verżjonijiet fi żmien sagħtejn taħt l-istess ambitu tinqara bħala manku ta' pubblikazzjoni u ħruq: immassimizza l-impronta tar-reġistru qabel ma l-latenza tat-tneħħija tlaħħaq, imbagħad kompli 'l quddiem. Ma osservajniex @jaggle qed jiġi ppubblikat mill-ġdid taħt ambitu ġdid fil-ħin tal-kitba, iżda nistennew ambiti li jixbhu lil xulxin (@jaggie, @juggle-, @joggle) li jidhru fil-jiem li ġejjin jekk l-operatur għadu attiv.
Impatt, Xejriet u X'Għandhom Jagħmlu d-Difensuri
impatt
Il-kwantifikazzjoni tal-impatt fi flus reali mhijiex possibbli mid-dataset attwali. Il-clipper ma jikteb l-ebda telemetrija u l-kartieri għadhom mhumiex osservati jirċievu trasferimenti sostitwiti sad-data tal-għeluq tal-analiżi (sweep ta' segwitu tal-ktajjen elenkati tinsab fil-lista tagħna). Il-leġittimu npm:@juggle/resize-observer għandu medja ta’ downloads ta’ seba’ ċifri fil-ġimgħa — mira ta’ typosquat b’traffiku għoli — u l-pakkett malizzjuż kien ilu ħaj għal inqas minn 24 siegħa fil-ħin tal-iżvelar, li jillimita l-popolazzjoni esposta iżda ma jneħħihiex minn fuq.
Ir-raġġ tal-isplużjoni li ta' min isegwi mhuwiex downloads diretti ta' @jaggle/resizeobserves — dawk x'aktarx huma żgħar. Huma **installazzjonijiet tranżitorji**: żviluppatur li jżid il-pakkett ma' proġett sandbox, iħaddem npm jinstallaw, u mbagħad jinsa li l-hook tal-installazzjoni qatt ħadem. Kull magna li pproċessat il-postinstallazzjoni issa għandha hijacker tal-clipboard għal kull utent fuq l-istartjar awtomatiku, irrispettivament minn jekk il-proġett għadux fuq id-diska. It-tneħħija tad-direttorju tal-pakkett minn node_modules ma jneħħix il-persistenza.
Mudelli emerġenti
Żewġ xejriet li din il-kampanja hija eżempju tagħhom.
npm bħala tgeżwir tal-kunsinna tal-payload Python. It-tarball tal-npm huwa installatur ta' 4 linji; il-ħalliel attwali huwa Python, installat fis-sistema kollha minn pip mid-direttorju miġbur. Dan mhux ġdid — rajna pakketti npm ineħħu Python qabel — iżda qed isir forma ferm aktar komuni fil-kampanji tal-kripto-klipper. Il-vantaġġ għall-operatur huwa doppju: Libreriji tal-clipboard ta' Python (pyperclip l-ewwel fosthom) huma aktar nodfa u aktar adattati għal diversi pjattaformi mill-ekwivalenti tal-JavaScript, u Il-biċċa l-kbira tal-iskanners npm awtomatizzati jagħtu piż kbir lill-fajls JavaScript u Python .py qatet ħafif. L-ispiża hija li l-impronta tal-installazzjoni hija ħafna iktar storbjuża — friska installa pip huwa diffiċli li tinħeba fuq magna ta' żviluppatur li normalment ma tagħmilx dan installa pip matul npm jinstallaw.
Ismijiet nattivi tal-pjattaforma bħala l-uniku mod stealth. Diversi clippers u stealers ta' payload żgħir reċenti warrbu l-offuskazzjoni fil-livell tal-kodiċi għalkollox favur tikketti ta' persistenza li jidhru leġittimi. python3-dbus-helper, com.apple.python.runtime, u PyRuntimeBroker huma eżempji minn kotba — ismijiet li għajn difensur se jaqbeż fuq lista ta' erbgħin servizz tal-utent. Din hija forma ta' stealth irħisa u durabbli: it-tneħħija hija għal kull pakkett, iżda l-fajls tal-persistenza jibqgħu ħajjin wara t-tneħħija, u servizz imsemmi għal komponent ta' pjattaforma li jidher reali mhux se jitnaddaf minn xejn ħlief awditjar espliċitu.
X'għandhom jagħmlu d-difensuri
- Awditja ~/.config/systemd/user/, ~/Library/LaunchAgents/, u Get-ScheduledTask produzzjoni fuq magni tal-iżviluppaturi għad-dħulijiet elenkati fl-IOCs. It-tneħħija tal-pakkett npm tħalli dawn f'posthom; jeħtieġ li jitneħħew bl-idejn.
- Imblokka t-trasferimenti lejn l-indirizzi tal-kartiera elenkati fil-konfini tat-teżor korporattiv u tal-kartiera DeFi fejn l-elenkar tal-indirizzi permess huwa disponibbli.
- Fittex għal ~/.config/clipboard-guardian/config.json (u ekwivalenti tal-pjattaforma) fil-flotta kollha tal-iżviluppaturi-magni. Il-preżenza tal-fajl hija infezzjoni ta' fiduċja għolja irrispettivament minn liema verżjoni tal-pakkett wasslitu.
- Fittex f'node_modules/ għal clipboard_guardian/guardian.py fi snapshots tal-build-cache li jistgħu jiġu qabel it-tneħħija. L-md5 tal-fajl huwa stabbli fil-verżjonijiet kollha riveduti.
- Lockfile-pin @juggle/resize-observer (il-pakkett leġittimu) sabiex installazzjonijiet futuri ma jistgħux jirriżolvu għal xi ħaġa oħra taħt żball ta' tip wieħed, speċjalment fi flussi tax-xogħol mingħajr lockfile bħal npx.
- Ittratta kwalunkwe postinstall npm li tinvoka pip install bħala severità għolja fil-bini-pipeline politika. M'hemm l-ebda raġuni leġittima biex pakkett npm ikollu bżonn pip fil-ħin tal-installazzjoni — l-għodda Python tiddistribwixxi l-għodda Python.
- Fittex dejta ta' monitoraġġ komparabbli ma' process_iter() għal proċessi bl-isem python3-dbus-helper li jimportaw pyperclip — id-disguise mismatch (l-helper D-Bus li jżomm librerija tal-clipboard) huwa l-aktar indikatur nadif tal-imġiba li għandna.
- Dawwar l-indirizzi tal-kartieri mwaħħla minn magni infettati. Hijacker tal-clipboard jikkomprometti t-triq bejn UI tal-kartiera u mira tal-pejst; l-indirizzi kkupjati waqt li jkunu infettati jistgħu jinbidlu fis-skiet. Kull ħaġa mibgħuta matul it-tieqa tal-infezzjoni għandha tiġi trattata bħala potenzjalment indirizzata ħażin.
Il-konklużjoni: il-persistenza tgħix aktar mit-tneħħija. Ir-reġistru eventwalment se jneħħi @jaggle/resizeobserves fid-disa' verżjonijiet kollha; l-unità systemd, il-LaunchAgent, u t-Task Skedat mhux se jneħħu lilhom infushom.
Referenzi
- @juggle/resize-observer fuq npm — il-pakkett leġittimu li dan it-typosquat jimpersonifika; utli bħala linja bażi għall-plaġjariżmu README byte-b'byte.
- @jaggle/resizeobserves metadata tar-reġistru — ippubblika timestamps għad-disa' verżjonijiet malizzjużi, utli għall-kronoloġija forensika.





