RuntimeBroker npm Typosquat Rostliny Crypto Clipper

RuntimeBroker: Typosquat, npm, implementuje 40řetězcový krypto-clipper jako „pomocník pro běh systému“ napříč operačními systémy.

TL, DR

Dne 21. května 2026 vydavatel npm jaggle vydáno devět verzí (1.0.0 přes 1.0.8) z @jaggle/resizeobserves v zhruba dvouhodinovém okně.

Balíček je překlepem legitimního @juggle/resize-observer polyfill – široce používaný balíček s miliony stažení týdně – ale nedodává žádnou skutečnou implementaci ResizeObserver.

Místo toho balíček poinstalační hook nainstaluje přibalený Python payload, zaregistruje perzistenci jako běhového brokera s nativní platformou a nasadí multiplatformní únosce schránky cílící na transakce s kryptoměnami.

Linux vytrvalost se jeví jako python3-dbus-helper, macOS as com.apple.python.runtime, a Windows as PyRuntimeBroker.

Užitečná část neustále monitoruje schránku a hledá adresy peněženek. více než 40 blockchainů a tiše nahrazuje zkopírované adresy peněženkami ovládanými útočníkem.

Malware operuje výhradně lokálně bez jakékoli odchozí C2 infrastruktury, takže samotná substituce ze schránky je mechanismem exfiltrace.

Primárním IOC je samotný název balíčku: @jaggle/resizeobserves — všimněte si vynechané samohlásky ve slově „jaggle“ a přidaného „s“ ve slově „resizeobserves“.

Závažnost: vysoká.

Útok: Jak to funguje

npm:@jaggle/resizeobserves na běžném počítači nevypadá jako malware zobrazení npm. Jeho README.md je doslovný soubor README npm:@juggle/resize-observer — stejné ukázky kódu, stejné pokyny k použití, stejné importovat { ResizeObserver } z '@juggle/resize-observer' odkazy v celém textu. Plagiátorství je tak úplné, že by si kdokoli, kdo by se podíval na dokumentaci, myslel, že čte legitimní dokumentaci k balíčku.

Jedno balíček.json, naopak, je řídký: ne Sklad pole, jediné popelnice vstup ukazující na bin/clipboard-guardian.js, A po instalaci skript, který běží uzel npm-install.jsPříklady „Základního použití“ v souboru README odkazují na implementaci JavaScriptu, která nikde v tarballu neexistuje. Jediný JavaScript v balíčku je instalační skript.

Fáze 1 — npm postinstall bootstrapuje datovou část Pythonu

npm-install.js je platformně vědomý. Vyhledává jádro spustitelný soubor podél pevné vyhledávací cesty (/usr/bin/pip3, /usr/local/bin/pip, ustupující zpět k python3 -m pip), nainstaluje přiložený balíček Pythonu z adresáře tarball a – v Linuxu – stáhne xclip or xsell přes apt-get, pacmannebo Dnf pokud ani jeden z nich již není přítomen:

Použití –balíčky-systému-break je záměrné: moderní linuxové distribuce dodávají Python s povoleným externě spravovaným prostředím PEP 668, které ve výchozím nastavení blokuje instalace PIP napříč webem. Instalační skript instalaci vynutí.

Skript je také vědom sudo. Pokud je spuštěné uid výsledkem příkazu Instalace sudo npm, scénář zní SUDO_USER a vydává se na heslo getentu najít skutečný domovský adresář uživatele a poté tam zapíše své persistence soubory, nikoli do / RootPerzistence se týká jednotlivých uživatelů, nikoli celého systému.

Fáze 2 – Perzistence napříč operačními systémy pod názvy runtime brokerů

Po instalaci balíčku Pythonu skript zaregistruje položku automatického spuštění pod jiným názvem v každém operačním systému:

  • Linux — uživatelská jednotka systemd na adrese ~/.config/systemd/user/python3-dbus-helper.serviceJednotka Popis is Pomocník pro běhové prostředí Pythonu D-BusSkript se to také pokouší povolit prostřednictvím systemctl –uživatelská povolení, s návratem k ručnímu symbolickému odkazu pod výchozí.cíl.chce/ když selže systemctl. Pokud je spuštěno pod příkazem sudo, skript se přepne na sudo -u systemctl –uživatels XDG_RUNTIME_DIR nastavit tak, aby volání uživatelské sběrnice fungovalo.
  • macOS — plistní soubor LaunchAgent na adrese ~/Knihovna/LaunchAgents/com.apple.python.runtime.plist s SpustitPřiNačtení=true a KeepAlive=true, poté načteno přes načtení launchctl.
  • Windows — naplánovaná úloha s názvem PyRuntimeBroker, spuštěná při přihlášení k provozu (AtLogOn), s časovým limitem provedení nula (tj. bez časového limitu), registrovaná pomocí PowerShellu.

