RuntimeBroker npm Typosquat Plants Crypto Clipper

RuntimeBroker: npm Typosquat нь 40 гинжин хэлхээтэй крипто-клипперийг үйлдлийн систем хоорондын "Системийн ажиллах үеийн туслагч" болгон суулгадаг.

TL, DR

2026-05-21-нд npm хэвлэн нийтлэгч jaggle есөн хувилбарыг гаргасан (1.0.0 дамжуулан 1.0.8) нь @jaggle/resizeobserves ойролцоогоор хоёр цагийн дотор.

Энэ багц нь хууль ёсны гэсэн үгийн алдаа юм @juggle/resize-observer polyfill — долоо хоногт сая сая удаа татагддаг өргөн хэрэглэгддэг багц боловч ResizeObserver-ийн бодит хэрэгжилтийг илгээдэггүй.

Үүний оронд багц нь суулгалтын дараах дэгээ багцалсан Python төлбөрийн ачааллыг суулгаж, persistence-ийг платформд суурилсан харагдах ажиллах үеийн брокер болгон бүртгэж, криптовалютын гүйлгээг чиглүүлэх платформ хоорондын clipboard hijacker-ийг байрлуулдаг.

Linux тууштай байдал дараах байдлаар харагдаж байна python3-dbus-helper, MacOS as com.apple.python.runtimeБолон Windows as PyRuntimeBroker.

Ачаа нь түрийвчний хаягийг хадгалахын тулд clipboard-г тасралтгүй хянадаг 40 гаруй блокчэйн мөн хуулбарласан хаягуудыг халдагчийн хяналттай түрийвчээр чимээгүйхэн сольдог.

Хортой програм хангамж нь гадагш чиглэсэн C2 дэд бүтэцгүйгээр бүхэлдээ орон нутагт ажилладаг тул clipboard-ийн орлуулалтыг өөрөө гадагшлуулах механизм болгодог.

Үндсэн IOC нь багцын нэр өөрөө юм: @jaggle/resizeobserves — “jaggle” гэдэг үгэнд унасан эгшгийг болон “resizeobserves” гэдэг үгэнд нэмэгдсэн “s” үсгийг анхаарна уу.

Хүнд байдал: өндөр.

Довтолгоо: Энэ нь хэрхэн ажилладаг вэ

npm:@jaggle/resizeobserves энгийн хувилбар дээр хортой програм шиг харагддаггүй npm харах. Энэ нь README.md нь -ын үгчилсэн README юм npm:@juggle/resize-observer — ижил кодын дээж, ижил хэрэглээний заавар, ижил '@juggle/resize-observer'-с {ResizeObserver}-г импортлох бүхэлд нь лавлагаа оруулсан болно. Хуулбарлах нь маш их тул баримт бичгийг харсан хэн ч гэсэн жинхэнэ багцын баримт бичгийг уншиж байна гэж бодох болно.

The багц.jsonхарин эсрэгээрээ сийрэг: үгүй репозитор талбар, ганц байна оруулга зааж байна bin/clipboard-guardian.js, А суулгасны дараах ажилладаг скрипт зангилаа npm-install.jsREADME-ийн “Үндсэн хэрэглээ” жишээнүүд нь tarball-д хаана ч байхгүй JavaScript хэрэгжүүлэлтийг дурдсан байдаг. Багц дахь цорын ганц JavaScript нь суулгах скрипт юм.

1-р үе шат — npm postinstall нь Python-ы ачааллыг ачаалдаг

npm-install.js платформыг мэддэг. Энэ нь дараах байршлыг тогтоодог. PIP тогтмол хайлтын зам дагуу гүйцэтгэгдэх файл (/usr/bin/pip3, /usr/local/bin/pip, буцаж байна python3 -m pip), багцалсан Python багцыг tarball сангаас суулгадаг бөгөөд — Linux дээр — татаж авдаг xclip or xsel дамжуулан apt-get, pacman, эсвэл dnf хэрэв аль нь ч байхгүй бол:

ашиглах –break-system-packs санаатайгаар хийгдсэн: орчин үеийн Linux дистрибьютерүүд Python-г PEP 668-ийн гаднаас удирддаг орчны тэмдэглэгээг идэвхжүүлсэн байдлаар хүргэдэг бөгөөд энэ нь сайтын хэмжээнд pip суулгалтыг анхдагчаар хаадаг. Суулгах скрипт нь суулгалтыг хүчээр дамжуулдаг.

