Serangan Supply Chain Ethersphere: bee-js 13.3.0 dan Swarm Desktop 0.56.2 Curi Kunci Wallet

Nov 10, 2026 - 01:00
 0  0
Serangan Supply Chain Ethersphere: bee-js 13.3.0 dan Swarm Desktop 0.56.2 Curi Kunci Wallet

Peretas membajak otomasi rilis proyek Ethersphere untuk menerbitkan versi berbahaya bee-js 13.3.0 dan Swarm Desktop 0.56.2. Kedua paket mencuri kunci wallet node Swarm beserta password-nya, lalu menanam backdoor di Windows, macOS, dan Linux.

Ad
Ad

Kedua rilis jahat itu sudah ditarik, dan maintainer proyek menerbitkan pembaruan Swarm Desktop yang bersih pada hari yang sama. Namun dua langkah itu tidak menghapus backdoor yang sudah terpasang, juga tidak menyelamatkan kunci yang sudah terkirim ke server penyerang. Sampai berita ini ditulis, belum ada laporan dana yang dicuri.

bee-js adalah pustaka JavaScript di balik Swarm Desktop dan alat baris perintah swarm-cli. Swarm Desktop menjalankan node Swarm di komputer pengguna dan menyimpan kunci privat node di mesin itu.

Kronologi Rilis Jahat dalam Hitungan Jam

Swarm Desktop 0.56.2 muncul di GitHub sekitar pukul 00:36 UTC dan ditarik sekitar 8,5 jam kemudian. Menurut analisis insiden firma keamanan supply chain Socket, pembaruan bawaan aplikasi bisa menawarkan versi itu ke komputer Windows x64 dan Mac Apple Silicon dalam waktu sekitar 10 menit.

Mac berbasis prosesor Intel tidak pernah ditawari versi tersebut, dan instalasi Linux tidak memperbarui diri secara otomatis.

Rilis bee-js 13.3.0 sempat menjadi versi terbaru di npm selama sekitar 75 menit, dari 00:09 hingga 01:25 UTC. Kodenya berjalan sebagai skrip postinstall, yang dieksekusi npm secara otomatis saat instalasi kecuali skrip instalasi dinonaktifkan. Sebuah proyek tidak perlu mengimpor pustaka itu agar kodenya berjalan.

Paket swarm-cli dan bee-dashboard milik proyek, serta kode sumber Swarm Desktop, menerima rentang versi yang mencakup 13.3.0. Instalasi baru pada jendela waktu itu berpotensi menarik versi berbahaya tersebut.

Tidak ada laporan yang menyebut jumlah mesin terinfeksi. Perkiraan kasar Socket: bee-js 13.3.0 diunduh sekitar 10 kali, termasuk oleh pemindai keamanan dan mirror. Unduhan Swarm Desktop 0.56.2 mencapai 65 pada pukul 08:27 UTC, termasuk oleh para peneliti.

Pernyataan Maintainer dan Versi Bersih 0.56.3

Maintainer Ethersphere menarik 0.56.2 dan menggantinya dengan rilis bersih, versi 0.56.3. Dalam perubahan yang menyiapkan rilis baru itu, salah seorang maintainer menulis bahwa 0.56.2 "was published by an attacker using stolen CI credentials and has been withdrawn" — diterbitkan penyerang memakai kredensial CI yang dicuri dan telah ditarik.

Versi 0.56.3 berisi kode yang sama dengan versi sebelumnya, 0.56.1, ditandatangani dengan sertifikat Developer ID yang baru diterbitkan, menurut catatan insiden maintainer tersebut. Catatan itu menyebut auto-updater aplikasi akan memindahkan instalasi 0.56.2 ke versi baru, meski paket Linux tetap harus diganti secara manual.

Perbandingan kode sumber kedua versi oleh The Hacker News tidak menemukan perubahan selain nomor versi dan catatan rilis. Saat The Hacker News memeriksa npm, 13.2.0 kembali menjadi versi bee-js terbaru dan 13.3.0 tidak lagi bisa diunduh dari registry.

Advisory GitHub untuk bee-js 13.3.0 menyatakan: "Any computer that has this package installed or running should be considered fully compromised." SafeDep, perusahaan keamanan supply chain perangkat lunak, memberi saran serupa untuk setiap komputer yang pernah memasang Swarm Desktop 0.56.2.

Cara Kerja Malware Pencuri Kunci Wallet