Všechna tři jména jsou na první pohled věrohodná. python3-dbus-helper dodržuje konvenci pojmenování legitimní integrace Python-D-Bus na linuxových počítačích. com.apple.python.runtime napodobuje označování reverzního DNS od společnosti Apple pro její vlastní služby. PyRuntimeBroker odráží Windows RuntimeBroker.exe — skutečná, podepsaná služba od Microsoftu, která zprostředkovává žádosti o oprávnění pro aplikace UWP. V tomto kontextu se nejedná o skutečné služby Apple/Microsoft/Python, ale o obránce, který provádí rychlou vizuální kontrolu systemctl –uživatelské seznamy-jednotek or Get-ScheduledTask je nepravděpodobné, že by ucukl.

Fáze 3 – Únosce schránky

Datový náklad Pythonu, nainstalovaný na adrese clipboard_guardian/guardian.py, spustí nekonečnou smyčku, která dotazuje systémovou schránku každých 400 milisekund. Při každém taktu načte aktuální obsah schránky pomocí pyperclip.paste() a porovnává je se seznamem více než čtyřiceti předkompilovaných regulárních výrazů pokrývajících formáty adres peněženek pro 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 a několik dalších, které jsou ve výchozí konfiguraci zablokované, ale prázdné (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin).

Když se najde shoda, skript přečte adresu útočníka pro daný řetězec z ~/.config/clipboard-guardian/config.json (nebo jeho ekvivalenty na platformě) a přepíše schránku nahrazeným textem:

Neexistuje žádný síťový maják. Klipper nevolá domů, neregistruje infikované hostitele, nic neodesílá. Odesílání je samotná substituce: když uživatel zkopíruje adresu příjemce z uživatelského rozhraní peněženky a vloží ji do dialogového okna pro odesílání, vložená adresa patří operátorovi. Finanční prostředky se ztrácejí v rámci pásma, transparentně pro uživatele.

Co je zde nového

V porovnání s obecnou šablonou crypto-clipper vyniká několik detailů:

1. npm → křížení Pythonu. Většina kryptoměnových nástrojů, které v npm vidíme, je čistý JavaScript, často obfuskovaný pomocí _0x rotace pole nebo eval(atob(…)) stacks. Tato ukázka používá tarball npm pouze jako obal pro doručení balíčku Pythonu – čistý Python – a umožňuje pipu zvládnout instalaci závislostí (pyperclip, psutil, Volitelně setproctitle) deklarované v balíčku pyproject.tomlNeexistuje žádné JavaScriptové zmatkování, které by bylo třeba obejít. Samotný Clipper je jednoduchý a čitelný Python.

2. Označení perzistence Tri-OS zvolené z hlediska věrohodnosti. Mnoho multiplatformních instalačních programů registruje perzistenci pod generickými názvy (aktualizační služba, helper.plist). Tato ukázka si dává tu práci s výběrem označení, která připomínají nativní běhové brokery platformy v každém operačním systému. Pojmenování je jediným pokusem o utajení – neexistuje žádný rootkit, žádné skrytí uživatelské domény ani žádné zamlžování cesty. Sázka je na to, že obránci auditují jen zřídka. ~/.config/systemd/uživatel/ a že služba s názvem python3-dbus-helper v běžné recenzi nevynikne.

