RuntimeBroker npm Typosquat Plants Crypto Clipper

RuntimeBroker: npm Typosquat istutab 40-ahelalise krüpto-Clipperi operatsioonisüsteemideüleseks süsteemi käitusaja abiliseks

TL; DR

2026-05-21 avaldas npm-i väljaandja jaggle avaldas üheksa versiooni (1.0.0 läbi 1.0.8) of @jaggle/resizeobserves umbes kahetunnise akna jooksul.

Pakett on õigustatud sisust ebatäpne. @juggle/resize-observer polyfill – laialdaselt kasutatav pakett, millel on miljoneid allalaadimisi iganädalaselt –, kuid millel puudub tegelik ResizeObserveri implementatsioon.

Selle asemel paki järelpaigalduskonks paigaldab komplekteeritud Pythoni kasuliku koormuse, registreerib püsivuse platvormipõhise välimusega käitusaja vahendajana ja juurutab platvormideülese lõikelaua kaaperdaja, mis on suunatud krüptovaluuta tehingutele.

Linux püsivus avaldub kui python3-dbus-helper, macOS as com.apple.python.runtimeja Windows as PyRuntimeBroker.

Kasulik koormus jälgib pidevalt lõikelaual rahakoti aadresse enam kui 40 plokiahelat ja asendab kopeeritud aadressid vaikselt ründaja kontrollitud rahakottidega.

Pahavara toimib täielikult lokaalselt, ilma väljamineva C2 ​​infrastruktuurita, muutes lõikelaua asendamise enda väljafiltreerimise mehhanismiks.

Peamine IOC on paketi nimi ise: @jaggle/resizeobserves — pange tähele väljalangenud täishäälikut sõnas „jaggle“ ja lisatud „s“-tähte sõnas „resizeobserves“.

Raskusaste: kõrge.

Rünnak: kuidas see toimib

npm:@jaggle/resizeobserves ei näe juhuslikul peal välja nagu pahavara npm-vaade. selle README.md on sõnasõnaline README fail npm:@juggle/resize-observer — samad koodinäidised, samad kasutusjuhised, sama impordi { ResizeObserver } kaustast '@juggle/resize-observer' viited kõikjal. Plagiaat on nii täielik, et igaüks, kes dokumentatsioonile pilgu heidab, eeldaks, et loeb seadusliku paketi dokumente.

. pakett.jsonseevastu on hõre: ei Hoidla väli, üksik konteiner sisenemine osutab aadressile bin/lõikelaua-guardian.jsJa pärast installimist skript, mis töötab sõlm npm-install.jsREADME-faili „Põhikasutuse” näited viitavad JavaScripti implementatsioonile, mida tarballis ei eksisteeri. Ainus JavaScript paketis on installiskript.

1. etapp — npm postinstall käivitab Pythoni kasuliku koormuse

npm-install.js on platvormiteadlik. See leiab pip käivitatav fail mööda fikseeritud otsinguteed (/usr/bin/pip3, /usr/local/bin/pip, langedes tagasi python3 -m pip), installib tarballi kataloogist kaasasoleva Pythoni paketi ja — Linuxis — tõmbab sisse xclip or xsell kaudu apt-get, pacmanvõi DNF kui kumbagi pole juba olemas:

Kasutamist –break-system-paketid on tahtlik: tänapäevased Linuxi distributsioonid tarnivad Pythoni nii, et PEP 668 väliselt hallatava keskkonna marker on lubatud, mis blokeerib vaikimisi saidiülesed pip-installid. Installiskript sunnib installi läbi.

Skript on ka sudo-teadlik. Kui töötav uid on tulemus a-st sudo npm install, skript loeb SUDO_USER ja läheb välja getent parool et leida reaalne kasutaja kodukataloogi ja kirjutab seejärel oma püsivusfailid sinna, mitte .dll-i / RootPüsivus on kasutajapõhine, mitte süsteemiülene.

2. etapp — operatsioonisüsteemideülene püsivus käitusaja vahendajate nimede all