Kedua rilis membawa loader yang sama, temuan SafeDep dalam analisis teknisnya. Isinya beberapa baris kode yang mengunduh kode lanjutan dari api.frameworkmetrics[.]xyz dan menjalankannya dengan izin pengguna. Di bee-js, loader itu adalah skrip postinstall; di Swarm Desktop, ia berjalan setiap kali aplikasi dimulai.

Kode unduhan mencari dua berkas di folder data Swarm Desktop: config.yaml dan data-dir/keys/swarm.key. Jika keduanya ada, isinya dikirim ke server penyerang.

Berkas kunci itu sebenarnya keystore Ethereum terenkripsi, tetapi Swarm Desktop menyimpan password-nya dalam teks biasa di config.yaml. Dengan kedua berkas itu, penyerang bisa mengambil token xDAI dan xBZZ milik wallet node, dana chequebook, serta stake-nya.

Kode tersebut juga memasang backdoor. Di Linux dan macOS, bentuknya remote shell Go bernama evjawbreaker yang disimpan di folder tersembunyi ~/.solidity. Shell itu berjalan di latar belakang sebagai user service di Linux dan sebagai LaunchAgent di macOS.

Shell tersebut membaca alamat server kendalinya dari sebuah smart contract Ethereum, sehingga penyerang bisa mengganti alamat itu kapan saja. Mereka telah memperbaruinya 29 menit sebelum kode bee-js berbahaya ditambahkan.

Di Windows, kode itu memasang klien akses jarak jauh ScreenConnect asli yang ditandatangani pembuatnya, ConnectWise. Klien berjalan sebagai layanan sistem dan terhubung ke relay milik penyerang.

Jika pengguna adalah administrator, kode memperoleh hak administrator lewat cara yang sudah dikenal untuk melewati prompt User Account Control. Jika bukan, prompt itu muncul lagi setiap kali pengguna membatalkannya. Dengan hak tersebut, kode menambahkan pengecualian Microsoft Defender dan memasang klien secara senyap.

Jalur Masuk Lewat Akun Otomasi bee-worker

Kedua rilis berasal dari bee-worker, akun yang dipakai Ethersphere untuk mengotomasi rilis. Tidak ada perubahan yang ditandatangani atau diajukan sebagai pull request.

Untuk bee-js, penyerang menerbitkan GitHub release versi baru yang memicu alur kerja penerbitan npm proyek. Alur kerja itu tidak memerlukan persetujuan dan menerbitkan paket ke npm dalam 73 detik, menurut Socket.

Karena dibangun oleh alur kerja asli proyek, paket itu membawa provenance yang valid — catatan yang mengaitkan paket npm dengan repositori dan alur kerja pembuatnya. Provenance menunjukkan di mana paket dibangun, bukan apakah isinya pernah ditinjau.

Untuk Swarm Desktop, penyerang menjalankan secara manual alur kerja build yang memegang sertifikat penandatanganan Apple dan Windows proyek, dan tidak memerlukan persetujuan. Aplikasi macOS ditandatangani dengan Developer ID proyek dan dinotarisasi Apple, sehingga macOS hanya menampilkan prompt peluncuran pertama yang normal.

Maintainer sejak itu mengubah agar job penandatanganan aplikasi menunggu persetujuan tim DevOps proyek dan hanya berjalan dari branch main. Bagaimana penyerang memperoleh akses masih belum jelas. Catatan insiden maintainer menyalahkan pencurian kredensial dan rahasia CI.

Analisis Socket mengindikasikan dua akun GitHub dipakai: bee-worker dan akun seorang maintainer lama. Tidak ada laporan yang menjelaskan bagaimana kredensial itu dicuri.

Kaitan dengan Serangan SleepyDuck dan Indikator Kompromi

Payload ini berbagi kontrak Ethereum, relay ScreenConnect, dan nama berkas berekstensi palsu untuk pengembang Solidity dengan ekstensi yang muncul di marketplace Open VSX pada September. Peneliti Pluto Security menjabarkannya dalam analisis EtherDuck pada 1 Oktober.

Pluto mengaitkannya "with high confidence" ke kelompok di balik ekstensi SleepyDuck, yang membaca alamat servernya dari kontrak Ethereum lain pada 2025. Socket menyebut kelompok yang sama berada di balik rilis bee-js dan Swarm Desktop ini.