Скрипт нь мөн sudo-г мэддэг. Ажиллаж буй uid нь a-ийн үр дүн байх үед sudo npm суулгац, скриптийг уншдаг SUDO_USER мөн гарч байна getent passwd олох бодит хэрэглэгчийн гэрийн санд хадгалж, дараа нь түүний тогтвортой байдлын файлуудыг дотор нь биш тэнд бичдэг / root гэж үздэгТогтвортой байдал нь системийн хэмжээнд биш, харин хэрэглэгч бүрт хамаарна.

2-р үе шат — Ажиллах үеийн брокерийн нэрийн дор үйлдлийн систем хоорондын тогтвортой байдал

Python багц суулгасны дараа скрипт нь үйлдлийн систем бүр дээр өөр нэрээр автоматаар эхлэх оруулгыг бүртгэдэг:

  • Linux — системийн хэрэглэгчийн нэгж ~/.config/systemd/user/python3-dbus-helper.serviceНэгжийн Тодорхойлолт is Python D-Bus Runtime ТуслагчСкрипт нь мөн үүнийг идэвхжүүлэхийг оролддог systemctl –хэрэглэгчийг идэвхжүүлэх, доор гарын авлагын симболын холбоос руу буцаж байна анхдагч.зорилт.хүсэлтүүд/ systemctl ажиллахаа больсон үед. Хэрэв sudo тушаалын дор ажиллаж байгаа бол скрипт дараах руу шилждэг судо -u systemctl-хэрэглэгчхамт XDG_RUNTIME_DIR хэрэглэгчийн автобусны дуудлага ажиллахаар тохируулна уу.
  • MacOS — LaunchAgent plist дээр ~/Library/LaunchAgents/com.apple.python.runtime.plist хамтран RunAtLoad=үнэн болон KeepAlive=үнэн, дараа нь ачаалагдсан launchctl ачаалал.
  • Windows — PyRuntimeBroker нэртэй, AtLogOn-г идэвхжүүлсэн, гүйцэтгэх хугацааны хязгаар нь тэг (өөрөөр хэлбэл хугацаа дуусаагүй), PowerShell-ээр бүртгэгдсэн хуваарьт даалгавар.

Гурван нэр бүгд нэг дор үнэмшилтэй харагдаж байна. python3-dbus-туслагч Linux ширээний компьютерууд дээр Python-D-Bus-ийн хууль ёсны интеграцийн нэршлийн конвенцийг дагадаг. com.apple.python.runtime Apple-ийн өөрийн үйлчилгээнүүдийн урвуу DNS шошгыг дуурайдаг. PyRuntimeBroker Windows-ийн цуурай RuntimeBroker.exe — UWP аппликейшнуудын зөвшөөрлийн хүсэлтийг зуучилдаг жинхэнэ, гарын үсэгтэй Microsoft үйлчилгээ. Эдгээрийн аль нь ч энэ хүрээнд жинхэнэ Apple/Microsoft/Python үйлчилгээ биш боловч хамгаалагч хурдан харааны скан хийж байна systemctl –хэрэглэгчийн жагсаалтын нэгжүүд or Хуваарьт Даалгавар авах цочирдох магадлал багатай.

3-р үе шат — Хувийн санах ойн хулгайч

Python-ы ачаалал, суулгагдсан clipboard_guardian/guardian.py, системийн clipboard-оос 400 миллисекунд тутамд хязгааргүй давталтаар санал асуулга явуулдаг. Тэмдэглэгээ хийх бүрт одоогийн clipboard-ын агуулгыг татаж авдаг. pyperclip.paste() мөн тэдгээрийг 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 болон бусад хэд хэдэн анхдагч тохиргоонд хоосон боловч бөглөгдсөн (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin) валютын түрийвчний хаягийн форматыг хамарсан дөчин гаруй урьдчилан эмхэтгэсэн тогтмол илэрхийллийн жагсаалттай харьцуулан ажиллуулдаг.

Тохиролцоонд хүрэхэд скрипт нь халдагчийн хаягийг уншдаг. ~/.config/clipboard-guardian/config.json (эсвэл түүний платформтой дүйцэхүйц) мөн санах ойг орлуулсан текстээр дарж бичнэ:

Сүлжээний дохио байхгүй. Клиппер гэр лүүгээ утасддаггүй, халдвар авсан хостуудыг бүртгэдэггүй, юу ч гадагшлуулдаггүй. Гадагшлуулдаг нь орлуулалт өөрөө юм: хэрэглэгч хүлээн авагчийн хаягийг түрийвчнийхээ UI-ээс хуулж, илгээх харилцах цонхонд буулгахад буулгасан хаяг нь операторынх болно. Санхүүжилт нь хэрэглэгчдэд ил тод байдлаар зурвасын дотор алдагддаг.

Энд шинээр юу байна

Ерөнхий крипто-клипперийн загвартай харьцуулахад цөөн хэдэн нарийн ширийн зүйл онцгой харагдаж байна:

1. npm → Python кроссовер. npm дээр бидний харж буй ихэнх крипто-клипперүүд нь цэвэр JavaScript бөгөөд ихэвчлэн ...-тэй будлиантай байдаг. _0x массивын эргэлт эсвэл eval(atob(…)) стекүүд. Энэ жишээ нь npm tarball-г Python багцын хүргэлтийн ороомог болгон ашигладаг - цэвэр Python - бөгөөд pip нь хамаарлын суулгалтыг зохицуулах боломжийг олгодог (пиперклип, псутил, сонголттой setproctitle) багцад зарласан pyproject.tomlJavaScript-ийн ямар ч будлиан байхгүй. Клиппер өөрөө энгийн, уншигдахуйц Python хэл юм.

2. Боломжтой байдлын үүднээс сонгосон Tri-OS тогтвортой байдлын шошго. Олон платформ суулгагчид ерөнхий нэрээр тогтвортой байдлыг бүртгэдэг (шинэчлэгч.үйлчилгээ, туслагч.плист). Энэ жишээ нь үйлдлийн систем бүр дээр платформ дээр суурилсан ажиллах үеийн брокеруудтай төстэй шошгыг сонгоход бэрхшээлтэй тулгардаг. Нэршил нь нууцлах цорын ганц оролдлого юм - rootkit байхгүй, хэрэглэгчийн талбарыг нуухгүй, зам төөрөгдөл байхгүй. Хамгаалагчид ховор аудит хийдэг гэдэгт итгэлтэй байна. ~/.config/systemd/user/ мөн нэртэй үйлчилгээ гэж python3-dbus-туслагч энгийн тоймд онцлохгүй.

3. Үйл явцын гарчгийн далдлалт бодит боловч эсрэг дүн шинжилгээ идэвхгүй байна. Python-ы ачаалал нь дараахыг тодорхойлдог _disguise_process() процессын гарчгийг тохируулдаг функц setproctitle (Линукс/macOS) эсвэл Консолын гарчгийг тохируулах (Windows) — ба гол () үүнийг дууддаг. Тиймээс ps aux харуулах болно python3-dbus-туслагч оронд нь python3 …/guardian.pyГэсэн хэдий ч, ижил модуль нь дараах зүйлийг тодорхойлдог. ажиллаж байгаа_монитор() мэдэгдэж буй процессын хяналтын хэрэгслүүдийг тоочдог функц (htop, btop, Даалгаврын менежер, Үйл ажиллагааны хяналт, Процесс хакер, Нөөцийн хяналт, GNOME / KDE / Xfce / MATE системийн мониторууд гэх мэт) — ба гол () хэзээ ч дууддаггүй. Орлуулах давталт нь хэрэглэгч процессын монитор нээлттэй байгаа эсэхээс үл хамааран нөхцөлгүйгээр ажилладаг. Функц нь илгээсэн хувилбарт үхсэн код юм. Энэ нь өмнөх хувилбараас үлдсэн эсвэл хараахан холбогдоогүй функцийн суурь байх магадлалтай. Аль ч тохиолдолд нийтлэгдсэн ашигтай ачааллын эсрэг дүн шинжилгээний гадаргуу нь нэг процессын гарчгийн нэршил болохоос идэвхтэй монитороос зайлсхийх биш юм.

4. Багцлагдсан тохиргоо-нэгтгэх зан төлөв. npm-install.js анхдагч түрийвчний жагсаалтыг дараах руу бичдэг ~/.config/clipboard-guardian/config.json мөн хэрэв тохиргооны файл аль хэдийн байгаа бол одоо байгаа утга нь хоосон байгаа аливаа түлхүүрүүдийг нэгтгэдэг. Энэ нь өмнө нь халдвар авсан бөгөөд тохиргоог хэсэгчлэн цэвэрлэсэн хэрэглэгч гэсэн үг юм - жишээлбэл, тохиргоог хоослох замаар ethereum утга — дараагийн хортой багц суулгах бүрт дахин байршуулна. Кодын замд тогтвортой байдлын файлыг цэвэрлэх зүйл байхгүй.