3. Maskování názvu procesu je skutečné, ale antianalýza dřímá. Datová část Pythonu definuje _proces_převleku() funkce, která nastavuje název procesu pomocí setproctitle (Linux/macOS) nebo Nastavit název konzoleW (Windows) – a hlavní () říká to. Takže ps aux je dobrý začátek python3-dbus-helper místo python3 …/guardian.pyStejný modul však definuje běží_monitor() funkce, která vyjmenovává známé nástroje pro monitorování procesů (htop, btop, Správce úloh, Monitor aktivity, Process Hacker, Monitor zdrojů, monitory systémů GNOME / KDE / Xfce / MATE atd.) – a hlavní () Nikdy ji nevolá. Substituční smyčka běží bezpodmínečně, ať už má uživatel otevřený monitor procesu, nebo ne. Funkce je v dodané verzi mrtvý kód. S největší pravděpodobností se jedná o pozůstatek z dřívější iterace nebo o scaffold pro funkci, která ještě nebyla propojena. Ať tak či onak, povrch proti analýze publikovaného datového obsahu je jeden přejmenovaný procesní název, nikoli obcházení aktivního monitoru.

4. Chování slučování konfigurací v balíčku. npm-install.js zapíše výchozí seznam peněženek do ~/.config/clipboard-guardian/config.json a pokud již konfigurační soubor existuje, zařadí do něj všechny klíče, jejichž stávající hodnota je prázdná. To znamená, že uživatel, který byl dříve infikován a částečně vyčistil konfiguraci – například vyprázdněním ethereum hodnota — bude znovu naplněna při každé další instalaci škodlivého balíčku. V žádné cestě kódu nedochází k vyčištění souboru perzistence.

Datum / čas (UTC) událost
2026-05-21 18:50:32 @jaggle/resizeobserves@1.0.0 publikováno.
2026-05-21 19:55:55 1.0.1 publikováno — první verze označená externím skenováním.
2026-05-21 19:58:10 1.0.2 publikováno.
2026-05-21 20:05:03 1.0.3 publikováno.
2026-05-21 20:09:24 1.0.4 publikováno.
2026-05-21 20:13:48 1.0.5 publikováno.
2026-05-21 20:41:52 1.0.6 publikováno.
2026-05-21 20:43:56 1.0.7 publikováno — přidává try/catch obal kolem kroku zápisu wallet-config npm-install.js.
2026-05-21 20:46:15 1.0.8 publikováno — instalační program přejmenován npm-install.jsnpm-install.cjs (bajtově identický obsah).
2026-05-22 Verdikty a rozsudky byly zveřejněny. Verze jsou v době vydání stále k dispozici v registru (probíhá).

Devět verzí za jednu hodinu a padesát šest minut je rychlé i na překlep. Vzor je v souladu s... kampaň „publikuj a vypal“ — zaplavit registr pod jeden handle, nechat detekci provést svou vlastní cestu a po odstranění jedné verze přejít na nový handle. Viditelné delty v celém běhu jsou kosmetické: 1.0.1 přidán explicitní /usr/bin/pip3Cesty ve stylu -k vyhledávacímu seznamu pip (kompatibilita se sudo), 1.0.7 zabalil zápis wallet-config do příkazu try/catch a 1.0.8 přejmenoval instalační program z . Js na .cjs přičemž si zachovává bajtovou identiku obsahu. .cjs přejmenování stop s varováními npm o nejednoznačném rozlišení modulů v balíčcích bez explicitního "typ" pole a může se jednat o pokus o potlačení šumu při instalaci, který by mohl upoutat pozornost. Datová část Pythonu – jediná část, která skutečně krade data – se ve všech devíti verzích nezměnila.

Ukazatele kompromisu

Balíčky

Ekosystém Balíček verze Status
Npm @jaggle/resizeobserves 1.0.0 přes 1.0.8 Platí v době zveřejnění; požadováno stažení.

Soubory a hashe

Cesta Poznámky
clipboard_guardian/guardian.py
(md5 f7935c2c82bc881288611ab6cd634f17)
Identické ve všech devíti publikovaných verzích (1.0.0 přes 1.0.8). Užitečné zatížení strojku.
npm-install.js (1.0.0 – 1.0.7)
npm-install.cjs (1.0.8)
Instalační program pro trvalost; stejné chování od začátku do konce. 1.0.7's .js a 1.0.8's .cjs jsou bajtově identické.
~/.config/clipboard-guardian/config.json Konfigurace perzistence Linuxu a balíček peněženky.
~/Library/Application Support/clipboard-guardian/config.json konfigurace perzistence macOS a balíček peněženky.
%APPDATA%\clipboard-guardian\config.json Konfigurace perzistence systému Windows a balíček peněženky.
~/.config/systemd/user/python3-dbus-helper.service Perzistence automatického spuštění Linuxu.
~/Library/LaunchAgents/com.apple.python.runtime.plist Perzistence LaunchAgentu v macOS.
~/Library/Logs/com.apple.python.runtime.log Protokol stdout/stderr v macOS pro agenta.
Scheduled Task PyRuntimeBroker Úloha automatického spuštění systému Windows (AtLogOn, bez časového limitu).

