RuntimeBroker npm Typosquat Pjanti Crypto Clipper

RuntimeBroker: Typosquat npm Jħawwel Crypto-Clipper ta' 40 Katina bħala "Għajnuna fir-Runtime tas-Sistemi" bejn l-OS

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.jsnpm-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

sca-tools-software-composition-analysis-tools
Prijoritizza, irranġa, u assigura r-riskji tas-softwer tiegħek
Ikseb il-Kont B'Xejn tiegħek.
Mhix meħtieġa karta ta 'kreditu.

Assigura l-Iżvilupp u l-Kunsinna tas-Softwer tiegħek

bis-Suite tal-Prodotti Xygeni