Pärast Pythoni paketi installimist registreerib skript igas operatsioonisüsteemis automaatse käivituse kirje erineva nime all:

  • Linux — systemd kasutajaüksus aadressil ~/.config/systemd/user/python3-dbus-helper.serviceSeadme Kirjeldus is Pythoni D-Busi käitusaja abimeesSkript proovib seda ka läbi lubada. systemctl –kasutaja lubamine, mis langeb tagasi käsitsi kasutatavale sümbollingile all vaikimisi.sihtmärk.soovid/ kui systemctl ebaõnnestub. Kui skript töötab sudo all, lülitub see ümber sudo -u systemctl –kasutajaKoos XDG_RUNTIME_DIR seatud nii, et kasutajabussi kõne töötaks.
  • macOS — LaunchAgenti plist aadressil ~/Library/LaunchAgents/com.apple.python.runtime.plist koos RunAtLoad=true ja KeepAlive=true, seejärel laaditakse läbi launchctl laadimine.
  • Windows — ajastatud ülesanne nimega PyRuntimeBroker, mis käivitatakse sisselogimisel AtLogOn, mille täitmisaja piirang on null (st ajalõpu pole) ja mis on registreeritud PowerShelli kaudu.

Kõik kolm nime on esmapilgul usaldusväärsed. python3-dbus-helper järgib Linuxi töölaudadel õigustatud Python-D-Bus integratsiooni nimetamiskonventsiooni. com.apple.python.runtime jäljendab Apple'i pöörd-DNS-märgistamist oma teenuste jaoks. PyRuntimeBroker kajastab Windowsi oma RuntimeBroker.exe — päris, allkirjastatud Microsofti teenus, mis vahendab UWP-rakenduste loataotlusi. Ükski neist pole selles kontekstis päris Apple'i/Microsofti/Pythoni teenus, vaid kaitsja, kes teeb kiire visuaalse skannimise systemctl –kasutajate loendiüksused or Get-ScheduledTask on ebatõenäoline, et võpatab.

3. etapp – lõikelaua kaaperdaja

Pythoni kasulik koormus, mis on installitud aadressile clipboard_guardian/guardian.py, käivitab lõpmatu tsükli, küsitledes süsteemi lõikelauda iga 400 millisekundi järel. Igal sekundil tõmbab see lõikelaua praeguse sisu välja pyperclip.paste() ja käivitab need enam kui neljakümne eelnevalt kompileeritud regulaaravaldise nimekirja suhtes, mis hõlmavad rahakoti aadressivorminguid Ethereumi, Bitcoini, Monero, Solana, TRONi, TONi, Ripple'i, Litecoini, Dogecoini, Polkadoti, NEARi, Cosmose, Algorandi, Stellari, Cardano, Bitcoin Cashi, Dashi, Zcashi, Aptose, Sui, Tezose, MultiversXi, Harmony, Terra, Injective'i, Osmosise, Kava, Celestia, Nano, Filecoini, Ronini, Ergo, DigiByte'i, Hedera, BNB Smart Chaini ja mitme teise jaoks, mis on vaikimisi konfiguratsioonis tühjad, kuid mille varad on lisatud.

Kui vaste leiab, loeb skript ründaja aadressi selle ahela jaoks ~/.config/clipboard-guardian/config.json (või selle platvormi ekvivalendid) ja kirjutab lõikelaua asendatud tekstiga üle:

Võrgumajakat pole. Lõikeseade ei helista koju, ei registreeri nakatunud masinaid ega filtreeri midagi välja. Väljafiltreerimine on asendamine ise: kui kasutaja kopeerib saaja aadressi oma rahakoti kasutajaliidesest ja kleebib selle saatmisdialoogi, kuulub kleebitud aadress operaatorile. Vahendid lähevad riba sees kaotsi, kasutaja jaoks läbipaistvalt.

Mis on siin uut?

Võrreldes üldise krüptoklipperi malliga paistavad silma mõned detailid:

1. npm → Pythoni ristmik. Enamik npm-is nähtavaid krüptokäärijaid on puhas JavaScript, mida sageli segatakse _0x massiivi pöörlemine või eval(atob(…)) pinu. See näidis kasutab npm tarballi vaid Pythoni paketi – puhta Pythoni – tarneümbrisena ja laseb pipil hallata sõltuvuste installimist (Pyperclip, psutil, valikuline setproctitle) deklareeritud komplekteeritud kujul pyproject.tomlJavaScripti hägustamist pole vaja ületada. Lõikevahend ise on lihtne ja loetav Python.

2. Usaldusväärsuse tõttu valitud Tri-OS püsivuse sildid. Paljud platvormideülesed installijad registreerivad püsivuse üldnimede all (uuendaja.teenus, abistaja.plist). See näidis võtab vaevaks valida sildid, mis meenutavad iga operatsioonisüsteemi platvormil põhinevaid käitusaja vahendajaid. Nimetamine on ainus katse varjata – puudub juurkomplekt, kasutajamaa peitmine ja tee hägustamine. Võimalik, et kaitsjad auditeerivad harva. ~/.config/systemd/kasutaja/ ja et teenus nimega python3-dbus-helper ei paista juhuslikus arvustuses silma.

3. Protsessi pealkirja varjamine on reaalne, kuid analüüsivastasus on uinunud. Pythoni kasulik koormus defineerib a _disguise_process() funktsioon, mis määrab protsessi pealkirja setproctitle (Linux/macOS) või Määra konsooli pealkiriW (Windows) — ja peamine () nimetab seda. Nii et ps to näitab python3-dbus-helper asemel python3 …/guardian.pySiiski defineerib sama moodul is_monitor_running() funktsioon, mis loetleb teadaolevaid protsesside jälgimise tööriistu (htop, btop, Tegumihaldur, Tegevuste monitor, Protsessihäkker, Ressursimonitor, GNOME / KDE / Xfce / MATE süsteemimonitorid jne) — ja peamine () ei kutsu seda kunagi välja. Asendustsükkel töötab tingimusteta, olenemata sellest, kas kasutajal on protsessimonitor avatud või mitte. Funktsioon on tarnitud versioonis surnud kood. See on tõenäoliselt varasema iteratsiooni jääk või telling funktsioonile, mida pole veel ühendatud. Mõlemal juhul on avaldatud kasuliku koormuse analüüsivastane pind üks protsessi pealkirja ümbernimetamine, mitte aktiivse monitori vältimine.

4. Komplekteeritud konfiguratsioonide ühendamise käitumine. npm-install.js kirjutab vaikimisi rahakottide nimekirja ~/.config/clipboard-guardian/config.json ja kui konfiguratsioonifail on juba olemas, liidetakse kõik võtmed, mille olemasolev väärtus on tühi. See tähendab kasutajat, kes on varem nakatunud ja konfiguratsiooni osaliselt puhastanud – näiteks tühjendades faili ethereum väärtus — see täidetakse iga järgneva pahatahtliku paketi installimisel uuesti. Püsivusfaili ei puhastata üheski kooditees.

Kuupäev/kellaaeg (UTC) sündmus
2026-05-21 18:50:32 @jaggle/resizeobserves@1.0.0 avaldatud.
2026-05-21 19:55:55 1.0.1 avaldatud — esimene versioon märgistatud välise skannimise teel.
2026-05-21 19:58:10 1.0.2 avaldatud.
2026-05-21 20:05:03 1.0.3 avaldatud.
2026-05-21 20:09:24 1.0.4 avaldatud.
2026-05-21 20:13:48 1.0.5 avaldatud.
2026-05-21 20:41:52 1.0.6 avaldatud.
2026-05-21 20:43:56 1.0.7 avaldatud — lisab try/catch ümbris wallet-config kirjutamise etapi ümber npm-install.js.
2026-05-21 20:46:15 1.0.8 avaldatud — paigaldaja ümbernimetatud npm-install.jsnpm-install.cjs (baitidentne sisu).
2026-05-22 Kohtuotsused ja rahvusvahelised kohtulahendid on avaldatud. Versioonid on avaldamise ajal registris endiselt alles (töötab pooleli).