Indikátory chování

Signálu Popis
pip install --break-system-packages z npm po instalaci Vynutí instalaci Pythonu na celém webu bez ochrany PEP 668.
apt-get install -y xclip (nebo pacman/nedokončil) Instaluje utility schránky v systému Linux během instalace balíčku.
python3-dbus-helper.service uživatelská jednotka systemd Perzistence registrovaná pod věrohodně vypadajícím názvem běhového pomocníka.
com.apple.python.runtime LaunchAgent Označení perzistence mimo legitimní systémové cesty Apple.
PyRuntimeBroker Naplánovaná úloha Falešná perzistence běhového brokera systému Windows bez legitimního zdroje instalačního programu.
Proces v Pythonu s názvem python3-dbus-helper importu pyperclip a psutil Chování se neshoduje mezi zobrazeným názvem procesu a importovanými knihovnami.
Změny schránky ~0.4 s po kopírování adresy peněženky Chování podpisu při substituci adresy kryptoměny.

Balíček peněženky pro útočníky (seznam pro lovce obránců)

Seznam peněženek je dodáván pevně naprogramovaný npm-install.js a clipboard_guardian/guardian.pyObránci mohou tento seznam použít jak jako seznam blokovaných adres (jakýkoli převod na tyto adresy z firemních peněženek považovat za podezřelý), tak i jako lovecký klíč (přítomnost kteréhokoli z těchto řetězců v neověřeném konfiguračním souboru, artefaktu sestavení nebo vývojářském počítači považovat za indikátor infekce).

Balíček peněženky Attacker

Řetěz Adresa
Ethereum / BSC 0x450c0E58Fc2ba03632d3F5780ad8C966648B6F18
Ronin (EVM) ronin:450c0E58Fc2ba03632d3F5780ad8C966648B6F18
Bitcoin bc1qs2mpls4p0f7fng073gy2rcdgjpf7la4eugpt6y
Bitcoin Cash bitcoincash:qqmvyxxklzp7l3eslxavhc8phl6hprdf25lwc29nlt
Litecoin ltc1qnefc8x59a9cwtqnflt8hmqvezqw4hc7lt3fkqe
dogecoin DNEJmYRZtzyK44tZea4S7wV3otTyRk48Fy
Pomlčka XtJ7E6mnhPK93Vib29PGQrTmQjhTTqFwbS
Zcash t1d4hcEnBjdh9X6Wb6R2dxqjnxddJ6ocP8M
DigiByte DPmH2dhiGK3hk3A69tZUMz6tHzGFHBzSrH
Monero 42zhAidVhP7QETk83JAspS59ASALSHFio44vmu6MdDCz15cSqtqsG4QVyzY8vTrjGrTEA6zMbWW6Yft1Ynz1xLfCN5FVbXf
Solana DWBAmQLi9gP6mk7UfJfQGYTV1UPK32WekLTqg83q1mc5
TRON TVgEgMemmJABYYnbNr1Wi8bSgADEkdEBt2
TON UQDTSkvwmptU9eG988KgxS3WjnYAZlXgfpJxnz4mhWZAvULr
Ripple r9tj3cMCiqRijNYqNVYNuwKykkQfS8FE4H
Polkadot 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG
NEAR 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364
Kosmos cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e
Osmóza osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t
Celestia celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5
Injekční inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh
Kava kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux
Harmonie one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a
terra terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x
Algorand XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI
Hvězdný GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE
Cardano addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f
MultiverseX erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0
Aptos 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e
sui 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78
Nano nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn
Filecoin f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui
Tezos tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk
Od té doby 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA
Hedera 0.0.10488092

Řetězce s regulárním výrazem, ale s prázdnými sloty pro peněženky ve výchozí konfiguraci – Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB – nejsou v této sestavě aktivně substituovány, ale jsou detekovány. Považujte je za monitorovací rozsah, nikoli za rozsah substituce.

