RuntimeBroker npm Typosquat Plants Crypto Clipper

RuntimeBroker: en npm Typosquat planter en 40-kædet kryptoklipper som en "System Runtime Helper" på tværs af operativsystemer

TL; DR

Den 21. maj 2026, npm-udgiveren jaggle udgivet ni versioner (1.0.0 ved 1.0.8) af @jaggle/resizeobserves i et vindue på cirka to timer.

Pakken er en typosquat af det legitime @juggle/resize-observer polyfill — en udbredt pakke med millioner af ugentlige downloads — men leverer ingen egentlig ResizeObserver-implementering.

I stedet er pakkens postinstall-krog installerer en medfølgende Python-nyttelast, registrerer persistens som en platformsnative runtime-broker og implementerer en platformsuafhængig udklipsholder-kaprer, der er målrettet mod kryptovalutatransaktioner.

Linux vedholdenhed fremstår som python3-dbus-helper, MacOS as com.apple.python.runtimeog Windows as PyRuntimeBroker.

Nyttelasten overvåger løbende udklipsholderen for tegnebogsadresser på tværs mere end 40 blockchains og erstatter lydløst kopierede adresser med angriberstyrede tegnebøger.

Malwaren opererer udelukkende lokalt uden udgående C2-infrastruktur, hvilket gør udklipsholderstatningen til selve eksfiltreringsmekanismen.

Den primære IOC er selve pakkenavnet: @jaggle/resizeobserves — bemærk den udeladte vokal i “jaggle” og det tilføjede “s” i “resizeobserves”.

Sværhedsgrad: høj.

Angrebet: Sådan fungerer det

npm:@jaggle/resizeobserves ligner ikke malware på en casual npm-visning. Dens README.md er den ordrede README-fil af npm:@jonglere/ændre størrelse-observatør — samme kodeeksempler, samme brugsanvisninger, samme importér { ResizeObserver } fra '@juggle/resize-observer' referencer overalt. Plagiatet er så omfattende, at enhver, der kigger på dokumentationen, ville antage, at de læser den legitime pakkes dokumentation.

pakke.jsoner derimod sparsom: nej Repository felt, en enkelt bin indgang peger på bin/udklipsholder-guardian.jsOg en efterinstallation script der kører node npm-install.jsREADME-filens eksempler på "Grundlæggende brug" refererer til en JavaScript-implementering, der ikke findes nogen steder i tarballen. Det eneste JavaScript i pakken er installationsskriptet.

Trin 1 — npm postinstall bootstrapper en Python-nyttelast

npm-install.js er platformbevidst. Den lokaliserer en pip eksekverbar langs en fast søgesti (/usr/bin/pip3, /usr/local/bin/pip, falder tilbage til python3 -m pip), installerer den medfølgende Python-pakke fra tarball-mappen, og — på Linux — henter xclip or xsell via apt-get, Pacman eller DNF hvis ingen af ​​delene allerede er til stede:

Brugen af –break-system-pakker er bevidst: moderne Linux-distributioner leverer Python med PEP 668's markør for eksternt administreret miljø aktiveret, hvilket som standard blokerer pip-installationer på hele webstedet. Installationsscriptet tvinger installationen igennem.

Scriptet er også sudo-bevidst. Når den kørende uid er resultatet af en sudo npm installation, manuskriptet læser SUDO_USER og punger ud til hent adgangskode at finde ægte brugerens hjemmemappe og skriver derefter sine persistensfiler dertil i stedet for ind i / RootPersistens er pr. bruger, ikke systemomfattende.

Fase 2 — Krydsende OS-persistens under runtime-broker-navne