Üheksa versiooni ühe tunni ja viiekümne kuue minutiga on kiire isegi tüposkvaki jaoks. Muster on kooskõlas a-ga avalda-ja-kirjuta kampaania — registreerib registri ühe käepidemega, laseb tuvastamisel oma rada minna ja pärast ühe versiooni eemaldamist liigub see uue käepideme juurde. Nähtavad deltad kogu versioonis on kosmeetilised: versioonile 1.0.1 on lisatud selgesõnaline /usr/bin/pip3-stiilis teed pip-otsinguloendisse (sudo-ühilduvus), 1.0.7 pakkis wallet-config kirjutamise try/catch-i ja 1.0.8 nimetas installija ümber . Js et .cjs säilitades samal ajal selle sisu baitidentsena. .cjs ümbernimetada rajad npm hoiatustega ebamäärase moodulilahenduse kohta pakettides ilma selgesõnalise hoiatuseta "tüüp" väljal ja see võib olla katse summutada installimise ajal tekkivat müra, mis võiks tähelepanu köita. Pythoni kasulik koormus – ainus osa, mis tegelikult varastab – on kõigis üheksas versioonis muutmata.

Kompromissi näitajad

Paketid

Ökosüsteemi Pakend Variandid olek
npm @jaggle/resizeobserves 1.0.0 läbi 1.0.8 Avaldamise ajal aktiivne; eemaldamist taotletud.

Failid ja räsiväärtused

Tee märkused
clipboard_guardian/guardian.py
(md5 f7935c2c82bc881288611ab6cd634f17)
Identne kõigis üheksas avaldatud versioonis (1.0.0 läbi 1.0.8). Lõikuri kasulik koormus.
npm-install.js (1.0.0 – 1.0.7)
npm-install.cjs (1.0.8)
Püsivuse paigaldaja; sama otsast lõpuni käitumine. 1.0.7's .js ja 1.0.8's .cjs on bait-identsed.
~/.config/clipboard-guardian/config.json Linuxi püsivuse konfiguratsiooni ja rahakoti pakett.
~/Library/Application Support/clipboard-guardian/config.json macOS-i püsivuse konfiguratsiooni ja rahakoti pakett.
%APPDATA%\clipboard-guardian\config.json Windowsi püsivuse konfiguratsiooni ja rahakoti pakett.
~/.config/systemd/user/python3-dbus-helper.service Linuxi automaatse käivituse püsivus.
~/Library/LaunchAgents/com.apple.python.runtime.plist macOS LaunchAgenti püsivus.
~/Library/Logs/com.apple.python.runtime.log macOS-i stdout/stderr logi agendi jaoks.
Scheduled Task PyRuntimeBroker Windowsi automaatkäivituse ülesanne (AtLogOn, ajalõpu pole).

Käitumisnäitajad

Signaali Kirjeldus
pip install --break-system-packages npm-i järelinstallilt Sunnib saidiülese Pythoni installimise, möödudes PEP 668 kaitsest.
apt-get install -y xclip (või pacman/dnf) Paigaldab lõikelaua utiliidid Linuxile paketi installimise ajal.
python3-dbus-helper.service süsteemitud kasutajaüksus Püsivus on registreeritud usutava välimusega käitusaja abistaja nime all.
com.apple.python.runtime LaunchAgent Püsivusmärgis väljaspool seaduslikke Apple'i süsteemiteid.
PyRuntimeBroker Ajastatud ülesanne Võltsitud Windowsi käitusaja vahendaja püsivus ilma legitiimse installija allikata.
Pythoni protsess pealkirjaga python3-dbus-helper importivate pyperclip ja psutil Kuvatud protsessi nime ja imporditud teekide käitumuslik mittevastavus.
Lõikelaud muutub ~0.4 sekundit pärast rahakoti aadressi kopeerimist Krüptovaluuta aadressi asendamise allkirja käitumine.

Ründaja rahakoti komplekt (kaitsja otsimise nimekiri)