Огноо / Цаг (UTC) үйл явдал
2026-05-21 18:50:32 @jaggle/resizeobserves@1.0.0 нийтлэгдсэн.
2026-05-21 19:55:55 1.0.1 нийтлэгдсэн — анхны хувилбарыг гадаад сканнердалтаар тэмдэглэсэн.
2026-05-21 19:58:10 1.0.2 нийтлэгдсэн.
2026-05-21 20:05:03 1.0.3 нийтлэгдсэн.
2026-05-21 20:09:24 1.0.4 нийтлэгдсэн.
2026-05-21 20:13:48 1.0.5 нийтлэгдсэн.
2026-05-21 20:41:52 1.0.6 нийтлэгдсэн.
2026-05-21 20:43:56 1.0.7 нийтлэгдсэн - нэмж оруулав try/catch write алхамыг ашиглан wallpaper-config-ийг ашиглан write хийх npm-install.js.
2026-05-21 20:46:15 1.0.8 нийтлэгдсэн - суулгагчийн нэрийг өөрчилсөн npm-install.jsnpm-install.cjs (байттай ижил агуулга).
2026-05-22 Шийдвэрүүд болон ОУОХ-г нийтэлсэн. Хувилбарууд нь нийтлэх үед бүртгэлд хэвээр байна (үргэлжилж байна).

Нэг цаг тавин зургаан минутын дотор есөн хувилбарыг бичих нь бичгийн алдаатай хүнд ч гэсэн хурдан юм. Энэ хэв маяг нь дараах байдалтай нийцдэг. нийтлээд шатаах кампанит ажил — бүртгэлийг нэг бариулын дор дүүргэж, илрүүлэлтийг үргэлжлүүлж, нэг хувилбарыг устгасны дараа шинэ бариул руу шилжих. Ажиллагааны туршид харагдах дельта нь гоо сайхны шинж чанартай: 1.0.1 хувилбарт тодорхой нэмэлт нэмэгдсэн /usr/bin/pip3-style замууд pip хайлтын жагсаалт руу (sudo-compatibility), 1.0.7 нь wallet-config бичих командыг try/catch команд болгон ороосон бөгөөд 1.0.8 нь суулгагчийн нэрийг өөрчилсөн. .js to .cjs агуулгыг нь байтаар нь ижил байлгахын зэрэгцээ. .cjs Тодорхойгүй багцууд дахь модулийн нягтралын талаарх тодорхойгүй анхааруулга бүхий трекүүдийн нэрийг npm-ээр өөрчлөх "төрөл" талбар бөгөөд анхаарал татаж болох суулгалтын үеийн чимээ шуугианыг дарах оролдлого байж магадгүй юм. Python-ы ашигтай ачаалал - үнэндээ хулгайлдаг цорын ганц хэсэг - бүх есөн хувилбарт өөрчлөгдөөгүй байна.

Буулт хийх үзүүлэлтүүд

Багцууд нь

Экосистем Багц Хувилбарууд байдал
npm @jaggle/resizeobserves 1.0.0 дамжуулан 1.0.8 Нийтлэгдсэн үед шууд дамжуулсан; татан буулгах хүсэлт гаргасан.

Файлууд ба Хэшүүд

Зам тэмдэглэл
clipboard_guardian/guardian.py
(md5 f7935c2c82bc881288611ab6cd634f17)
Нийтлэгдсэн есөн хувилбарын хувьд ижил (1.0.0 дамжуулан 1.0.8). Үс засах машины ачаа.
npm-install.js (1.0.0 – 1.0.7)
npm-install.cjs (1.0.8)
Persistence суулгагч; төгсгөлөөс төгсгөл хүртэлх ижил зан төлөв. 1.0.7's .js болон 1.0.8's .cjs нь байтаар ижил байна.
~/.config/clipboard-guardian/config.json Linux-ийн тогтвортой байдлын тохиргоо болон түрийвчний багц.
~/Library/Application Support/clipboard-guardian/config.json macOS-ийн тогтвортой байдлын тохиргоо болон түрийвчний багц.
%APPDATA%\clipboard-guardian\config.json Windows-ийн тогтвортой байдлын тохиргоо болон түрийвчний багц.
~/.config/systemd/user/python3-dbus-helper.service Linux-н автоматаар эхлэх тогтвортой байдал.
~/Library/LaunchAgents/com.apple.python.runtime.plist macOS LaunchAgent-ийн тогтвортой байдал.
~/Library/Logs/com.apple.python.runtime.log Агентын macOS stdout/stderr бүртгэл.
Scheduled Task PyRuntimeBroker Windows автоматаар эхлүүлэх даалгавар (AtLogOn, хугацаа дуусаагүй).

