Versi jahat dari alat perangkat lunak yang digunakan oleh pengembang Injective dirancang untuk mengumpulkan kunci pribadi dompet dan frasa pemulihan, menimbulkan kekhawatiran bagi aplikasi yang menangani informasi dompet sensitif melalui rilis yang terdampak. Peretas membobol paket perangkat lunak yang digunakan oleh pengembang yang membangun dompet dan aplikasi untuk blockchain Injective, dengan menambahkan kode yang mampu mengumpulkan kredensial dompet kripto secara diam-diam.
Perusahaan keamanan Socket menemukan kode jahat tersebut dalam versi 1.20.21 dari @injectivelabs/sdk-ts, sebuah paket yang membantu aplikasi terhubung dengan Injective dan mengelola fungsi terkait dompet. Paket ini biasanya menerima sekitar 50.000 unduhan per minggu, meskipun angka tersebut mencakup semua versi dan tidak mewakili jumlah orang yang terdampak oleh insiden ini.
Socket menyatakan bahwa versi yang dibobol tersebut diunduh sekitar 310 kali. Namun, unduhan tidak serta merta berarti kunci dompet telah terpapar. Kode berbahaya tersebut perlu dijalankan saat aplikasi sedang menangani kunci pribadi atau frasa pemulihan. Belum ada jumlah pasti dompet yang terdampak yang dirilis, dan tidak ada bukti publik bahwa dana telah dicuri.
Insiden ini tidak melibatkan pelanggaran terhadap blockchain Injective itu sendiri. Sebaliknya, penyerang menargetkan komponen perangkat lunak tepercaya yang digunakan oleh pengembang, sebuah metode yang umumnya disebut sebagai serangan rantai pasokan perangkat lunak.
Pengembang sering mengandalkan paket perangkat lunak siap pakai daripada menulis setiap bagian aplikasi dari awal. Paket-paket ini dapat menangani tugas-tugas seperti menghubungkan ke blockchain, membuat dompet, dan menandatangani transaksi. Dalam kasus ini, kode jahat ditempatkan di dalam paket resmi Injective dan dirancang untuk aktif ketika aplikasi memproses informasi dompet sensitif. Socket menyatakan bahwa kode tersebut dapat menangkap kunci pribadi atau frasa pemulihan mnemonik dan mencoba mengirim data tersebut keluar sambil menyamarkan aktivitasnya sebagai pelaporan teknis biasa.
Kunci pribadi memberikan pemegangnya kontrol atas dompet kripto yang terkait. Frasa pemulihan dapat digunakan untuk memulihkan dompet yang sama di perangkat lain. Berbeda dengan kata sandi akun biasa, kredensial ini tidak dapat begitu saja diatur ulang setelah terpapar.
Kompromi kunci pribadi telah menjadi salah satu bentuk serangan kripto yang paling merusak karena penjahat dapat mengambil alih kontrol langsung atas dompet tanpa perlu membobol blockchain yang mendasarinya. Tinjauan keamanan terbaru menemukan bahwa insiden kunci pribadi menyumbang sekitar 40% dari kerugian yang tercatat dalam dataset yang diperiksa. Insiden Injective juga menunjukkan mengapa penyerang semakin menargetkan perangkat lunak dan platform yang sudah dipercaya oleh pengguna. Nama paket yang familiar, akun pengembang yang mapan, atau aplikasi yang dikenal dapat membuat aktivitas jahat tampak sah dan mengurangi kemungkinan pengguna mempertanyakannya.
Socket menyatakan bahwa perubahan tidak sah diajukan melalui akun GitHub seorang pengembang yang memiliki riwayat kontribusi yang mapan untuk proyek Injective. Pemilik akun asli kemudian mendeteksi aktivitas tersebut dan membalikkan perubahan. Laporan yang tersedia tidak mengidentifikasi penyerang atau menjelaskan bagaimana akun tersebut diakses.
Kode pencuri dompet terletak di versi 1.20.21 dari paket SDK Injective utama. Namun, 17 paket lain dalam koleksi npm Injective dirilis dengan tautan ke versi yang terdampak sama. Ini berarti beberapa pengembang mungkin telah menerima perangkat lunak yang dibobol secara tidak langsung. Sebuah aplikasi mungkin telah menginstal satu paket Injective, sementara paket tersebut secara otomatis membawa masuk SDK yang terdampak di balik layar.
Oleh karena itu, insiden ini tidak boleh digambarkan sebagai 18 paket yang terinfeksi secara terpisah. Bukti yang tersedia menunjukkan bahwa SDK utama mengandung fungsionalitas jahat, sementara 17 paket terkait bergantung secara langsung atau tidak langsung pada versi tersebut. Socket menyatakan bahwa rilis yang terdampak ditandai sebagai usang (deprecated) setelah kompromi ditemukan dan versi bersih diterbitkan. Namun, pada saat laporan Socket, versi yang dibobol belum sepenuhnya dihapus dari npm, dan materi rilis terkait tetap tersedia melalui GitHub.
Laporan juga berbeda mengenai tanggal pasti insiden tersebut. Linimasa yang diterbitkan Socket merujuk pada 8 Juni, sementara beberapa laporan sekunder menempatkan aktivitas tersebut pada bulan Juli. Karena bulan tersebut belum diselesaikan secara independen, tanggal pasti harus dikaitkan dengan sumbernya daripada dinyatakan sebagai fakta yang tidak disengketakan.
Pengembang yang menggunakan versi 1.20.21, baik secara langsung maupun melalui paket Injective lain, disarankan untuk berasumsi bahwa kredensial dompet yang diproses oleh perangkat lunak yang terdampak mungkin telah terpapar.
Tindakan yang direkomendasikan meliputi:
Hanya memperbarui paket saja mungkin tidak melindungi dompet jika kredensialnya sudah disalin. Setelah pihak lain memperoleh kunci pribadi atau frasa pemulihan, dompet lama tidak boleh lagi dianggap aman. Pengguna dompet juga harus memeriksa izin yang mereka setujui. Dalam kasus terpisah, penyerang mencuri sekitar $92.000 dalam bentuk Tether Gold setelah korban menandatangani permintaan izin jahat, menunjukkan bahwa penjahat tidak selalu perlu memperoleh frasa benih secara langsung untuk mengambil aset.
Meskipun kasus tersebut menggunakan teknik yang berbeda, hal ini menyoroti masalah yang lebih luas yang sama: keamanan kripto tidak hanya bergantung pada blockchain, tetapi juga pada perangkat lunak, persetujuan, dan layanan yang mengelilingi dompet. Saat ini tidak ada bukti bahwa blockchain Injective diretas, bahwa setiap dompet Injective berisiko, atau bahwa jumlah cryptocurrency tertentu telah dicuri. Bahaya yang diketahui terbatas pada aplikasi yang menginstal paket yang dibobol dan memproses kredensial dompet melaluinya.