Rahakottide nimekiri tarnitakse kõvakodeeritult npm-install.js ja clipboard_guardian/guardian.pyKaitsjad saavad seda nimekirja kasutada nii blokeerimisloendina (käsitleda kõiki ettevõtte rahakottidest nendele aadressidele tehtud ülekandeid kahtlastena) kui ka jahivõtmena (käsitleda mis tahes nende stringide olemasolu autentimata konfiguratsioonifailis, ehitusartefaktis või arendaja masinas nakkuse indikaatorina).

Ründaja rahakoti komplekt

kett AADRESS
Ethereum / BSC 0x450c0E58Fc2ba03632d3F5780ad8C966648B6F18
Ronin (EVM) ronin:450c0E58Fc2ba03632d3F5780ad8C966648B6F18
Bitcoin bc1qs2mpls4p0f7fng073gy2rcdgjpf7la4eugpt6y
Bitcoin Cash bitcoincash:qqmvyxxklzp7l3eslxavhc8phl6hprdf25lwc29nlt
Litecoin ltc1qnefc8x59a9cwtqnflt8hmqvezqw4hc7lt3fkqe
Dogecoin DNEJmYRZtzyK44tZea4S7wV3otTyRk48Fy
Kriips XtJ7E6mnhPK93Vib29PGQrTmQjhTTqFwbS
Zcash t1d4hcEnBjdh9X6Wb6R2dxqjnxddJ6ocP8M
DigiByte DPmH2dhiGK3hk3A69tZUMz6tHzGFHBzSrH
Monero 42zhAidVhP7QETk83JAspS59ASALSHFio44vmu6MdDCz15cSqtqsG4QVyzY8vTrjGrTEA6zMbWW6Yft1Ynz1xLfCN5FVbXf
Solana DWBAmQLi9gP6mk7UfJfQGYTV1UPK32WekLTqg83q1mc5
TRON TVgEgMemmJABYYnbNr1Wi8bSgADEkdEBt2
TON UQDTSkvwmptU9eG988KgxS3WjnYAZlXgfpJxnz4mhWZAvULr
Ripple r9tj3cMCiqRijNYqNVYNuwKykkQfS8FE4H
Polkadot 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG
NEAR 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364
Cosmos cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e
Osmoos osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t
Celestia celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5
Injektiivne inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh
Kava kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux
Harmoonia one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a
Terra terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x
Algorand XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI
Stellar GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE
Cardano addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f
MultiverseX erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0
asjakohane 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e
sui 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78
Nano nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn
Filecoin f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui
Tezos tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk
Ergo 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA
Hedera 0.0.10488092

Vaikimisi konfiguratsioonis regulaaravaldistega hõlmatud, kuid tühjade rahakotipesadega ahelaid – Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB – selles versioonis aktiivselt ei asendata, kuid need tuvastatakse. Käsitlege neid jälgimisulatuse, mitte asendusulatusena.

Omistamine ja motivatsioon

Kampaania omistamispind on õhuke. Me ei ole suutnud operaatori identiteeti kinnitada. Mida me saame salvestada:

  • Väljaandja metaandmed. NPM-konto kõigutama loetleb oma e-posti aadressi järgmiselt olgascarlet@deltajohnsons.comDomeen deltajohnsons.com ei vasta ettevõtte identiteetile, mida saaksime kontrollida. NPM-i kontol puudub e-posti aadressi kinnitus ja SCM kinnitus. Avalikku GitHubi kohalolekut pole.
  • Hoidla väli. . pakett.json ei kanna Hoidla väli. Õigustatud npm:@juggle/resize-observer osutab päris GitHubi repositooriumile, millel on tuhandeid tähti ja aktiivseid probleeme. Repositooriumi lingi puudumine on npm-i kasutajaliidese kiireim visuaalne märk.
  • README plagiaat. Pakett README on legitiimne @juggle/resize-observer README bait-baidi haaval, sealhulgas import näited, mis viitavad @juggle/resize-observer ise (mitte avaldamispakett). Operaator ei vaevunud isegi imporditud faile ümber kirjutama – tavaline märk sellest, et readme fail eemaldati, mitte ei kohandatud.
  • Puudub infrastruktuur, millele toetuda. Puudub C2 lõpp-punkt, DNS-i otsing ega IP-aadress. Pahatahtlik käitumine on täielikult kapseldatud kohalikku lõikurisse ja kõvakodeeritud rahakotipaketti. See muudab domeeni- või ASN-põhise ümberlülitamise kättesaamatuks. Kaitsjad, kes kampaaniate vahel ümberlülituvad, peaksid rahakotid räsi abil võrdlema mis tahes varasema lõikuriga, mis neil on; rahakoti korduvkasutamine eri pakettides on kõige lihtsamini hallatav kampaaniateülene seos.
  • Nimevalik. @jaggle/resizeobserves on ühe tähe võrra erinev @žongleerima ja ühe käände võrra tuntud suuruse muutmise vaatlejaKombineeritud redigeerimiskaugus on kaks glüüfi. See on tahtlik visuaalne kokkupõrge, mitte üldine kükitamine.

