Saldırganlar, Ethersphere projesinin kendi sürüm otomasyonunu kullanarak Swarm merkeziyetsiz depolama ağı için geliştirdiği iki aracın kötü amaçlı sürümlerini yayımladı: bee-js 13.3.0 ve Swarm Desktop 0.56.2.
Her iki sürüm de Swarm Desktop'ın düğümü için sakladığı cüzdan anahtarını ve onu açan saklanan şifreyi çalmak üzere tasarlanmış kodu indirip çalıştırıyor. Kod ayrıca Windows, macOS ve Linux makinelerine arka kapı kurmak için de tasarlanmış.
bee-js paketi, Swarm Desktop ve swarm-cli komut satırı aracının arkasındaki JavaScript kütüphanesidir. Swarm Desktop, bir Swarm düğümünü kullanıcının kendi bilgisayarında çalıştırır ve düğümün özel anahtarlarını orada saklar.
Her iki kötü amaçlı sürüm de kaldırıldı ve projenin bakımcıları bugün temiz bir Swarm Desktop güncellemesi yayımladı. Bu adımlardan hiçbiri zaten kurulmuş bir arka kapıyı kaldırmaz, zaten gönderilmiş bir anahtarı da korumaz. Yazının yazıldığı sırada fon çalındığına dair bildirim yapılmamıştı.
Swarm Desktop 0.56.2 bugün yaklaşık 00:36 UTC'de GitHub'da göründü ve yaklaşık 8,5 saat sonra geri çekildi. Tedarik zinciri güvenlik firması Socket'in olay analizi, uygulamanın yerleşik güncelleyicisinin Windows x64 bilgisayarlar ve Apple Silicon Mac'lere yaklaşık 10 dakika içinde sunabildiğini gösteriyor. Intel Mac'lere hiç sunulmadı ve Linux kurulumları otomatik olarak güncellenmiyor.
bee-js sürümü 13.3.0, bugün 00:09'dan 01:25 UTC'ye kadar yaklaşık 75 dakika boyunca npm'de en yeni sürümdü. Kodu postinstall betiği olarak çalışır; npm, kurulum betikleri devre dışı bırakılmadıkça kurulum sırasında bunu otomatik olarak çalıştırır. Bir projenin kütüphaneyi içe aktarması gerekmiyordu, kod yine de çalışırdı.
Projenin kendi swarm-cli ve bee-dashboard paketleri ile Swarm Desktop kaynak kodu, 13.3.0'ı içeren sürüm aralıklarını kabul ediyordu. Bu pencerede yapılan yeni bir kurulum kötü amaçlı sürümü çekebilirdi.
Hiçbir rapor enfekte makine sayısı vermedi. Firmanın kaba tahminine göre bee-js 13.3.0 yaklaşık 10 kez indirildi; bu sayı güvenlik tarayıcılarını ve aynaları da içeriyor. Swarm Desktop 0.56.2'nin indirme sayısı 08:27 UTC'ye kadar araştırmacılar dahil 65'e ulaştı.
Ethersphere bakımcıları 0.56.2'yi geri çekti ve bugün temiz sürüm olan 0.56.3 ile değiştirdi. Yeni sürümü oluşturan değişiklikte biri, 0.56.2'nin "çalınan CI kimlik bilgileri kullanılarak bir saldırgan tarafından yayımlandığı ve geri çekildiği" yazdı.
0.56.3, bakımcının olay notuna göre, önceki sürüm 0.56.1 ile aynı kod olup yeni düzenlenen Developer ID sertifikası ile imzalanmış. Not, uygulamanın otomatik güncelleyicisinin 0.56.2 kurulumlarını buna taşıyacağını söylüyor, ancak Linux paketleri elle değiştirilmeli. The Hacker News tarafından yapılan iki sürüm kaynak kodu karşılaştırması, sürüm numarası ve sürüm notlarının ötesinde bir değişiklik bulmadı.
The Hacker News bugün npm'i kontrol ettiğinde en yeni bee-js sürümü yine 13.2.0'ydı ve 13.3.0 artık kayıttan indirilemiyordu.
Ne Yapmalı
bee-js 13.3.0 için GitHub uyarısı şöyle diyor: "Bu paketi yüklemiş veya çalıştıran herhangi bir bilgisayar tamamen tehlikeye girmiş olarak kabul edilmelidir." Yazılım tedarik zinciri güvenlik şirketi SafeDep, Swarm Desktop 0.56.2 kurulmuş olan herhangi bir bilgisayar için aynı tavsiyeyi sunuyor.
bee-js'i bir projede veya CI işinde kullanıyorsanız:
Lockfile'ları, paket önbelleklerini, dahili kayıtları ve CI kurulum günlüklerini @ethersphere/[email protected] için arayın; bu sürüm diğer paketler tarafından çekilmiş kopyaları da içerir.
13.2.0'a sabitleyin ve 13.3.0'ın önbelleğe alınmış kopyalarını temizleyin; bu, kurulum yaptığınız npm aynası da dahil.
13.3.0, kurulum betikleri açıkken kurulduysa, kurulum günlüğünde hata görünmese bile o makineyi veya CI çalıştırıcısını tehlikeye girmiş olarak kabul edin. Kod kendi ağ hatalarını gizler.
Temiz bir bilgisayardan, kurulum yapan kullanıcı veya CI işinin okuyabildiği her şifre, token ve anahtarı döndürün.
Swarm Desktop kullanıyorsanız:
Uygulamanın günlük dosyası bee-desktop.log içinde Bee Desktop version: 0.56.2 (production) satırını arayın. 0.56.2, kötü amaçlı kod çalışmadan hemen önce her başlatmada yazılır.
Günlük klasörü macOS'te ~/Library/Logs/Swarm Desktop/, Windows'ta %LOCALAPPDATA%\Swarm Desktop\Log\ ve Linux'ta ~/.local/state/Swarm Desktop/ konumundadır.
0.56.3'ü kurun. Linux'ta paketi elle değiştirin.
0.56.2 hiç çalıştıysa, düğümün anahtarını ve şifresini çalınmış olarak kabul edin. Temiz bir bilgisayardan düğümün fonlarını, çek defterini ve stake'ini yeni bir anahtara taşıyın.
Kodun çalıştığı herhangi bir makinede:
~/.solidity/ klasörünü, Linux'ta solidity-langsupport-runner.service kullanıcı hizmetini, macOS'te com.solidity.langsupport.runner LaunchAgent'ini ve Windows'ta ScreenConnect Client (5cbe79c9c25524df) hizmetini kaldırın.
Uygulamayı veya paketi güncellemek, yeniden yüklemek ya da kaldırmak bunları kaldırmaz.
Mümkünse makineyi yerinde temizlemek yerine güvenilir bir imajdan yeniden oluşturun.
Kötü Amaçlı Yazılım Nasıl Çalışıyor
Her iki sürüm de aynı yükleyiciyi taşıyor; SafeDep'in teknik analizinde bulundu. Bu, api.frameworkmetrics[.]xyz adresinden daha fazla kod indiren ve kullanıcı izinleriyle çalıştıran birkaç satırlık koddur. bee-js'te yükleyici postinstall betiğidir ve Swarm Desktop'ta uygulama her başlatıldığında çalışır.
İndirilen kod, Swarm Desktop'ın veri klasöründe config.yaml ve data-dir/keys/swarm.key dosyalarını arar. Her ikisi de varsa bunları saldırganların sunucusuna gönderir.
Anahtar dosyası şifrelenmiş bir Ethereum keystore'dur, ancak Swarm Desktop şifresini config.yaml içinde düz metin olarak saklar. Her iki dosya ile saldırganlar düğüm cüzdanının xDAI ve xBZZ token'larını, çek defteri fonlarını ve stake'ini alabilir, şirket diyor.
İndirilen kod ayrıca bir arka kapı da kurar. Linux ve macOS'te bu, gizli ~/.solidity klasöründe saklanan evjawbreaker adlı Go uzaktan kabuk programıdır. Linux'ta arka planda bir kullanıcı hizmeti olarak, macOS'te bir LaunchAgent olarak çalışır.
Kabuk, kontrol sunucusunun adresini bir Ethereum akıllı sözleşmesinden okur, böylece saldırganlar bu adresi istediği zaman değiştirebilir. Saldırganlar bunu kötü amaçlı bee-js kodunun eklenmesinden 29 dakika önce güncellemişti.
Windows'ta indirilen kod, üreticisi ConnectWise tarafından imzalanmış gerçek bir ScreenConnect uzaktan erişim istemcisini kurar. İstemci bir sistem hizmeti olarak çalışır ve saldırganların rölesine bağlanır.
Kullanıcı yöneticiyse kod, Kullanıcı Hesabı Denetimi istemini atlatmak için bilinen bir yöntemle yönetici hakları elde eder. Değilse, kullanıcı iptal ettiğinde istemi tekrar gösterir. Bu haklarla Microsoft Defender hariç tutması ekler ve istemciyi sessizce kurar.
Sürümler Nasıl Yayıldı
Her iki sürüm de Ethersphere'in sürümleri otomatikleştirmek için kullandığı bee-worker hesabından geldi. Hiçbir değişiklik imzalanmadı ya da pull request olarak sunulmadı.
bee-js için saldırganlar yeni sürüm için bir GitHub sürümü yayımladı; bu da projenin npm yayımlama iş akışını başlattı. Bu iş akışı onay gerektirmiyordu ve Socket'e göre paket 73 saniyede npm'e yayımlandı.
Projenin gerçek iş akışı tarafından oluşturulduğu için paket geçerli bir provenans taşıyordu; bu kayıt, bir npm paketini onu oluşturan depo ve iş akışına bağlar. Provenans paketin nerede oluşturulduğunu gösterir, içerideki kodun kim tarafından incelendiğini değil.
Swarm Desktop için saldırganlar, projenin Apple ve Windows imzalama sertifikalarına sahip olan ve onay gerektirmeyen bir derleme iş akışını manuel olarak başlattı. macOS uygulaması projenin Developer ID'si ile imzalandı ve Apple tarafından noter onayından geçti, böylece macOS sadece normal ilk başlatma istemini gösterdi, firma buldu.
Bakımcılar, uygulamanın imzalama işlerini projenin DevOps ekibinden onay bekleyecek şekilde değiştirdi ve yalnızca ana daldan çalışacak şekilde ayarladı.
Saldırganların erişimi nasıl elde ettiği yazının yazıldığı sırada net değildi. Bakımcının olay notu CI kimlik bilgilerinin ve sırların çalınmasını suçluyor.
Firmanın analizi iki GitHub hesabının kullanıldığını gösteriyor: bee-worker ve uzun süredir bakım yapan bir bakımcının hesabı. Hiçbir rapor kimlik bilgilerinin nasıl çalındığını açıklamadı.
Daha Önceki Saldırılarla Bağlantılar
Yükler, Eylül ayında Open VSX pazarında görünen Solidity geliştiricileri için sahte uzantılarla aynı Ethereum sözleşmesini, ScreenConnect rölesini ve dosya adlarını paylaşıyor. Pluto Security araştırmacıları bu uzantıları 1 Ekim tarihli EtherDuck analizinde tanımladı.
Pluto, bunları "yüksek güvenle" 2025'te farklı bir Ethereum sözleşmesinden sunucu adresini okuyan orijinal SleepyDuck uzantısının arkasındaki grup ile ilişkilendiriyor. Socket, bee-js ve Swarm Desktop sürümlerinin de aynı grup tarafından yapıldığını söylüyor.
Tehdit Göstergeleri
Savunmacılar günlüklerde ve makinelerde aşağıdakileri arayabilir.
Alan adı: api.frameworkmetrics[.]xyz
URL yolu: /v1/analytics (bee-js yükleyici)
URL yolu: /v1/electron (Swarm Desktop yükleyici)
URL yolu: /v1/assets/ (daha fazla yük)
URL yolu: /v1/swarm/report (çalınan cüzdan dosyaları)
HTTP başlığı: X-Ethersphere: 1
IP:port: 193[.]57[.]9[.]155:4912 (evjawbreaker kontrol sunucusu)
IP:port: 185[.]232[.]84[.]169:8041 (ScreenConnect rölesi)
Ethereum sözleşmesi: 0xf8a900Db50b3331be6B768bA460BB59f3E40C344
Yol: ~/.solidity/
systemd birimi: solidity-langsupport-runner.service
LaunchAgent: com.solidity.langsupport.runner
Hizmet: ScreenConnect Client (5cbe79c9c25524df)
SHA-256: 9b73e7cd4e1425e770392549d8df46c706139ef476f4f7b9ac405165dc8d9696 (linux_amd64)
SHA-256: b601776817363b96295119f7221338a122d5247a35a77a64b04f286e1bbcc565 (linux_arm64)
SHA-256: 80d2672e2599732d3c0ae2a4cd0d1e3fe4d555a60273ce33feb99db3f34d250f (darwin_amd64)
SHA-256: fae61f31f00988fdc5cc9e7272b51e08af2e245d81003237875415930fd27358 (darwin_arm64)
SHA-256: 37d14bff30762ca701e9c1f8bc6c57c065bb20ae3a2208cb7411a6530610f08e (invoke.ps1)
SHA-256: 7527e86d70e7c9493db4356f1c3775380431b310000f2602c1e993cf435d01da (app.msi)