Når Python-pakken er installeret, registrerer scriptet en automatisk startpost under et forskelligt navn på hvert operativsystem:

  • Linux — en systemd-brugerenhed på ~/.config/systemd/bruger/python3-dbus-hjælper.serviceEnhedens Beskrivelse is Python D-Bus Runtime Helper. Scriptet forsøger også at aktivere det via systemctl –brugeraktivering, og går tilbage til et manuelt symbolsk link under standard.mål.ønsker/ når systemctl fejler. Hvis det kører under sudo, skifter scriptet til sudo -u systemctl –bruger, med XDG_RUNTIME_DIR indstil så brugerbuskaldet fungerer.
  • MacOS — en LaunchAgent-plist på ~/Bibliotek/LaunchAgents/com.apple.python.runtime.plist med KørVedIndlæsning=sand og Hold i live=sandog derefter indlæst via launchctl-indlæsning.
  • Windows — en planlagt opgave ved navn PyRuntimeBroker, udløst AtLogOn, med en udførelsestidsgrænse på nul (dvs. ingen timeout), registreret via PowerShell.

Alle tre navne er umiddelbart troværdige. python3-dbus-hjælper følger navngivningskonventionen for legitim Python-D-Bus-integration på Linux-desktops. com.apple.python.runtime efterligner Apples reverse-DNS-mærkning for sine egne tjenester. PyRuntimeBroker afspejler Windows' RuntimeBroker.exe — en ægte, signeret Microsoft-tjeneste, der formidler tilladelsesanmodninger til UWP-apps. Ingen af ​​disse er ægte Apple/Microsoft/Python-tjenester i denne sammenhæng, men en forsvarer, der laver en hurtig visuel scanning af systemctl –brugerliste-enheder or Get-planlagt opgave er usandsynligt at blinke.

Fase 3 — Udklipsholderkapreren

Python-nyttelasten, installeret kl. udklipsholder/guardian.py, kører et uendeligt loop, der afspørger systemets udklipsholder hvert 400 millisekund. Ved hvert tick henter den det aktuelle indhold af udklipsholderen via pyperclip.paste() og kører dem mod en liste med over fyrre prækompilerede regulære udtryk, der dækker wallet-adresseformater for 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 og adskillige andre, der er stubbet, men tomme i standardkonfigurationen (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin).

Når et match lander, læser scriptet angriberens adresse for den pågældende kæde fra ~/.config/udklipsholder-guardian/config.json (eller dens platformækvivalenter) og overskriver udklipsholderen med den erstattede tekst:

Der er ingen netværksbeacon. Clipperen ringer ikke hjem, registrerer ikke inficerede værter og eksfiltrerer ikke noget. Eksfiltreringen er selve substitutionen: når en bruger kopierer en modtageradresse fra sin tegnebogs-brugergrænseflade og indsætter den i en afsendelsesdialog, tilhører den indsatte adresse operatøren. Pengene går tabt i båndet, transparent for brugeren.

Hvad er nyt her

Et par detaljer skiller sig ud sammenlignet med den generiske kryptoklipper-skabelon:

1. npm → Python-krydsning. De fleste kryptoklippere, vi ser i npm, er ren JavaScript, ofte tilsløret med _0x arrayrotation eller eval(atob(…)) stakke. Dette eksempel bruger npm tarball som intet andet end en leveringsindpakning til en Python-pakke — ren Python — og lader pip håndtere afhængighedsinstallation (pyperclip, psutil, Valgfri sætproctitle) deklareret i den medfølgende pyproject.tomlDer er ingen JavaScript-forvirring at omgå. Selve klipperen er almindelig, læsbar Python.

2. Tri-OS-persistensmærkater valgt ud fra sandsynlighed. Mange installationsprogrammer på tværs af platforme registrerer persistens under generiske navne (opdateringstjeneste, hjælper.plist). Dette eksempel gør sig umagen ved at vælge etiketter, der ligner platform-native runtime-brokere på hvert operativsystem. Navngivningen er det eneste forsøg på stealth - der er ingen rootkit, ingen brugerland-skjuling, ingen sti-forvirring. Væddemålet er, at forsvarere sjældent reviderer ~/.config/systemd/bruger/ og at en tjeneste ved navn python3-dbus-hjælper vil ikke skille sig ud i en tilfældig anmeldelse.