Зан үйлийн үзүүлэлтүүд

Дохиолол Тодорхойлолт
pip install --break-system-packages npm postinstall-аас PEP 668 хамгаалалтыг алгасаж, сайтын хэмжээнд Python суулгалтыг албаддаг.
apt-get install -y xclip (эсвэл pacman/dnf) Багц суулгах явцад Linux дээр clipboard хэрэгслүүдийг суулгадаг.
python3-dbus-helper.service systemd хэрэглэгчийн нэгж Persistence нь боломжийн харагдаж буй ажиллах үеийн туслагчийн нэрээр бүртгэгдсэн.
com.apple.python.runtime LaunchAgent Apple-ийн системийн хууль ёсны замаас гадуурх тогтвортой байдлын шошго.
PyRuntimeBroker Хуваарьт даалгавар Хуурамч Windows ажиллах үеийн брокерийн тогтвортой байдал нь хууль ёсны суулгагчийн эх үүсвэргүй.
Python процесс нэртэй python3-dbus-helper импортлох pyperclip болон psutil Харуулсан процессын нэр болон импортолсон номын сангуудын хоорондох зан төлөвийн зөрүү.
Түрийвчний хаягийг хуулсны дараа санах ой ~0.4 секунд өөрчлөгдөнө Криптовалютын хаяг орлуулалтын гарын үсгийн зан төлөв.

Довтлогчийн түрийвчний багц (хамгаалагчийн ан агнуурын жагсаалт)

Түрийвчний жагсаалт нь хатуу кодлогдсон хэлбэрээр илгээгддэг npm-install.js болон clipboard_guardian/guardian.pyХамгаалагчид уг жагсаалтыг блоклох жагсаалт (корпорацийн түрийвчнээс эдгээр хаяг руу хийсэн аливаа шилжүүлгийг сэжигтэй гэж үзэх) болон анчлах түлхүүр (эдгээр мөрүүдийн аль нэг нь баталгаажаагүй тохиргооны файл, бүтээх эд өлгийн зүйл эсвэл хөгжүүлэгчийн машинд байгаа эсэхийг халдварын индикатор гэж үзэх) болгон ашиглаж болно.

Attacker Wallet багц

Зочид буудлуудын сүлжээ Хаяг
Эфириум / BSC 0x450c0E58Fc2ba03632d3F5780ad8C966648B6F18
Ронин (EVM) ronin:450c0E58Fc2ba03632d3F5780ad8C966648B6F18
Википедиа bc1qs2mpls4p0f7fng073gy2rcdgjpf7la4eugpt6y
Bitcoin Бэлэн мөнгө bitcoincash:qqmvyxxklzp7l3eslxavhc8phl6hprdf25lwc29nlt
Litecoin ltc1qnefc8x59a9cwtqnflt8hmqvezqw4hc7lt3fkqe
Dogecoin DNEJmYRZtzyK44tZea4S7wV3otTyRk48Fy
Зураас XtJ7E6mnhPK93Vib29PGQrTmQjhTTqFwbS
ЗКаш t1d4hcEnBjdh9X6Wb6R2dxqjnxddJ6ocP8M
DigiByte DPmH2dhiGK3hk3A69tZUMz6tHzGFHBzSrH
Монеро 42zhAidVhP7QETk83JAspS59ASALSHFio44vmu6MdDCz15cSqtqsG4QVyzY8vTrjGrTEA6zMbWW6Yft1Ynz1xLfCN5FVbXf
Солана DWBAmQLi9gP6mk7UfJfQGYTV1UPK32WekLTqg83q1mc5
ТРЕЙД TVgEgMemmJABYYnbNr1Wi8bSgADEkdEBt2
Тон UQDTSkvwmptU9eG988KgxS3WjnYAZlXgfpJxnz4mhWZAvULr
Ripple r9tj3cMCiqRijNYqNVYNuwKykkQfS8FE4H
Полкадот 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG
НЭГ 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364
Космос cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e
осмосын osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t
Селестиа celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5
Тарилга inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh
Кава kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux
Harmony one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a
Терра terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x
Алгорандын XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI
Оддын GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE
Карано addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f
MultiverseX erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0
тохиромжтой 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e
Сүй 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78
Nano nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn
Филекоин f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui
Tezos tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk
Эрог 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA
Хэдера 0.0.10488092