Motivatsioon, mis põhineb kasuliku koormuse käitumisel: puhas monetiseerimine oportunistliku lõikelauale asendamise kaudu. Puudub volituste kogumine, hosti sõrmejälgede võtmine ega keskkonnamuutujate lugemine. Operaatorit ei huvita, kes on ohver — teda huvitab, et ohvri järgmine ülekanne osutaks ühele loetletud aadressidest. Neljakümne ahelaga katvus on loteriimudel tegevuses: edasta laialt, loodetavasti maandub üks väärtuslik pasta iga N installi kohta.

Operaator ei paista eemaldamise pärast muret tundvat. Üheksa versiooni avaldamine kahe tunni jooksul sama ulatuse all kõlab kui avaldamise ja põletamise käideldamine: maksimeerida registri jalajälge enne, kui eemaldamise latentsusaeg järele jõuab, ja seejärel edasi liikuda. Me ei ole täheldanud @jaggle kirjutamise ajal avaldatakse see uue ulatuse all, kuid eeldame sarnaseid ulatusi (@jaggie, @žongleeri-, @joggle) ilmuvad lähipäevil, kui operaator on endiselt aktiivne.

Mõju, trendid ja mida kaitsjad peaksid tegema

 mõju

Praeguse andmestiku põhjal ei ole võimalik reaalraha mõju kvantifitseerida. Lõikevahendaja ei kirjuta telemeetriat ja analüüsi piiri seisuga ei ole rahakotid veel asendatud ülekandeid vastu võtnud (loetletud kettide järelkontroll on meie nimekirjas). Legitiimne npm:@juggle/resize-observer keskmiselt ulatub iganädalaste allalaadimiste arv seitsmekohalise arvuni – suure liiklusega tüposquat-sihtmärk – ja pahatahtlik pakett oli avalikustamise ajal aktiivne alla 24 tunni, mis piirab küll nakatunud populatsiooni, kuid ei nulli seda.

Jälgimist väärt plahvatusraadius ei ole otsene allalaadimine @jaggle/resizeobserves — need on tõenäoliselt väikesed. Tegemist on **transitiivsete installidega**: arendaja lisab paketi liivakastiprojekti ja käivitab npm installija seejärel unustades, et installikonks üldse käivitus. Igal masinal, mis pärast installimist töötles, on nüüd automaatse käivitamise ajal kasutajapõhine lõikelaua kaaperdaja, olenemata sellest, kas projekt on ikka veel kettal. Paketikataloogi eemaldamine sõlme_moodulid **ei** eemalda püsivust.

Tärkavad mustrid

See kampaania ilmestab kahte trendi.

npm Pythoni kasuliku koormuse kohaletoimetamise ümbrisena. npm tarball on neljarealine installer; tegelik varastaja on Python, mille paigaldab kogu süsteemi pip komplekteeritud kataloogist. See pole uus – oleme varem näinud npm-pakettide Pythoni eemaldamist –, kuid see on muutumas krüptoklipperikampaaniates mõõdetavalt tavalisemaks. Operaatori eelis on kahetine: Pythoni lõikelaua teegid (Pyperclip esimesena neist) on puhtamad ja platvormideülesemad kui JavaScripti ekvivalendid ning Enamik automatiseeritud npm-skannereid kaalub JavaScripti faile ja Pythoni faile tugevalt .py kimbud kergelt. Hind seisneb selles, et paigalduskoha jalajälg on palju valjem – värske pip install on arendaja masinal, mis tavaliselt seda ei tee, raske peita pip install ajal npm installi.

Platvormil põhinevad nimed on ainus varjatud lahendus. Mitmed hiljutised koodilõikurid ja väikese kasuliku koormuse varastajad on kooditasemel hägustamise täielikult hüljanud ja eelistanud õigustatud välimusega püsivussilte. python3-dbus-helper, com.apple.python.runtimeja PyRuntimeBroker on õpikunäited – nimed, mille kaitsja silm neljakümne kasutajateenuse nimekirjas vahele jätab. See on odav ja vastupidav varjatuse vorm: eemaldamine toimub paketi kohta, kuid püsifailid jäävad eemaldamisest ellu ja teenust, mis on nimetatud reaalse välimusega platvormikomponendi järgi, ei puhastata millegi muu kui selgesõnalise auditiga.

Mida kaitsjad peaksid tegema

  • Auditeeri ~/.config/systemd/user/, ~/Library/LaunchAgents/ ja Get-ScheduledTask väljund arendajate masinatel IOC-des loetletud kirjete jaoks. npm-paketi eemaldamine jätab need alles; need tuleb käsitsi eemaldada.
  • Blokeeri ülekanded loetletud rahakoti aadressidele ettevõtte ja riigikassa ning DeFi-rahakottide piiridel, kus aadresside lubamisloend on saadaval.
  • Otsi ~/.config/clipboard-guardian/config.json faili (ja platvormi ekvivalendid) kogu arendajaarvutite pargis. Faili olemasolu on kõrge usaldusväärsusega nakkus olenemata sellest, millisest paketiversioonist see pärines.
  • Otsi node_modules/-ist clipboard_guardian/guardian.py vahemälu hetktõmmistes, mis võivad olla eemaldamisele eelnevad. Faili md5 on kõigis ülevaadatud versioonides stabiilne.
  • Lukustusfaili pin @juggle/resize-observer (legitiimne pakett), et tulevased installid ei saaks ühe tähemärgi suuruse kirjavea tõttu midagi muud tuvastada, eriti lukustusfailideta töövoogudes, näiteks npx.
  • Töötle mis tahes npm-i järelinstalli, mis kutsub esile pip-installi kui kõrge raskusastmega ehitusespipeline poliitika. Npm-paketil pole installimise ajal pipi vajamiseks õigustatud põhjust – Pythoni tööriistad levitavad Pythoni tööriistu.
  • Otsi process_iter()-võrdlevaid jälgimisandmeid protsesside kohta nimega python3-dbus-helper, mis impordivad pyperclipi — varjamise mittevastavus (D-Busi abimees, kes hoiab lõikelaua teeki) on kõige selgem käitumuslik indikaator, mis meil on.
  • Nakatunud masinatest kleebitud rahakoti aadresside vahetamine. Lõikelaua kaaperdaja seob rahakoti kasutajaliidese ja kleepimise sihtmärgi vahelise tee; nakatumise ajal kopeeritud aadresse võidakse märkamatult muuta. Kõike nakatumisperioodi jooksul saadetud teavet tuleks käsitleda potentsiaalselt valesti suunatud aadressina.

Kokkuvõte: püsivus elab kauem kui eemaldamine. Register eemaldab lõpuks @jaggle/resizeobserves kõigis üheksas versioonis; systemd üksus, LaunchAgent ja Scheduled Task ei eemalda ennast.

Tehtud tööd

sca-tööriistad-tarkvara-kompositsiooni-analüüsi-tööriistad
Tarkvarariskide prioriseerimine, leevendamine ja turvamine
Hankige oma tasuta konto.
Krediitkaarti pole vaja.

Turvaline tarkvaraarendus ja -tarne

Xygeni tootekomplektiga