3. Procestitel-forklædning er reel, men antianalyse er i dvale. Python-nyttelasten definerer en _disguise_process() funktion, der angiver procestitlen via sætproctitle (Linux/macOS) eller SætKonsoltitelW (Windows) — og main () kalder det. Så ps aux vil vise python3-dbus-hjælper i stedet for python3 …/guardian.pyDet samme modul definerer dog en kører_monitor() funktion, der opregner kendte procesovervågningsværktøjer (htop, btop, Jobliste, Aktivitetsovervågning, Process Hacker, Ressourceovervågning, GNOME / KDE / Xfce / MATE systemovervågninger osv.) — og main () kalder den aldrig. Substitutionsløkken kører ubetinget, uanset om brugeren har en procesovervågning åben eller ej. Funktionen er død kode i den leverede version. Det er højst sandsynligt en rest fra en tidligere iteration eller et stillads for en funktion, der endnu ikke er installeret. Uanset hvad er den publicerede nyttelasts anti-analyseoverflade én procestitel-omdøbning, ikke aktiv overvågningsundgåelse.

4. Den medfølgende konfigurationsfletningsadfærd. npm-install.js skriver standard tegnebogslisten til ~/.config/udklipsholder-guardian/config.json og, hvis en konfigurationsfil allerede findes, fletter alle nøgler ind, hvis eksisterende værdi er tom. Det betyder en bruger, der tidligere er blevet inficeret og delvist har renset konfigurationen - f.eks. ved at tømme ethereum værdi — vil få den genudfyldt ved hver efterfølgende installation af skadelig pakke. Der er ingen oprydning af persistensfilen i nogen kodesti.

Dato/tid (UTC) Begivenhed
2026-05-21 18:50:32 @jaggle/resizeobserves@1.0.0 offentliggjort.
2026-05-21 19:55:55 1.0.1 udgivet — første version markeret ved ekstern scanning.
2026-05-21 19:58:10 1.0.2 offentliggjort.
2026-05-21 20:05:03 1.0.3 offentliggjort.
2026-05-21 20:09:24 1.0.4 offentliggjort.
2026-05-21 20:13:48 1.0.5 offentliggjort.
2026-05-21 20:41:52 1.0.6 offentliggjort.
2026-05-21 20:43:56 1.0.7 udgivet — tilføjer en try/catch indpakning omkring skrivetrinnet til wallet-config i npm-install.js.
2026-05-21 20:46:15 1.0.8 udgivet — installationsprogrammet omdøbt npm-install.jsnpm-install.cjs (byte-identisk indhold).
2026-05-22 Domme og IOC'er er offentliggjort. Versioner findes stadig i registret på offentliggørelsestidspunktet (igangværende).

Ni versioner på en time og seksoghalvtreds minutter er hurtigt, selv for en typosquat. Mønsteret stemmer overens med en publicer-og-brænd-kampagne — oversvømme registreringsdatabasen under ét handle, lade detekteringen gå sin gang, og flyt til et nyt handle, når en enkelt version er fjernet. De synlige deltaer på tværs af kørslen er kosmetiske: 1.0.1 tilføjet eksplicit /usr/bin/pip3-style-stier til pip-søgelisten (sudo-kompatibilitet), 1.0.7 indpakkede wallet-config-skrivningen i en try/catch, og 1.0.8 omdøbte installationsprogrammet fra . Js til .cjs samtidig med at indholdet forbliver byte-identisk. .cjs Omdøb spor med npm-advarsler om tvetydig modulopløsning i pakker uden en eksplicit "type" feltet, og kan være et forsøg på at undertrykke støj under installationen, der kunne tiltrække opmærksomhed. Python-nyttelasten - den eneste del, der rent faktisk stjæler - er uændret på tværs af alle ni versioner.

Indikatorer for kompromis

Pakker

Ecosystem Pakke versioner Status
NPM @jaggle/resizeobserves 1.0.0 ved 1.0.8 Live ved udgivelse; fjernelse anmodet.

Filer og hashes