Анхдагч тохиргоонд байгаа Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB гэх мэт ердийн хамрах хүрээтэй гинжнүүд нь энэ бүтцэд идэвхтэйгээр орлуулагдаагүй боловч илэрсэн байна. Тэдгээрийг орлуулалтын хүрээ гэхээсээ илүү хяналтын хүрээ гэж үзнэ үү.

Зохицуулалт ба урам зориг

Энэ кампанит ажил нь нимгэн холбоосын гадаргуутай. Бид операторын таних тэмдгийг баталгаажуулж чадаагүй байна. Бидний бичиж чадах зүйлс:

  • Хэвлэн нийтлэгчийн мета өгөгдөл. npm данс жагл имэйл хаягаа дараах байдлаар жагсаасан olgascarlet@deltajohnsons.comДомэйн deltajohnsons.com бидний баталгаажуулж чадах корпорацийн үнэмлэхийг шийддэггүй. npm бүртгэл нь имэйл баталгаажуулалт болон үгүйг харуулдаг. SCM баталгаажуулалт. Холбогдох олон нийтийн GitHub байхгүй байна.
  • Хадгалах сангийн талбар. The багц.json үгүй репозитор талбар. Хууль ёсны npm:@juggle/resize-observer мянга мянган одтой, идэвхтэй асуудлуудтай жинхэнэ GitHub репозиторыг зааж байна. Репозиторын холбоос байхгүй байгаа нь npm UI дээрх хамгийн хурдан харааны дохио юм.
  • README хуулбарлалт. README багц нь хууль ёсны юм @juggle/resize-observer README байт-байт, үүнд орно импорт лавлагаатай жишээнүүд @juggle/resize-observer өөрөө (нийтлэх багц биш). Оператор импортыг дахин бичих гэж ч оролдоогүй - энэ нь readme-г тохируулаагүй, харин устгасан гэсэн нийтлэг дохио юм.
  • Эргүүлэх дэд бүтэц байхгүй. C2 төгсгөлийн цэг, DNS хайлт, IP хаяг байхгүй. Хортой зан үйл нь орон нутгийн Clipper болон хатуу кодлогдсон түрийвчний багцад бүрэн багтсан байдаг. Энэ нь домэйн эсвэл ASN дээр суурилсан эргэлтийг боломжгүй болгодог. Кампанит ажлын хооронд эргэлт хийж буй хамгаалагчид түрийвчийг файлд байгаа өмнөх Clipper-тэй нь харьцуулж үзэх ёстой; багцуудын хооронд түрийвчийг дахин ашиглах нь кампанит ажлын хоорондох хамгийн хялбар холбоос юм.
  • Нэрлэх сонголт. @jaggle/resizeobserves нэг тэмдэгтээр дутуу байна @jouggle мөн алдартай зүйлээс нэг хазайлт хэмжээг өөрчлөх-ажиглагчЗасварлах зайг нэгтгэсэн нь хоёр тэмдэгт юм. Энэ бол санаатайгаар хийгдсэн харааны мөргөлдөөн болохоос ерөнхий суулт биш юм.

Ачааллын зан төлөвт суурилсан сэдэл: боломжит clipboard орлуулалтаар дамжуулан цэвэр мөнгө олох. Итгэмжлэл цуглуулах, хостын хурууны хээ хээ авах, орчны хувьсагчийн уншилт байхгүй. Оператор хохирогч хэн байх нь хамаагүй - тэд хохирогчийн дараагийн шилжүүлэг жагсаасан хаягуудын аль нэг рүү чиглэсэн эсэхийг анхаардаг. Дөчин гинжин хэлхээний хамрах хүрээ нь үйл ажиллагаа явуулж буй сугалааны загвар юм: өргөн хүрээнд шидэгдэж, N суулгалт тутамд нэг өндөр үнэ цэнэтэй паста буухыг найдаж байна.

Оператор устгахад санаа зовохгүй байгаа бололтой. Хоёр цагийн дотор ижил хүрээнд есөн хувилбарыг нийтлэх нь publish-and-burn бариултай адил уншигддаг: устгах хоцрогдол гүйцэхээс өмнө бүртгэлийн ул мөрийг хамгийн их байлгаад дараа нь үргэлжлүүлнэ. Бид ажиглаагүй @jaggle бичиж байх үед шинэ хүрээний дор дахин нийтэлж байгаа боловч бид төстэй хүрээнүүдийг хүлээж байна (@jaggie, @jouggle-, @joggle) Хэрэв оператор идэвхтэй хэвээр байвал ирэх өдрүүдэд гарч ирнэ.

Нөлөөлөл, чиг хандлага ба хамгаалагчид юу хийх ёстой вэ

 Үр нөлөө

Одоогийн өгөгдлийн сангаас бодит мөнгөний нөлөөллийг тоон үзүүлэлтээр илэрхийлэх боломжгүй. Клиппер телеметрийн мэдээлэл бичдэггүй бөгөөд шинжилгээний төгсгөлд түрийвчнүүд орлуулсан шилжүүлэг хүлээн авч байгааг хараахан ажиглаагүй байна (жагсаалтад орсон сүлжээнүүдийн дараагийн хяналт манай жагсаалтад байгаа). Хууль ёсны npm:@juggle/resize-observer долоо хоног тутмын татан авалтын дундаж нь долоон оронтой тоонд хүрдэг бөгөөд энэ нь өндөр хандалттай алдаатай зорилтот зүйл бөгөөд хортой багц нь илчлэгдэх үед 24 цагаас бага хугацаанд идэвхтэй байсан нь өртсөн хүн амын тоог хязгаарладаг боловч тэглэдэггүй.

Хянах ёстой дэлбэрэлтийн радиус нь шууд татаж авах биш юм @jaggle/resizeobserves — эдгээр нь жижиг байх магадлалтай. Энэ нь **шилжилтийн суулгалтууд**: хөгжүүлэгч багцыг sandbox төсөлд нэмж, ажиллуулж байна npm суулгах, тэгээд суулгах дэгээ хэзээ ч ажиллаж байгаагүйг мартаж байна. Postinstall-г боловсруулсан машин бүр одоо төсөл диск дээр байгаа эсэхээс үл хамааран хэрэглэгч бүрийн clipboard хулгайлагчтай болсон. Багцын санг устгах зангилаа_ модуль тууштай байдлыг **арилгадаггүй**.

Шинээр гарч ирж буй хэв маяг

Энэ кампанит ажил хоёр чиг хандлагыг харуулж байна.

npm нь Python-payload хүргэлтийн боодол болгон ашигладаг. npm tarball нь 4 мөртэй суулгагч юм; жинхэнэ хулгайлагч нь Python бөгөөд систем даяар суулгасан PIP багцалсан сангаас. Энэ нь шинэ зүйл биш - бид npm багцууд Python-г унагаж байгааг өмнө нь харсан - гэхдээ энэ нь крипто-клипперийн кампанит ажлуудад хэмжигдэхүйц түгээмэл хэлбэр болж байна. Операторын хувьд хоёр давуу талтай: Python clipboard сангууд (пиперклип тэдгээрийн дундаас эхнийх нь) нь JavaScript-тэй дүйцэхүйц хувилбаруудаас илүү цэвэрхэн бөгөөд илүү олон платформтой бөгөөд ихэнх автоматжуулсан npm сканнерууд нь JavaScript файлуудыг их хэмжээгээр жинлэдэг бөгөөд Python .py хөнгөнөөр боодог. Үнэ нь суулгах ул мөр илүү чанга байдагт оршино — шинэ пип суулгах ердийн үед байдаггүй хөгжүүлэгч машин дээр нуухад хэцүү байдаг пип суулгах үед npm суулгах.