Berikut indikator kompromi yang bisa dicari di log dan mesin:

  • Domain: api.frameworkmetrics[.]xyz
  • Path URL: /v1/analytics (loader bee-js), /v1/electron (loader Swarm Desktop), /v1/assets/, /v1/swarm/report (berkas wallet yang dicuri)
  • Header HTTP: X-Ethersphere: 1
  • IP:port: 193[.]57[.]9[.]155:4912 (server kendali evjawbreaker); 185[.]232[.]84[.]169:8041 (relay ScreenConnect)
  • Kontrak Ethereum: 0xf8a900Db50b3331be6B768bA460BB59f3E40C344
  • Path: ~/.solidity/; systemd unit: solidity-langsupport-runner.service; LaunchAgent: com.solidity.langsupport.runner
  • Layanan: ScreenConnect Client (5cbe79c9c25524df)

Untuk pengguna bee-js, langkah yang dianjurkan: cari @ethersphere/[email protected] di lockfile, cache paket, registry internal, dan log instalasi CI; pin ke 13.2.0; bersihkan salinan cache 13.3.0; dan jika versi itu terpasang dengan skrip instalasi aktif, anggap mesin atau runner CI tersebut kompromi. Dari komputer bersih, rotasi semua password, token, dan kunci yang bisa dibaca pengguna atau job CI tersebut.

Untuk pengguna Swarm Desktop, cari baris Bee Desktop version: 0.56.2 (production) di berkas log bee-desktop.log. Folder log berada di ~/Library/Logs/Swarm Desktop/ pada macOS, %LOCALAPPDATA%\\Swarm Desktop\\Log\\ pada Windows, dan ~/.local/state/Swarm Desktop/ pada Linux. Pasang 0.56.3, dan jika 0.56.2 pernah berjalan, anggap kunci serta password node dicuri. Dari komputer bersih, pindahkan dana, chequebook, dan stake node ke kunci baru.

Di mesin mana pun tempat kode itu berjalan: hapus folder ~/.solidity/, user service solidity-langsupport-runner.service di Linux, LaunchAgent com.solidity.langsupport.runner di macOS, dan layanan ScreenConnect Client (5cbe79c9c25524df) di Windows. Memperbarui, memasang ulang, atau menghapus aplikasi tidak menghilangkan artefak itu. Bila memungkinkan, bangun ulang mesin dari image tepercaya alih-alih membersihkannya di tempat.

Analisis Redaksi: Provenance Bukan Jaminan Keamanan

Kasus Ethersphere memperlihatkan celah yang jarang dibahas dalam diskusi keamanan supply chain: rantai pasok bisa utuh secara teknis sekaligus berbahaya secara isi. Paket bee-js 13.3.0 membawa provenance valid karena dibangun oleh alur kerja asli proyek. Aplikasi macOS ditandatangani Developer ID proyek dan lolos notarisasi Apple. Semua tanda keaslian itu benar — dan justru karena itu, tidak ada sistem yang otomatis menolaknya.

Yang gagal bukan kriptografi, melainkan kontrol manusia dan proses. Alur kerja npm proyek tidak memerlukan persetujuan. Alur kerja build Swarm Desktop yang memegang sertifikat penandatanganan Apple dan Windows juga tidak memerlukan persetujuan, dan bisa dijalankan manual oleh akun otomasi. Satu kredensial CI yang dicuri cukup untuk melewati seluruh lapisan verifikasi yang dirancang justru untuk mencegah hal ini.

Ada dua pelajaran operasional yang layak diadopsi proyek lain. Pertama, job penandatanganan dan penerbitan paket harus menuntut persetujuan manusia serta terkunci pada branch main — persis langkah yang kini diambil Ethersphere. Kedua, menyimpan password keystore dalam teks biasa di config.yaml adalah keputusan desain yang mengubah kebocoran berkas menjadi kehilangan aset langsung. Enkripsi keystore tidak berarti apa-apa jika kuncinya diletakkan di sebelahnya.

Bagi pengguna, jendela paparannya singkat tetapi konsekuensinya permanen. bee-js 13.3.0 hanya aktif 75 menit, Swarm Desktop 0.56.2 sekitar 8,5 jam. Namun backdoor evjawbreaker yang membaca alamat server dari smart contract Ethereum bisa diperbarui kapan saja oleh penyerang, dan kunci wallet yang sudah terkirim tidak bisa ditarik kembali. Angka unduhan yang kecil — sekitar 10 untuk bee-js dan 65 untuk Swarm Desktop — menurunkan skala, bukan tingkat bahayanya.

Sumber: thehackernews.com

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Angry Angry 0
Sad Sad 0
Wow Wow 0
Desk Teknologi IndoWarta Desk Teknologi menyajikan rangkuman berita teknologi dari berbagai sumber, disusun dengan bantuan AI dan dikurasi tim redaksi.
Ad
Ad