Serangan Supply Chain pada Crate Rust arrayref: Infostealer Menyusup Lewat Proses Kompilasi, Diduga Terhubung ke DPRK
Daftar Isi 7 bagian
Satu Akun, Tiga Crate, 23 Menit
Pada 20 Agustus 2026, komunitas pengembang Rust diguncang oleh serangan supply chain yang terencana dengan presisi tinggi. Dalam rentang waktu hanya 23 menit, penyerang meracuni tiga crate populer yang semuanya dikelola oleh akun maintainer yang sama: arrayref, append-only-vec, dan internment. Yang paling mengejutkan, arrayref sendiri memiliki catatan lebih dari 53 juta unduhan dalam 90 hari terakhir, menjadikan serangan ini salah satu insiden supply chain Rust paling signifikan yang pernah tercatat.
Yang membuat kasus ini berbeda dari serangan supply chain konvensional adalah vektor eksploitasinya. Penyerang tidak mencuri data dari pengguna akhir atau membajak jaringan perusahaan. Mereka menyerang langsung pada titik di mana kode lahir: proses kompilasi.
Rantai Pembajakan yang Direncanakan
Laporan dari perusahaan keamanan aplikasi StepSecurity mengungkap rangkaian peristiwa yang terjadi dengan jalan berulang. Pada pukul 01:17 UTC, sebuah akun GitHub baru dibuat dengan nama yang meniru David Tolnay, pengembang Rust terkemuka yang dikenal luas di komunitas. Akun tiruan serupa juga didaftarkan di crates.io.
Pada pukul 01:55, penyerang menerbitkan proc-macro1 versi 1.0.106, yang merupakan salinan benign dari proc-macro2, crate utilitas yang sangat populer di ekosistem Rust. Versi ini tampak tidak berbahaya dan dirancang untuk membangun kepercayaan. Baru pada pukul 07:11, versi 1.0.107 yang sebenarnya berbahaya diterbitkan.
Empat menit kemudian, pada pukul 07:15, arrayref versi 0.3.10 dipublikasikan melalui akun droundy (David Roundy) yang sah, sementara versi 0.3.5 hingga 0.3.9 dihapus dari indeks. Langkah penghapusan versi lama ini didesain untuk memaksa sistem manajemen dependensi seperti Cargo mengunduh versi 0.3.10 yang telah diracuni.
Insiden ini dilaporkan pada pukul 07:54. Crates.io menghapus proc-macro1 pada pukul 08:03 dan menarik arrayref 0.3.10 dari indeks pada pukul 08:41. Total waktu paparan: sekitar satu setengah jam. Bagi sebuah ekosistem di mana unduhan bisa mencapai jutaan per hari, satu setengah jam sudah lebih dari cukup untuk menyebarkan dampak secara luas.
Apa yang Dilakukan Malware
Kunci serangan ini terletak pada dependency baru yang disuntikkan ke arrayref: proc-macro1, sebuah typosquat yang meniru proc-macro2. Di dalam proc-macro1 terdapat file build.rs yang secara otomatis dieksekusi oleh Cargo selama proses kompilasi. Script ini merekonstruksi infrastruktur malware dari fragmen yang di-encode dalam base64, lalu memilih payload yang sesuai dengan sistem operasi host: Linux x86-64, Windows x86-64, macOS x86-64, atau macOS ARM64.
Pada sistem Unix, malware menulis file ke /tmp/rust-setup, menandainya sebagai executable, dan menjalankannya sebagai proses terpisah. Di Windows, file %TEMP%\rust-setup.ps1 dibuat, kemudian dijalankan melalui wscript.exe tersembunyi dan launcher VBS agar prosesnya tetap berjalan di latar belakang.
Payload menerima alamat C2 sebagai argumen, yang menurut analisis perusahaan keamanan cloud Wiz, digunakan untuk mengeksfiltrasi informasi host dan kredensial. Malware mengumpulkan kredensial dari browser Google Chrome, Brave, dan Edge dengan cara mengakses database SQLite penyimpanan login. Untuk persistensi, malware memanfaatkan Registry Run key di Windows, LaunchAgent di macOS, dan systemd di Linux.
Jangkauan yang Luas
Dampak potensial dari serangan ini sangat luas. arrayref saja memiliki lebih dari 245 juta unduhan sepanjang masa, sementara gabungan append-only-vec dan internment mencatat hampir 19 juta instalasi. Proyek-proyek yang menggunakan arrayref mencakup blake3 (fungsi hash kriptografi), framework GUI seperti egui, eframe, dan iced, serta komponen yang digunakan dalam ekosistem Ethereum dan Solana.
Para peneliti dari perusahaan keamanan Aikido dan SafeDep menerbitkan analisis teknis terpisah yang mengkonfirmasi temuan StepSecurity. Wiz, sementara itu, mencatat bahwa infrastruktur C2 kampanye ini bertumpang tindih dengan serangan supply chain North Korea (DPRK) sebelumnya, termasuk yang menargetkan paket Mastra dan axios.
Keterlibatan aktor negara dalam serangan supply chain terhadap ekosistem pengembang bukan hal baru, tetapi skala dan presisi operasi ini menandakan evolusi kemampuan. Penyerang tidak hanya menguasai teknik pembajakan akun, tetapi juga memahami dengan baik bagaimana ekosistem Rust bekerja, termasuk bagaimana Cargo menangani dependency, bagaimana build.rs dieksekusi, dan bagaimana versi yang dihapus bisa memaksa instalasi versi tertentu.
Siapa yang Terdampak
Setiap pengembang yang menginstal arrayref 0.3.10, append-only-vec 0.1.9, atau internment 0.8.7 selama jendela paparan (sekitar pukul 07:15 hingga 08:41 UTC pada 20 Agustus 2026) harus menganggap sistem mereka telah dikompromi. Ini termasuk lingkungan pengembangan lokal, server CI/CD, dan mesin build.
StepSecurity juga menerbitkan daftar crate lain yang diterbitkan penyerang selama operasi ini: aovine, arone, aronenao, dan tinymember. Keempat crate ini telah dihapus dari crates.io, tetapi jika sudah terinstal sebelum penghapusan, dampaknya tetap berlaku.
Langkah Penanganan
Bagi pengembang yang terdampak, langkah pertama adalah memeriksa file Cargo.lock di seluruh proyek untuk keberadaan arrayref 0.3.10, append-only-vec 0.1.9, atau internment 0.8.7. Selain itu, cari keberadaan file /tmp/rust-setup pada sistem Unix atau %TEMP%\rust-setup.ps1 pada Windows.
Periksa juga lalu lintas jaringan menuju alamat 23.254.165[.]112 pada port 9089 dan 443, yang merupakan infrastruktur C2 yang teridentifikasi. Jika kompromi dikonfirmasi, putar semua kredensial yang dapat diakses dari sistem tersebut, termasuk token CI, kunci signing, dan rahasia lainnya. Bangun ulang lingkungan pengembangan dari backup yang diketahui aman.
Untuk proyek yang tidak terdampak, pin versi arrayref yang diketahui aman (sebelum 0.3.10) di Cargo.lock sampai situasi maintainer dan keamanan crate diselesaikan.
Pelajaran untuk Ekosistem Rust
Serangan ini menyoroti kerentanan fundamental dalam model distribusi paket terbuka. Cargo, manager paket Rust, menjalankan script build.rs secara otomatis tanpa persetujuan pengguna eksplisit, sebuah fitur yang dirancang untuk kemudahan tetapi juga menjadi vektor serangan yang efektif. Keputusan untuk menghapus versi lama dari indeks crates.io, yang dalam kondisi normal berfungsi untuk menjaga kebersihan registry, justru dimanfaatkan penyerang untuk memaksa instalasi versi berbahaya.
Komunitas Rust telah lama membahas mekanisme verifikasi integritas dan isolation untuk proses kompilasi, tetapi insiden ini menunjukkan bahwa diskusi tersebut sudah mendesak untuk ditindaklanjuti. Sampai mekanisme seperti itu tersedia, pengembang tetap berada dalam posisi rentan: mereka harus mempercayai bahwa maintainer crate yang mereka gunakan tidak akan dikompromi, dan bahwa proses kompilasi tidak akan menjadi jalan masuk bagi malware.