Платформд суурилсан нэрс нь цорын ганц нууцлаг зүйл юм. Сүүлийн үеийн хэд хэдэн хайчлагч болон бага ачаалалтай хулгайлагчид кодын түвшний будлианыг бүрэн орхиж, хууль ёсны харагдах тогтвортой байдлын шошготой болсон. python3-dbus-туслагч, com.apple.python.runtimeБолон PyRuntimeBroker сурах бичгийн жишээнүүд юм - хамгаалагчийн нүд дөчин хэрэглэгчийн үйлчилгээний жагсаалтаас алгасах нэрс. Энэ бол хямд, удаан эдэлгээтэй нууцлалын хэлбэр юм: устгах ажиллагаа нь багц бүрт хийгддэг боловч тогтвортой байдлын файлууд устгах ажиллагаанаас үлддэг бөгөөд бодит харагдах платформ бүрэлдэхүүн хэсгийн нэрээр нэрлэгдсэн үйлчилгээ нь тодорхой аудитаас өөр юугаар ч цэвэрлэгдэхгүй.

Хамгаалагчид юу хийх ёстой вэ

  • Аудит ~/.config/systemd/user/, ~/Library/LaunchAgents/, болон Get-ScheduledTask файлууд Гаралт IOC-д жагсаасан оруулгуудын хөгжүүлэгч машинууд дээр. npm багцыг устгаснаар эдгээрийг байрандаа үлдээнэ; тэдгээрийг гараар арилгах шаардлагатай.
  • Жагсаалтад орсон түрийвчний хаягууд руу шилжүүлгийг хаах хаягийн зөвшөөрлийн жагсаалт боломжтой корпорацийн сангийн болон DeFi түрийвчний хил хязгаар дээр.
  • ~/.config/clipboard-guardian/config.json файлыг хайж олоорой (болон платформтой дүйцэхүйц) хөгжүүлэгч-машины бүхэл бүтэн багцад. Файлын байгаа байдал нь аль багцын хувилбараас үл хамааран өндөр найдвартай халдвар юм.
  • clipboard_guardian/guardian.py гэсэн хайлтын талбарт node_modules/ файлыг хайх устгахаас өмнөх build-cache snapshots дотор байж магадгүй. Файлын md5 нь бүх хянасан хувилбаруудад тогтвортой байна.
  • Lockfile-pin @juggle/resize-observer (хууль ёсны багц) тиймээс ирээдүйн суулгалтууд нь нэг тэмдэгтийн буруу бичвэрийн улмаас өөр юуг ч шийдэж чадахгүй, ялангуяа түгжээтэй файлгүй ажлын урсгалуудад гэх мэт npx дээр ажиллана.
  • Пип суулгалтыг дуудаж буй аливаа npm суулгалтын дараах үйлдлийг эмчлэх өндөр ноцтой байдлаар барилгад-pipeline бодлого. npm багц суулгах үед pip шаардлагатай байх хууль ёсны шалтгаан байхгүй — Python tooling нь Python tooling-ийг түгээдэг.
  • pyperclip импортлодог python3-dbus-helper нэртэй процессуудын хувьд process_iter()-харьцуулж болох хяналтын өгөгдлийг хайх — далдлах үл нийцэл (D-Bus туслагч нь clipboard номын санг барьж байдаг) нь бидний хамгийн цэвэр зан үйлийн индикатор юм.
  • Халдвар авсан машинуудаас буулгасан түрийвчний хаягуудыг эргүүлэх. Клипборд хулгайлагч нь түрийвчний хэрэглэгчийн интерфэйс болон буулгах байны хоорондох замыг эвдэж, халдвар авсан үед хуулсан хаягуудыг чимээгүй өөрчилж болно. Халдварын цонхонд илгээсэн аливаа зүйлийг буруу чиглүүлэгдсэн байж болзошгүй гэж үзэх хэрэгтэй.

Гол санаа: тууштай байдал нь устгалаас илүү удаан үргэлжилдэг. Бүртгэл эцэстээ устгагдах болно @jaggle/resizeobserves бүх есөн хувилбарт; systemd нэгж, LaunchAgent болон Хуваарьт Даалгавар нь өөрсдийгөө устгахгүй.

Ашигласан материал

sca-tools-програм хангамжийн-бүтцийн-шинжилгээний-хэрэгсэл
Програм хангамжийн эрсдэлээ эрэмбэлэх, засах, аюулгүй болгох
Үнэгүй бүртгэлээ аваарай.
Зээлийн картын шаардлагагүй.

Програм хангамжийн хөгжүүлэлт болон хүргэлтээ аюулгүй байлгаарай

Xygeni Product Suite-тэй хамт