Atribuce a motivace

Kampaň nabízí tenkou atribuční plochu. Nebyli jsme schopni potvrdit identitu operátora. Co můžeme zaznamenat:

  • Metadata vydavatele. Účet npm cvrkat uvádí svůj e-mail jako olgascarlet@deltajohnsons.comDoména deltajohnsons.com Neodpovídá firemní identitě, kterou můžeme ověřit. Účet npm nevykazuje žádné ověření e-mailem ani SCM ověření. Neexistuje žádná přidružená veřejná prezentace na GitHubu.
  • Pole úložiště. Jedno balíček.json nenese žádné Sklad pole. Legitimní npm:@juggle/resize-observer ukazuje na skutečný repozitář GitHubu s tisíci hvězdiček a aktivními problémy. Absence odkazu na repozitář je nejrychlejší vizuální identifikace v uživatelském rozhraní npm.
  • Plagiátorství v README. Balíček README je legitimní @juggle/resize-observer Soubor README bajt po bajtu, včetně import příklady, které odkazují @juggle/resize-observer samotný (ne publikační balíček). Provozovatel se ani neobtěžoval přepsat importované soubory – což je běžný signál, že soubor readme byl stažen, nikoli upraven.
  • Žádná infrastruktura, na kterou by se dalo opřít. Neexistuje žádný koncový bod C2, žádné vyhledávání DNS ani žádná IP adresa. Škodlivé chování je plně zapouzdřeno v lokálním klipperu a pevně naprogramovaném balíčku peněženek. Díky tomu není možné přepínání peněženek na základě domény nebo ASN. Obránci, kteří přepínání peněženek mezi kampaněmi, by měli porovnat hash peněženek s jakýmkoli předchozím klipperem, který mají v souboru; opětovné použití peněženky napříč balíčky je nejsnadnějším propojením napříč kampaněmi.
  • Volba pojmenování. @jaggle/resizeobservations je o jeden znak jinde než @žonglovat a o jednu inflexi od známého pozorovatel změny velikostiKombinovaná vzdálenost pro úpravy jsou dva glyfy. Jedná se o záměrnou vizuální kolizi, nikoli o obecný dřep.

Motivace, založená na chování v datové části: čistá monetizace prostřednictvím oportunistické substituce ze schránky. Nedochází k žádnému sběru přihlašovacích údajů, otiskům hostitele ani k čtení proměnných prostředí. Operátorovi je jedno, kdo je oběť – záleží mu na tom, aby další přenos oběti směřoval na jednu z uvedených adres. Pokrytí čtyřiceti řetězců je loterijní model v akci: házejte široce a doufejte, že na N instalací přistane jeden vysoce hodnotný vložený objekt.

Zdá se, že operátorovi je otázka odstranění lhostejná. Publikování devíti verzí během dvou hodin ve stejném rozsahu se čte jako pokyn „publikovat a vypálit“: maximalizovat využití registru, než se zvýší latence odstranění, a pak pokračovat. Nepozorovali jsme nic takového. @jaggle v době psaní tohoto textu znovu publikujeme pod novým rozsahem, ale očekávali bychom podobné rozsahy (@jaggie, @žonglovat-, @joggle) se objeví v nadcházejících dnech, pokud bude operátor stále aktivní.

Dopad, trendy a co by měli obránci dělat

 Dopad

Kvantifikace dopadu v reálných penězích není z aktuální datové sady možná. Nástroj pro zachycení nezaznamenává žádnou telemetrii a peněženky dosud nebyly pozorovány při přijímání náhradních převodů k datu uzávěrky analýzy (následné sledování uvedených řetězců je na našem seznamu). Legitimní npm:@juggle/resize-observer průměrně dosahuje sedmimístných týdenních stažení – což je cíl s vysokou návštěvností, což je chyba v překlepech – a škodlivý balíček byl v době odhalení aktivní méně než 24 hodin, což omezuje vystavenou populaci, ale nenuluje ji.

