TL; DR
21 Mayıs 2026 tarihinde, npm yayıncısı jaggle dokuz versiyonu yayınlandı (1.0.0 içinden 1.0.8) of @jaggle/resizeobserves Yaklaşık iki saatlik bir zaman dilimi içinde.
Bu paket, meşru olanın yazım hatasıyla ele geçirilmiş bir versiyonudur. @juggle/resize-observer Polyfill, haftalık milyonlarca indirmeye sahip, yaygın olarak kullanılan bir pakettir, ancak gerçek bir ResizeObserver uygulaması içermez.
Bunun yerine, paketin postinstall kancası Paketlenmiş bir Python zararlı yazılımını kurar, kalıcılığı platforma özgü görünen bir çalışma zamanı aracı olarak kaydeder ve kripto para işlemlerini hedefleyen platformlar arası bir pano korsanı dağıtır.
Linux ısrar şu şekilde ortaya çıkar: python3-dbus-helper, macOS as com.apple.python.runtime, ve Windows as PyRuntimeBroker.
Bu zararlı yazılım, cüzdan adresleri için panoyu sürekli olarak izler. 40'tan fazla blok zinciri ve kopyalanan adresleri sessizce saldırganın kontrolündeki cüzdanlarla değiştirir.
Bu kötü amaçlı yazılım, dışarıya yönelik herhangi bir C2 altyapısı olmadan tamamen yerel olarak çalışır; bu da pano değiştirme işleminin kendisini veri sızdırma mekanizması haline getirir.
Birincil gösterge, paketin adının kendisidir: @jaggle/resizeobserves — “jaggle” kelimesindeki sesli harfin düştüğüne ve “resizeobserves” kelimesindeki “s” harfinin eklendiğine dikkat edin.
Ciddiyet düzeyi: yüksek.
Saldırı: Nasıl Çalışıyor?
npm:@jaggle/resizeobserves İlk bakışta kötü amaçlı yazılım gibi görünmüyor. npm görünümü. Kendi README.md bu, README dosyasının birebir aynısıdır. npm:@juggle/resize-observer — aynı kod örnekleri, aynı kullanım talimatları, aynı import { ResizeObserver } from '@juggle/resize-observer' Metnin tamamında alıntılar mevcut. İntihal o kadar eksiksiz ki, belgelere şöyle bir göz atan herkes, meşru paketin belgelerini okuduğunu sanacaktır.
MKS paket.jsonÖte yandan, seyrektir: yok Depo alan, tek çöp kutusu giriş işaret ediyor bin/clipboard-guardian.jsVe kurulum sonrası çalıştıran komut dosyası node npm-install.jsREADME dosyasındaki "Temel kullanım" örnekleri, tarball'da hiçbir yerde bulunmayan bir JavaScript uygulamasına atıfta bulunuyor. Paketteki tek JavaScript, kurulum betiğidir.
Aşama 1 — npm postinstall, Python yükünü başlatır.
npm-install.js Platforma duyarlıdır. Birini bulur. bip sabit bir arama yolu boyunca yürütülebilir (/usr/bin/pip3, /usr/yerel/bin/pip, geri düşüyor python3 -m pip), tarball dizininden paketlenmiş Python paketini kurar ve - Linux'ta - içine indirir. xclip or xsell üzerinden apt-get, pacmanya da DNF Eğer ikisi de zaten mevcut değilse:
Kullanılması –sistem paketlerini boz Bu kasıtlı bir durum: Modern Linux dağıtımları, Python'ı PEP 668'in harici olarak yönetilen ortam işaretçisi etkinleştirilmiş olarak sunar; bu da varsayılan olarak site genelinde pip kurulumlarını engeller. Kurulum betiği, kurulumu zorla gerçekleştirir.
Komut dosyası sudo'yu da destekler. Çalışan kullanıcı kimliği şu işlemin sonucu olduğunda: sudo npm installSenaryoda şu ifadeler yer alıyor: SUDO_USER ve para harcıyor şifre almak bulmak için gerçek Kullanıcının ana dizinine yazar, ardından kalıcı dosyalarını oraya yazar, kullanıcının ana dizinine değil. /kökVeri kalıcılığı sistem genelinde değil, kullanıcı bazındadır.
Aşama 2 — Çalışma zamanı aracı adları altında işletim sistemleri arası kalıcılık
Python paketi yüklendikten sonra, komut dosyası her işletim sisteminde farklı bir ad altında otomatik başlatma girişi kaydeder:
- Linux — systemd kullanıcı birimi ~/.config/systemd/user/python3-dbus-helper.service. Ünitenin Açıklama is Python D-Bus Çalışma Zamanı YardımcısıKomut dosyası ayrıca bunu şu yolla etkinleştirmeye çalışır: systemctl –user enable, manuel bir sembolik bağlantıya geri dönülüyor varsayılan.hedef.istekler/ systemctl başarısız olduğunda. Eğer sudo altında çalıştırılıyorsa, betik şuna geçer: sudo -u systemctl –userIle XDG_RUNTIME_DIR Kullanıcı veri yolu çağrısının çalışması için ayarları yapın.
- macOS — LaunchAgent plist dosyası ~/Library/LaunchAgents/com.apple.python.runtime.plist 'da RunAtLoad=true hem de KeepAlive=truedaha sonra şu yolla yüklendi: launchctl load.
- Windows — PowerShell üzerinden kaydedilen, AtLogOn olayında tetiklenen, sıfır zaman sınırlamalı (yani zaman aşımı yok) PyRuntimeBroker adlı bir Zamanlanmış Görev.
Üç isim de ilk bakışta güvenilir görünüyor. python3-dbus-yardımcısı Linux masaüstlerinde geçerli Python-D-Bus entegrasyonunun adlandırma kurallarına uyar. com.apple.python.runtime Apple'ın kendi hizmetleri için kullandığı ters DNS etiketleme yöntemini taklit ediyor. PyRuntimeBroker Windows'un yankılarını yansıtıyor RuntimeBroker.exe — UWP uygulamaları için izin isteklerine aracılık eden gerçek, imzalı bir Microsoft hizmeti. Bunların hiçbiri bu bağlamda gerçek Apple/Microsoft/Python hizmetleri değil, ancak bir savunmacının hızlı bir görsel tarama yapması sonucu ortaya çıkıyor. systemctl –user list-units or Get-zamanlanan görev Gözünü kırpması pek olası değil.
3. Aşama — Not defterini ele geçiren kişi
Python yükü, şu adrese yüklendi: clipboard_guardian/guardian.pyBu kod, sistem panosunu her 400 milisaniyede bir yoklayarak sonsuz bir döngü çalıştırır. Her döngüde, panonun mevcut içeriğini şu şekilde çeker: pyperclip.paste() ve bunları 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 ve varsayılan yapılandırmada boş bırakılmış ancak taslak halinde bulunan diğer birkaç kripto para birimi (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin) için cüzdan adresi biçimlerini kapsayan kırktan fazla önceden derlenmiş düzenli ifade listesine karşı çalıştırır.
Bir eşleşme gerçekleştiğinde, komut dosyası o zincir için saldırganın adresini okur. ~/.config/clipboard-guardian/config.json (veya platform eşdeğerleri) ve panoyu değiştirilen metinle üzerine yazar:
Ağ sinyali yok. Clipper, ana sunucuya sinyal göndermiyor, virüslü sunucuları kaydetmiyor, hiçbir şey sızdırmıyor. Sızdırma işlemi, değiştirme işleminin kendisinde gerçekleşiyor: Kullanıcı, cüzdan arayüzünden bir alıcı adresini kopyalayıp gönderme iletişim kutusuna yapıştırdığında, yapıştırılan adres operatöre ait oluyor. Fonlar, kullanıcı için şeffaf bir şekilde, bant içinde kayboluyor.
burada yeni ne var
Genel kripto-kırpma şablonuna kıyasla birkaç ayrıntı öne çıkıyor:
1. npm → Python geçişi. npm'de gördüğümüz kripto para birimi kırpma araçlarının çoğu, genellikle gizlenmiş saf JavaScript kodlarıdır. _0x dizi döndürme veya eval(atob(…)) Bu örnek, npm tarball'ını Python paketi için yalnızca bir dağıtım sarmalayıcısı olarak kullanır — temiz Python — ve bağımlılık kurulumunu pip'e bırakır (kalem klibi, Psutil, isteğe bağlı setproctitle) paketlenmiş halde ilan edildi pyproject.tomlOrtada aşılması gereken bir JavaScript gizleme yöntemi yok. Kırpma aracı doğrudan, okunabilir Python kodundan oluşuyor.
2. Tri-OS kalıcılık etiketleri, inandırıcı olmaları açısından seçilmiştir. Birçok platformlar arası yükleyici, kalıcılığı genel adlar altında kaydeder (güncelleyici.hizmet, yardımcı.plistBu örnek, her işletim sisteminde platforma özgü çalışma zamanı aracılarına benzeyen etiketler seçme zahmetine giriyor. İsimlendirme, gizlilik için yapılan tek girişimdir; rootkit yok, kullanıcı alanı gizleme yok, yol gizleme yok. Bahis, savunmacıların nadiren denetim yapacağı yönündedir. ~/.config/systemd/kullanıcı/ ve adı verilen bir hizmet python3-dbus-yardımcısı Sıradan bir değerlendirmede göze çarpmayacaktır.
3. Süreç başlığı kılıfı gerçek, ancak analiz karşıtlığı uykuda. Python veri yükü şunu tanımlar: _gizleme_süreci() İşlem başlığını belirleyen fonksiyon setproctitle (Linux/macOS) veya SetConsoleTitleW (Windows) — ve ana() Öyle diyor. Yani ps yardımcı gösterecektir python3-dbus-yardımcısı yerine python3 …/guardian.pyAncak aynı modül bir şeyi tanımlar. monitör çalışıyor mu? Bilinen süreç izleme araçlarını listeleyen fonksiyon (htop, btop(Görev Yöneticisi, Aktivite İzleyici, Process Hacker, Kaynak İzleyici, GNOME / KDE / Xfce / MATE sistem izleyicileri vb.) — ve ana() Hiçbir zaman çağrılmaz. Yerine koyma döngüsü, kullanıcının bir işlem izleyici açık olup olmamasına bakılmaksızın koşulsuz olarak çalışır. Bu işlev, gönderilen sürümde ölü koddur. Büyük olasılıkla önceki bir yinelemeden kalan bir kalıntı veya henüz bağlanmamış bir özellik için bir iskelettir. Her iki durumda da, yayınlanan yükün analiz karşıtı yüzeyi, aktif izleyiciyi atlatmak değil, bir işlem başlığı yeniden adlandırmasıdır.
4. Paket halindeki yapılandırma birleştirme davranışı. npm-install.js Varsayılan cüzdan listesini şuraya yazar: ~/.config/clipboard-guardian/config.json Ve eğer bir yapılandırma dosyası zaten mevcutsa, mevcut değeri boş olan tüm anahtarları birleştirir. Bu, daha önce virüs bulaşmış ve yapılandırmayı kısmen temizlemiş bir kullanıcının (örneğin, boşaltarak) Ethereum Bu değer, sonraki her kötü amaçlı paket kurulumunda yeniden doldurulacaktır. Kalıcılık dosyasında hiçbir kod yolunda temizleme işlemi yapılmaz.
| Tarih / Saat (UTC) | Etkinlikler |
|---|---|
2026-05-21 18:50:32 | @jaggle/resizeobserves@1.0.0 yayınlanan. |
2026-05-21 19:55:55 | 1.0.1 Yayınlandı — ilk sürüm harici tarama tarafından işaretlendi. |
2026-05-21 19:58:10 | 1.0.2 yayınlanan. |
2026-05-21 20:05:03 | 1.0.3 yayınlanan. |
2026-05-21 20:09:24 | 1.0.4 yayınlanan. |
2026-05-21 20:13:48 | 1.0.5 yayınlanan. |
2026-05-21 20:41:52 | 1.0.6 yayınlanan. |
2026-05-21 20:43:56 | 1.0.7 yayınlandı — ekler try/catch wallet-config yazma adımını çevreleyen sarmalayıcı npm-install.js. |
2026-05-21 20:46:15 | 1.0.8 Yayınlandı — yükleyici yeniden adlandırıldı npm-install.js → npm-install.cjs (baytlarca aynı içerik). |
2026-05-22 | Kararlar ve IOC'ler yayınlandı. Sürümler, yayınlandığı sırada kayıt defterinde hala mevcuttur (devam etmektedir). |
Bir saat elli altı dakikada dokuz versiyon, yazım hatası yapan biri için bile hızlıdır. Bu örüntü, bir yayınla ve yak kampanyası — Kayıt defterini tek bir tanıtıcı altında doldurun, tespit işleminin gerçekleşmesine izin verin ve tek bir sürüm kaldırıldıktan sonra yeni bir tanıtıcıya geçin. Çalışma boyunca görünen farklar kozmetiktir: 1.0.1 sürümüne açık bir şekilde ekleme yapıldı. /usr/bin/pip3-pip arama listesine giden yollar (sudo uyumluluğu), 1.0.7 sürümü cüzdan yapılandırma yazma işlemini try/catch bloğuna sardı ve 1.0.8 sürümü yükleyiciyi yeniden adlandırdı. . Js için .cjs İçeriğini bayt bayt aynı tutarken. .cjs npm'nin, açık bir şekilde belirtilmemiş paketlerdeki belirsiz modül çözümlemesiyle ilgili uyarıları içeren parçaları yeniden adlandırma “Tip” Bu alan, kurulum sırasında dikkat çekebilecek gürültüyü bastırma girişimi olabilir. Aslında veri çalan tek kısım olan Python yükü, dokuz sürümün tamamında değişmeden kalmıştır.
Uzlaşma Göstergeleri
Paketler
| Ekosistem | paket | sürümler | Durum |
|---|---|---|---|
| npm | @jaggle/resizeobserves | 1.0.0 içinden 1.0.8 | Yayın anında canlı yayında; kaldırma talebi gönderildi. |
Dosyalar ve Karmalar
| Yol | notlar |
|---|---|
clipboard_guardian/guardian.py(md5 f7935c2c82bc881288611ab6cd634f17) | Yayınlanan dokuz versiyonun tamamında aynıdır (1.0.0 içinden 1.0.8). Kırpma makinesinin yükü. |
npm-install.js (1.0.0 – 1.0.7)npm-install.cjs (1.0.8) | Kalıcı kurulum programı; uçtan uca aynı davranış. 1.0.7's .js hem de 1.0.8's .cjs bayt bakımından özdeştirler. |
~/.config/clipboard-guardian/config.json | Linux kalıcı depolama yapılandırması ve cüzdan paketi. |
~/Library/Application Support/clipboard-guardian/config.json | macOS kalıcılık yapılandırması ve cüzdan paketi. |
%APPDATA%\clipboard-guardian\config.json | Windows kalıcılık yapılandırması ve cüzdan paketi. |
~/.config/systemd/user/python3-dbus-helper.service | Linux'ta otomatik başlatmanın kalıcılığı. |
~/Library/LaunchAgents/com.apple.python.runtime.plist | macOS LaunchAgent kalıcılığı. |
~/Library/Logs/com.apple.python.runtime.log | Aracının macOS stdout/stderr günlük kaydı. |
Scheduled Task PyRuntimeBroker | Windows otomatik başlatma görevi (AtLogOn(Zaman aşımı yok). |
Davranış Göstergeleri
| işaret | Açıklama |
|---|---|
pip install --break-system-packages npm postinstall'den | PEP 668 korumalarını atlayarak site genelinde Python kurulumunu zorunlu kılıyor. |
apt-get install -y xclip (veya pacman/dnf) | Paket kurulumu sırasında Linux'a pano yardımcı programlarını yükler. |
python3-dbus-helper.service systemd kullanıcı birimi | Kalıcılık, makul görünen bir çalışma zamanı yardımcı programı adı altında kaydedildi. |
com.apple.python.runtime Başlatma Aracısı | Geçerli Apple sistem yollarının dışında kalan kalıcılık etiketi. |
PyRuntimeBroker Planli gorev | Geçerli bir yükleyici kaynağı olmayan sahte Windows çalışma zamanı aracı kalıcılığı. |
Python işlemi başlığı python3-dbus-helper ithal pyperclip hem de psutil | Görüntülenen işlem adı ile içe aktarılan kütüphaneler arasında davranışsal uyumsuzluk. |
| Cüzdan adresi kopyalandıktan yaklaşık 0.4 saniye sonra panoda değişiklikler meydana geliyor. | Kripto para adres değiştirme işleminin karakteristik davranışı. |
Saldırgan cüzdan paketi (savunmacı avlama listesi)
Cüzdan listesi, yazılımın içine sabit olarak kodlanmış şekilde gönderilir. npm-install.js hem de clipboard_guardian/guardian.pySavunmacılar bu listeyi hem engelleme listesi (kurumsal cüzdanlardan bu adreslere yapılan herhangi bir transferi şüpheli olarak değerlendirme) hem de avlama anahtarı (kimliği doğrulanmamış bir yapılandırma dosyasında, derleme çıktısında veya geliştirici makinesinde bu dizelerden herhangi birinin varlığını enfeksiyon göstergesi olarak değerlendirme) olarak kullanabilirler.
Saldırgan Cüzdan Paketi
| zincir | Adres |
|---|---|
| Ethereum / BSC | 0x450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| Ronin (EVM) | ronin:450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| Bitcoin | bc1qs2mpls4p0f7fng073gy2rcdgjpf7la4eugpt6y |
| Bitcoin Cash | bitcoincash:qqmvyxxklzp7l3eslxavhc8phl6hprdf25lwc29nlt |
| Litecoin | ltc1qnefc8x59a9cwtqnflt8hmqvezqw4hc7lt3fkqe |
| Dogecoin | DNEJmYRZtzyK44tZea4S7wV3otTyRk48Fy |
| Dash | XtJ7E6mnhPK93Vib29PGQrTmQjhTTqFwbS |
| Zcash | t1d4hcEnBjdh9X6Wb6R2dxqjnxddJ6ocP8M |
| DigiByte | DPmH2dhiGK3hk3A69tZUMz6tHzGFHBzSrH |
| Monero | 42zhAidVhP7QETk83JAspS59ASALSHFio44vmu6MdDCz15cSqtqsG4QVyzY8vTrjGrTEA6zMbWW6Yft1Ynz1xLfCN5FVbXf |
| Solana | DWBAmQLi9gP6mk7UfJfQGYTV1UPK32WekLTqg83q1mc5 |
| TRON | TVgEgMemmJABYYnbNr1Wi8bSgADEkdEBt2 |
| TON | UQDTSkvwmptU9eG988KgxS3WjnYAZlXgfpJxnz4mhWZAvULr |
| Ripple | r9tj3cMCiqRijNYqNVYNuwKykkQfS8FE4H |
| Polkadot | 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG |
| NEAR | 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364 |
| kozmos | cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e |
| ozmos | osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t |
| Celestia | celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5 |
| Injektif | inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh |
| Kava | kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux |
| Uyum | one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a |
| yeryüzü | terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x |
| Algorand | XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI |
| Stellar | GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE |
| Cardano | addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f |
| Çoklu VerilerX | erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0 |
| Aptos | 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e |
| Sui | 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78 |
| Nano | nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn |
| Filecoin | f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui |
| Tezos | tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk |
| Bundan dolayı | 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA |
| Hedera | 0.0.10488092 |
Varsayılan yapılandırmada regex kapsamı olan ancak cüzdan yuvaları boş olan zincirler (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB) bu derlemede aktif olarak ikame edilmez ancak tespit edilir. Bunları ikame kapsamı yerine izleme kapsamı olarak değerlendirin.
Atıf ve Motivasyon
Kampanya, sınırlı bir ilişkilendirme yüzeyi sunuyor. Operatörün kimliğini doğrulayamadık. Kaydedebildiklerimiz şunlar:
- Yayıncı meta verileri. npm hesabı tırtıklı e-posta adresini şu şekilde listeliyor: olgascarlet@deltajohnsons.com. Alan adı deltajohnsons.com Doğrulayabileceğimiz bir kurumsal kimliğe işaret etmiyor. npm hesabında e-posta doğrulaması veya başka bir bilgi görünmüyor. SCM Doğrulama. GitHub'da ilgili herhangi bir herkese açık varlık bulunmamaktadır.
- Depo alanı. MKS paket.json taşımaz Depo alan. Meşru olan npm:@juggle/resize-observer Binlerce yıldız ve aktif sorunu olan gerçek bir GitHub deposuna işaret eder. Depo bağlantısının olmaması, npm arayüzünde en hızlı görsel ipucudur.
- README dosyasında intihal tespit edildi. Paketin README dosyası meşru dosyadır. @juggle/resize-observer README dosyasını bayt bayt, aşağıdakiler dahil: ithalat referans veren örnekler @juggle/resize-observer (Yayın paketi değil, kendisi). Operatör, içe aktarmaları yeniden yazma zahmetine bile girmedi; bu da README dosyasının uyarlanmak yerine olduğu gibi alındığının yaygın bir işaretidir.
- Yön değiştirebileceğimiz bir altyapı yok. C2 uç noktası yok, DNS sorgusu yok, IP adresi yok. Kötü amaçlı davranış, yerel clipper ve sabit kodlu cüzdan paketine tamamen kapsüllenmiştir. Bu, alan adı veya ASN tabanlı yönlendirmeyi imkansız hale getirir. Kampanyalar arası yönlendirme yapan savunmacılar, cüzdanları dosyalarında bulunan önceki clipper'larla hash eşleştirmesi yapmalıdır; paketler arasında bir cüzdanın yeniden kullanılması, kampanyalar arası en kolay bağlantı yöntemidir.
- İsim seçimi. @jaggle/resizeobserves bir karakter eksik @juggle ve bilinenlerden bir ton farklı yeniden boyutlandırma gözlemcisiToplam düzenleme mesafesi iki gliftir. Bu, genel bir çömelme değil, kasıtlı bir görsel çarpışmadır.
Motivasyon, yük davranışına dayanmaktadır: fırsatçı pano değiştirme yoluyla saf para kazanma. Kimlik bilgisi toplama, sunucu parmak izi alma, ortam değişkeni okuma yok. Operatör kurbanın kim olduğuyla ilgilenmez; kurbanın bir sonraki transferinin listelenen adreslerden birine işaret etmesiyle ilgilenir. Kırk zincir kapsamı, piyango modelinin işleyişidir: geniş bir alana yayılmak, N kurulum başına tek bir yüksek değerli kopyanın düşmesini ummak.
Operatör, kaldırma işlemiyle ilgilenmiyor gibi görünüyor. Aynı kapsamda iki saat içinde dokuz sürüm yayınlamak, yayınla ve yak mantığına benziyor: Kaldırma gecikmesi yetişmeden önce kayıt defterindeki ayak izini en üst düzeye çıkar, sonra devam et. Bunu gözlemlemedik. @jaggle Yazım sırasında yeni bir kapsam altında yeniden yayınlanıyor, ancak benzer kapsamlar bekliyoruz (@jaggie, @juggle-, @joggleOperatör hala aktifse, önümüzdeki günlerde (görünebilir)
Etki, Trendler ve Savunmacıların Yapması Gerekenler
darbe
Mevcut veri setinden gerçek para cinsinden etkiyi ölçmek mümkün değil. Clipper telemetri yazmıyor ve analiz kesme tarihi itibariyle cüzdanların ikame transferleri aldığı henüz gözlemlenmedi (listelenen zincirlerin takip taraması planlarımız arasında). Meşru npm:@juggle/resize-observer Haftalık indirme sayıları yedi haneli rakamlara ulaşan (yüksek trafikli bir yazım hatasıyla ele geçirilmiş alan adı hedefi) bu kötü amaçlı paket, ifşa edildiği sırada 24 saatten daha kısa bir süredir yayındaydı; bu da maruz kalan nüfusu sınırlıyor ancak sıfırlamıyor.
Takip edilmesi gereken patlama yarıçapı, doğrudan indirmeler değildir. @jaggle/resizeobserves — bunlar muhtemelen küçük boyutlu. **Geçişli kurulumlar** söz konusu: bir geliştirici paketi bir test projesine ekliyor, çalıştırıyor. npm kurulumuve ardından kurulum kancasının hiç çalışmadığını unutmak. Kurulum sonrası işlemi gerçekleştiren her makinede, proje diskte hala mevcut olsun veya olmasın, otomatik başlatmada kullanıcı başına bir pano ele geçirme yazılımı bulunur. Paket dizinini kaldırmak düğüm_modülleri Kalıcılığı **kaldırmaz**.
Ortaya çıkan desenler
Bu kampanya iki eğilimi örneklendiriyor.
npm, Python veri paketinin iletimi için bir sarmalayıcı (wrapper) görevi görüyor. npm tarball'ı 4 satırlık bir yükleyicidir; asıl kaynak hırsızı ise sistem genelinde kurulan Python'dur. bip Paketlenmiş dizinden. Bu yeni bir şey değil — daha önce npm paketlerinin Python'ı bıraktığını gördük — ancak kripto-clipper kampanyalarında ölçülebilir derecede daha yaygın bir şekil haline geliyor. Operatör için avantajı iki yönlüdür: Python pano kütüphaneleri (kalem klibi (Bunların başında gelenler) JavaScript karşılıklarından daha temiz ve platformlar arası uyumludur ve Çoğu otomatik npm tarayıcısı JavaScript dosyalarına ve Python dosyalarına büyük ağırlık verir. .py Hafifçe demetler halinde. Dezavantajı ise kurulumun yarattığı gürültü seviyesinin çok daha yüksek olmasıdır. pip kurulumu Normalde gizli kalmayan bir geliştirici bilgisayarında bunu gizlemek zordur. pip kurulumu sırasında npm kurulumu.
Platforma özgü isimler, tek gizlilik yöntemi olarak kullanılıyor. Son zamanlarda ortaya çıkan birçok dosya hırsızı ve küçük veri hırsızı, kod düzeyindeki gizleme yöntemini tamamen terk ederek, meşru görünümlü kalıcılık etiketlerini kullanmaya başladı. python3-dbus-yardımcısı, com.apple.python.runtime, ve PyRuntimeBroker Bunlar ders kitaplarında yer alacak örneklerdir; bir savunmacının gözünün kırk kullanıcı hizmeti listesinde atlayacağı isimlerdir. Bu, ucuz ve dayanıklı bir gizlilik biçimidir: Kaldırma işlemi paket başına yapılır, ancak kalıcı dosyalar kaldırma işleminden sonra da kalır ve gerçek bir platform bileşeninin adını taşıyan bir hizmet, açık bir denetim dışında hiçbir şey tarafından temizlenmez.
Savunmacıların yapması gerekenler
- ~/.config/systemd/user/, ~/Library/LaunchAgents/ ve Get-ScheduledTask dosyalarını denetleyin. çıktı Geliştirici makinelerinde IOC'lerde listelenen girdiler için geçerlidir. npm paketini kaldırmak bunları yerinde bırakır; bunların elle kaldırılması gerekir.
- Listelenen cüzdan adreslerine blok transferleri. Adres izin listesinin mevcut olduğu kurumsal hazine ve DeFi cüzdanı sınırlarında.
- ~/.config/clipboard-guardian/config.json dosyasını arayın. (ve platform eşdeğerleri) geliştirici makine filosu genelinde. Dosyanın varlığı, hangi paket sürümünün onu getirdiğine bakılmaksızın, yüksek güvenilirlikte bir enfeksiyon anlamına gelir.
- node_modules dizininde clipboard_guardian/guardian.py dosyasını arayın. Kaldırma işleminden önce oluşturulmuş olabilecek derleme önbelleği anlık görüntülerinde. Dosyanın md5 değeri, incelenen tüm sürümlerde sabittir.
- Kilit dosyası pimi @juggle/resize-observer (meşru paket) böylece gelecekteki kurulumlar, özellikle kilit dosyası olmayan iş akışlarında, tek karakterlik bir yazım hatası nedeniyle başka bir şeye çözümlenemez. NPX.
- npm postinstall komutuyla pip install çalıştıran her türlü işlemi ele alın. yüksek şiddette yapım aşamasında-pipeline Politika gereği, bir npm paketinin kurulum sırasında pip'e ihtiyaç duymasının meşru bir nedeni yoktur; Python araçları, Python araçlarını dağıtır.
- pyperclip'i içe aktaran python3-dbus-helper adlı işlemler için process_iter() ile karşılaştırılabilir izleme verilerini arayın. — kılık değiştirme uyuşmazlığı (D-Bus yardımcısının bir pano kütüphanesi tutması), sahip olduğumuz en net davranışsal göstergedir.
- Virüs bulaşmış makinelerden kopyalanan cüzdan adreslerini değiştirin. Bir pano korsanı, cüzdan arayüzü ile yapıştırma hedefi arasındaki yolu tehlikeye atar; enfekte olmuşken kopyalanan adresler sessizce değiştirilebilir. Enfeksiyon penceresi sırasında gönderilen her şey potansiyel olarak yanlış yönlendirilmiş olarak değerlendirilmelidir.
Özetle: Kalıcılık, kaldırılma girişiminden daha uzun süre devam eder. Kayıt defteri eninde sonunda onu silecektir. @jaggle/resizeobserves Dokuz sürümün tamamında; systemd birimi, LaunchAgent ve Zamanlanmış Görev kendiliğinden kaldırılmayacaktır.
Referanslar
- @juggle/resize-observer npm'de — Bu yazım hatalı taklitçinin kullandığı meşru paket; README dosyasının birebir kopyalanması için temel teşkil etmesi açısından faydalı.
- @jaggle/resizeobserves kayıt defteri meta verileri — Dokuz kötü amaçlı sürüm için zaman damgalarını yayınlayın; bu, adli zaman çizelgesi oluşturma açısından faydalıdır.