Sti Noter
clipboard_guardian/guardian.py
(md5 f7935c2c82bc881288611ab6cd634f17)
Identisk på tværs af alle ni udgivne versioner (1.0.0 ved 1.0.8). Clipperens nyttelast.
npm-install.js (1.0.0 – 1.0.7)
npm-install.cjs (1.0.8)
Persistensinstallationsprogram; samme end-to-end-adfærd. 1.0.7's .js og 1.0.8's .cjs er byte-identiske.
~/.config/clipboard-guardian/config.json Linux persistenskonfiguration og wallet-pakke.
~/Library/Application Support/clipboard-guardian/config.json macOS persistenskonfiguration og wallet-pakke.
%APPDATA%\clipboard-guardian\config.json Windows-persistenskonfiguration og tegnebogspakke.
~/.config/systemd/user/python3-dbus-helper.service Linux autostart-persistens.
~/Library/LaunchAgents/com.apple.python.runtime.plist macOS LaunchAgent-persistens.
~/Library/Logs/com.apple.python.runtime.log macOS stdout/stderr-log for agenten.
Scheduled Task PyRuntimeBroker Windows automatisk startopgave (AtLogOn, ingen timeout).

Adfærdsindikatorer

Signal Beskrivelse
pip install --break-system-packages fra npm postinstall Tvinger Python-installation på hele webstedet frem, hvorved PEP 668-beskyttelse omgås.
apt-get install -y xclip (eller pacman/dnf) Installerer udklipsholderværktøjer på Linux under pakkeinstallation.
python3-dbus-helper.service systemd brugerenhed Persistens registreret under et plausibelt udseende runtime-helper-navn.
com.apple.python.runtime LaunchAgent Persistensmærkat uden for legitime Apple-systemstier.
PyRuntimeBroker Planlagt opgave Falsk Windows runtime broker-persistens uden legitim installationskilde.
Python-proces med titlen python3-dbus-helper importere pyperclip og psutil Adfærdsmæssig uoverensstemmelse mellem vist procesnavn og importerede biblioteker.
Ændringer i udklipsholderen ~0.4 sekunder efter kopiering af tegnebogsadresse Signaturadfærd ved udskiftning af kryptovalutaadresser.

Pakke med angriber-pung (liste over forsvarssøgende)

Tegnebogslisten sendes hardkodet i npm-install.js og udklipsholder/guardian.pyForsvarere kan bruge listen som både en blokeringsliste (behandl enhver overførsel til disse adresser fra virksomhedens tegnebøger som mistænkelig) og en jagtnøgle (behandl tilstedeværelsen af ​​en af ​​disse strenge i en uautoriseret konfigurationsfil, build-artefakt eller udviklermaskine som en infektionsindikator).

Attacker Wallet-pakke

Kæde Adresse
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
Polka prik 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG
NEAR 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364
kosmos cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e
osmose osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t
Celestia celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5
injektiv inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh
Kava kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux
Harmoni one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a
Jorden terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x
Algorand XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI
Stellar GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE
Cardano addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f
MultiverseX erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0
Aptos 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e
sui 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78
Nano nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn
Filecoin f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui
Tezos tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk
Ergo 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA
Hedera 0.0.10488092

Kæder med regex-dækning, men tomme wallet-pladser i standardkonfigurationen — Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB — er ikke aktivt substituerede i denne build, men detekteres. Behandl dem som overvågningsområdet snarere end substitutionsområdet.

Attribuering og motivation

Kampagnen tilbyder en tynd attributionsflade. Vi har ikke været i stand til at bekræfte operatørens identitet. Hvad vi kan registrere:

  • Udgiverens metadata. npm-kontoen jaggle angiver sin e-mail som olgascarlet@deltajohnsons.comDomænet deltajohnsons.com løser ikke en virksomhedsidentitet, vi kan verificere. npm-kontoen viser ingen e-mailbekræftelse og ingen SCM verifikation. Der er ingen tilknyttet offentlig GitHub-tilstedeværelse.
  • Felt for arkiv. pakke.json bærer ingen Repository felt. Det legitime npm:@jonglere/ændre størrelse-observatør peger på et rigtigt GitHub-arkiv med tusindvis af stjerner og aktive problemer. Fraværet af et link til arkivet er den hurtigste visuelle indikator på npm-brugergrænsefladen.
  • README-plagiering. Pakken README er den legitime @jongler/ændre størrelse-observatør README byte-for-byte, inklusive importere eksempler, der refererer @jongler/ændre størrelse-observatør selve (ikke udgivelsespakken). Operatøren gad ikke engang omskrive importfilen — et almindeligt signal om, at readme-filen blev fjernet, ikke tilpasset.
  • Ingen infrastruktur at vende sig efter. Der er intet C2-slutpunkt, intet DNS-opslag, ingen IP-adresse. Den ondsindede adfærd er fuldt indkapslet i den lokale clipper plus den hardcodede wallet-pakke. Dette gør domæne- eller ASN-baseret pivotering utilgængelig. Forsvarere, der pivoterer på tværs af kampagner, bør hash-matche wallets mod enhver tidligere clipper, de har på fil; genbrug af en wallet på tværs af pakker er det mest håndterbare link på tværs af kampagner.
  • Valg af navngivning. @jaggle/resizeobserves er én karakter væk fra @jongler og én bøjning væk fra den velkendte resize-observatørDen kombinerede redigeringsafstand er to glyffer. Dette er en bevidst visuel kollision, ikke en generisk squat.

Motivation, baseret på nyttelastadfærd: ren monetarisering gennem opportunistisk udklipsholdersubstitution. Der er ingen indsamling af legitimationsoplysninger, ingen fingeraftryk fra værten, ingen aflæsning af miljøvariabler. Operatøren er ligeglad med, hvem offeret er - de er interesserede i, at offerets næste overførsel peger på en af ​​de anførte adresser. Dækningen med fyrre kæder er lotterimodellen i aktion: kast bredt, håb om, at en enkelt højværdi-paste lander én gang pr. N installationer.

Operatøren virker ligeglad med fjernelse. At udgive ni versioner inden for to timer under samme omfang lyder som en publicer-og-brænd-handle: maksimer registreringsdatabasens fodaftryk, før fjernelseslatensen indhenter, og fortsæt derefter. Vi har ikke observeret @jaggle genudgiver under et nyt omfang i skrivende stund, men vi forventer lignende omfang (@jaggie, @jongler-, @joggle) vil blive vist i løbet af de kommende dage, hvis operatøren stadig er aktiv.

Indvirkning, tendenser og hvad forsvarere bør gøre

 Impact

Det er ikke muligt at kvantificere effekten i rigtige penge ud fra det nuværende datasæt. Clipperen skriver ingen telemetri, og tegnebøgerne er endnu ikke observeret modtagende substituerede overførsler ved analysens grænse (en opfølgende undersøgelse af de anførte kæder er på vores liste). npm:@jonglere/ændre størrelse-observatør ligger i gennemsnit på syvcifrede ugentlige downloads – et typosquat-mål med høj trafik – og den ondsindede pakke var live i under 24 timer på tidspunktet for afsløringen, hvilket begrænser den eksponerede population, men ikke nulstiller den.

Sprængningsradiusen, der er værd at spore, er ikke direkte downloads af @jaggle/resizeobserves — de er sandsynligvis små. Det er **transitive installationer**: en udvikler tilføjer pakken til et sandkasseprojekt, der kører npm installere, og så glemmer man at installations-hook'en nogensinde har kørt. Hver maskine, der behandlede postinstallationen, har nu en brugervenlig hijacker ved automatisk start af udklipsholderen, uanset om projektet stadig er på disken. Fjerner pakkemappen fra node_modules fjerner **ikke** persistensen.

Nye mønstre

To tendenser, som denne kampagne eksemplificerer.

npm som en Python-payload-leveringswrapper. npm tarball er et installationsprogram med 4 linjer; den egentlige stjæler er Python, installeret på hele systemet af pip fra den medfølgende mappe. Dette er ikke nyt - vi har set npm-pakker droppe Python før - men det er ved at blive en målbart mere almindelig form på tværs af krypto-klippemaskinekampagner. Fordelen for operatøren er dobbelt: Python-klippemaskinebiblioteker (pyperclip (først blandt dem) er renere og mere tværplatformede end JavaScript-ækvivalenterne, og De fleste automatiserede npm-scannere vægter JavaScript-filer og Python tungt .py bundter let. Omkostningerne er, at installationsaftrykket er meget støjende — en frisk pip installation er svært at skjule på en udviklermaskine, der normalt ikke pip installation i løbet af npm installere.

Platform-native navne som den eneste stealth. Adskillige nylige clippers og små-nyttelast-stjælere har helt droppet obfuskation på kodeniveau til fordel for legitimt udseende persistensetiketter. python3-dbus-hjælper, com.apple.python.runtimeog PyRuntimeBroker er lærebogseksempler – navne, som en forsvarers øje vil springe over på en liste med fyrre brugertjenester. Dette er en billig, holdbar form for stealth: nedtagning sker pr. pakke, men persistensfilerne overlever nedtagningen, og en tjeneste opkaldt efter en platformkomponent, der ser rigtig ud, vil ikke blive ryddet op ved andet end en eksplicit revision.

Hvad forsvarere bør gøre

  • Revision ~/.config/systemd/user/, ~/Library/LaunchAgents/ og Get-ScheduledTask output på udviklermaskiner for de poster, der er angivet i IOC'er. Fjernelse af npm-pakken lader disse være på plads; de skal fjernes manuelt.
  • Bloker overførsler til de angivne tegnebogsadresser ved grænser mellem virksomheds-, finans- og DeFi-wallet-kontorer, hvor adressetilladelsesliste er tilgængelig.
  • Søg efter ~/.config/clipboard-guardian/config.json (og platformækvivalenter) på tværs af udvikler-maskineflåden. Tilstedeværelsen af ​​filen er en højkonfidensinfektion uanset hvilken pakkeversion den leverede.
  • Søg i node_modules/ efter clipboard_guardian/guardian.py i build-cache-snapshots, der muligvis er fra før fjernelsen. Filens md5 er stabil på tværs af alle gennemgåede versioner.
  • Låsfil-pin @jongle/resize-observatør (den legitime pakke), så fremtidige installationer ikke kan omdannes til noget andet under en fejltype på ét tegn, især i arbejdsgange uden låsefiler som f.eks. NPX.
  • Behandl enhver npm postinstall, der kalder pip install som høj alvorlighedsgrad i bygge-pipeline politik. Der er ingen legitim grund til, at en npm-pakke skal have brug for pip ved installationstidspunktet — Python-værktøj distribuerer Python-værktøj.
  • Søg efter process_iter()-sammenlignbare overvågningsdata for processer med navnet python3-dbus-helper, der importerer pyperclip — forklædningsmismatchen (D-Bus-hjælper, der indeholder et udklipsholderbibliotek) er den reneste adfærdsindikator, vi har.
  • Roter tegnebogsadresser indsat fra inficerede maskiner. En udklipsholder-kaprer kompromitterer stien mellem en tegnebogs brugergrænseflade og et indsætningsmål; adresser, der kopieres, mens de er inficerede, kan ændres i stilhed. Alt, der sendes inden for infektionsvinduet, bør behandles som potentielt vildledt.

Konklusionen er: Vedholdenhed overlever fjernelse. Registreringsdatabasen vil til sidst fjerne @jaggle/resizeobserves I alle ni versioner fjernes systemd-enheden, LaunchAgent og den planlagte opgave ikke af sig selv.

Referencer

sca-tools-software-kompositionsanalyseværktøjer
Prioriter, afhjælp og sørg for dine softwarerisici
Få din gratis konto.
Der kræves ikke noget kreditkort.

Sikr din softwareudvikling og -levering

med Xygeni-produktsuite