Sledování poloměru výbuchu není přímým stahováním @jaggle/resizeobservations — ty jsou pravděpodobně malé. Jde o **tranzitivní instalace**: vývojář přidá balíček do sandboxového projektu a spustí npm installa pak zapomene, že instalační hook vůbec spustil instalaci. Každý počítač, který zpracoval postinstalační operaci, má nyní při automatickém spuštění únosce schránky pro každého uživatele, bez ohledu na to, zda je projekt stále na disku. Odebrání adresáře balíčku z node_modules neodstraňuje perzistenci.

Vznikající vzorce

Dva trendy, které tato kampaň ilustruje.

npm jako obal pro doručování datových částí v Pythonu. npm tarball je čtyřřádkový instalační soubor; skutečným stealerem je Python, který se instaluje do celého systému pomocí jádro z adresáře s balíčky. Není to nic nového – už jsme viděli, jak npm balíčky Python vynechávají – ale stává se to měřitelně běžnější formou v kampaních krypto-klipperů. Výhoda pro operátora je dvojí: knihovny schránky Pythonu (pyperclip první z nich) jsou čistší a multiplatformnější než JavaScriptové ekvivalenty a Většina automatizovaných npm skenerů silně zatěžuje soubory JavaScript a Python. .py lehce se svazuje. Cenou je, že instalační stopa je mnohem hlučnější – nový pip nainstalovat je těžké skrýt na vývojářském počítači, který to normálně nedělá pip nainstalovat během npm install.

Platformově nativní názvy jako jediná nenápadnost. Několik nedávných nástrojů pro zastřihování kódu a vykrádání malých datových úložišť se zcela zbavilo obfuskace na úrovni kódu ve prospěch legitimně vypadajících popisků perzistence. python3-dbus-helper, com.apple.python.runtime, a PyRuntimeBroker jsou učebnicové příklady – názvy, které oko obránce přehlédne na seznamu čtyřiceti uživatelských služeb. Jedná se o levnou a odolnou formu utajení: zablokování se provádí pro jednotlivé balíčky, ale soubory perzistence zablokování přežijí a služba pojmenovaná po skutečně vypadající komponentě platformy nebude vyčištěna ničím jiným než explicitním auditem.

Co by měli obránci dělat

  • Audit ~/.config/systemd/user/, ~/Library/LaunchAgents/ a Get-ScheduledTask výstup na počítačích vývojářů pro položky uvedené v IOC. Odebrání balíčku npm tyto položky ponechá na místě; je třeba je odstranit ručně.
  • Blokovat převody na uvedené adresy peněženek na hranicích mezi korporátními pokladnami a DeFi peněženkami, kde je k dispozici seznam povolených adres.
  • Hledejte soubor ~/.config/clipboard-guardian/config.json (a ekvivalenty platformy) napříč celým systémem vývojářů a strojů. Přítomnost souboru je vysoce pravděpodobnou infekcí bez ohledu na to, která verze balíčku jej doručila.
  • Hledat v node_modules/ soubor clipboard_guardian/guardian.py ve snapshotech build-cache, které mohly předcházet zastavení hry. Soubor md5 je stabilní ve všech recenzovaných verzích.
  • Lockfile-pin @juggle/resize-observer (legitimní balíček), takže budoucí instalace nemohou být pod jednoznakovou chybou přeloženy na nic jiného, ​​zejména v pracovních postupech bez lockfile, jako je npx.
  • Ošetření jakéhokoli npm postinstall volajícího pip install jako vysoce závažný ve výstavbě-pipeline zásady. Neexistuje žádný legitimní důvod, proč by npm balíček potřeboval pip při instalaci – Python tooling distribuuje Python tooling.
  • Vyhledat data monitorování srovnatelná s process_iter() pro procesy s názvem python3-dbus-helper, které importují pyperclip — neshoda v maskování (pomocník D-Bus s knihovnou schránky) je nejčistším behaviorálním indikátorem, který máme.
  • Rotovat adresy peněženek vložené z infikovaných počítačů. Únosce schránky naruší cestu mezi uživatelským rozhraním peněženky a cílem vložení; adresy kopírované během infekce mohou být tiše změněny. Cokoli odeslaného během okna infekce by mělo být považováno za potenciálně chybně směrované.

Poučení: vytrvalost přežije i odstranění. Registr nakonec odstraní @jaggle/resizeobservations Ve všech devíti verzích se jednotka systemd, LaunchAgent a naplánovaná úloha samy neodstraní.

Reference

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni