Sepanjang 2026, serangan registry paket menyasar crates.io, npm, dan PyPI dengan pola yang berulang: kredensial pipeline atau akun maintainer dicuri, lalu rilis berbahaya diterbitkan atas nama proyek yang dipercaya. Artikel ini merangkum kasus crates.io, Mastra, SAP CAP, Red Hat, AsyncAPI, dan durabletask berdasarkan laporan per 29 Oktober 2026, beserta langkah pembelajarannya.
Gambaran Besar Serangan Registry Paket 2026
Banyak kasus tahun ini meneruskan pola worm Shai-Hulud yang kami bahas di artikel Shai-Hulud dan kampanye TeamPCP. Menurut Unit 42, kampanye bernama Mini Shai-Hulud dimulai 29 April 2026, dan kode sumbernya sempat diunggah ke repositori publik GitHub pada 12 Mei sebelum diturunkan. Dampaknya: alat serangan tersedia bagi pihak lain, sehingga atribusi hanya berdasarkan garis keturunan worm menjadi tidak andal dan peniruan perlu diantisipasi.
Unit 42 mencatat pada 11 Mei, hari gelombang TanStack, sudah ada 373 versi berbahaya di 169 paket npm. Pada 19 Mei, setelah akun maintainer @antv dikompromikan, 639 versi berbahaya terbit di 323 paket dalam sekitar satu jam. Angka-angka ini menunjukkan seberapa cepat satu token curian dapat melipatgandakan dampaknya.
crates.io: Build Script sebagai Pintu Masuk (Agustus 2026)
Pada 20 Agustus 2026 pukul 07:15 UTC, tim respons keamanan Rust menerima laporan bahwa crate proc-macro1 berbahaya; temuan ini dilaporkan tim riset Nextron Systems. Menurut pengumuman resmi Rust, tiga rilis terdampak: arrayref 0.3.10, internment 0.8.7, dan append-only-vec 0.1.9. Masing-masing dihapus 86, 90, dan 107 menit setelah terbit. Rilis itu menambahkan dependensi berbahaya proc-macro1, yang build script-nya mengunduh payload saat kompilasi. Crate berbahaya lain yang ikut dihapus antara lain proc-macro-en, aovine, arone, aronenao, dan tinymember. Cargo menjalankan build script sebagai bagian dari kompilasi dependensi, sehingga kode berbahaya jalan walaupun aplikasi tidak pernah memanggil crate tersebut.
- Advisori RustSec: RUSTSEC-2026-0260. Versi arrayref 0.3.9 dan sebelumnya tercatat tidak terdampak.
- RustSec mencatat 2.285 unduhan arrayref 0.3.10. Itu angka unduhan, bukan jumlah korban yang terkonfirmasi.
- Tim Rust tidak menyebut pelaku, menyatakan tidak meyakini maintainer arrayref bertindak jahat, dan mengatakan komputer atau kredensialnya kemungkinan dikompromikan. Wiz melaporkan tumpang tindih infrastruktur dengan kasus Mastra dan axios yang oleh Microsoft dan Mandiant dikaitkan dengan Korea Utara, tetapi Wiz tidak menetapkan atribusi secara definitif.
Sebagai konteks kebijakan, pada 13 Februari 2026 tim crates.io mengumumkan tidak lagi menulis posting blog untuk setiap crate berbahaya yang tidak punya bukti pemakaian nyata. Advisori RustSec tetap terbit, dan insiden dengan pemakaian nyata tetap mendapat posting.
npm: SAP CAP, Red Hat, Mastra, dan AsyncAPI
- SAP CAP (29 April 2026). Menurut Unit 42, empat paket npm dalam toolchain CAP dan MTA milik SAP terdampak, dengan sekitar 570.000 unduhan mingguan gabungan. Ini adalah awal kampanye Mini Shai-Hulud.
- @redhat-cloud-services (1 Juni 2026). Menurut Unit 42, sedikitnya 32 paket terdampak. Penyebabnya akun GitHub karyawan Red Hat yang dikompromikan, dipakai untuk mendorong commit yang melewati code review. Paket berbahaya membawa provenance SLSA yang valid karena dibangun oleh pipeline yang sah setelah kode berbahaya masuk.
- Mastra (16 sampai 17 Juni 2026). Menurut Microsoft, lebih dari 140 paket di scope mastra dan @mastra terdampak setelah akun maintainer diambil alih. Penyerang menyisipkan dependensi easy-day-js, tiruan nama pustaka dayjs, dengan skrip postinstall berbahaya. Microsoft menyebut Mastra 1.13.0 dan @mastra/core 1.42.0 ke bawah tidak terdampak. Microsoft menilai dengan keyakinan tinggi bahwa aktivitas ini dilakukan oleh Sapphire Sleet, aktor yang dikaitkan dengan Korea Utara.
- AsyncAPI (14 Juli 2026). Menurut Unit 42, pipeline rilis empat repositori inti terkompromi dan lima paket trojan terbit. Branch pra-rilis (next dan schema) dibiarkan tanpa proteksi, dan kode yang disisipkan mengambil NPM_TOKEN serta GITHUB_TOKEN dari lingkungan CI.
Unit 42 menyebut payload kasus Red Hat bernama Miasma, dan payload AsyncAPI tampak sebagai turunannya. Menurut Unit 42, sulit memastikan apakah TeamPCP berada di balik kampanye ini, karena kode sumber Mini Shai-Hulud sudah beredar publik.
PyPI: durabletask dan Publikasi di Luar Pipeline
Pada 19 Mei 2026, tiga versi paket durabletask milik Microsoft (1.4.1, 1.4.2, dan 1.4.3) diunggah ke PyPI dalam jendela sekitar 35 menit. Menurut StepSecurity, versi itu diunggah langsung tanpa tag, rilis, atau eksekusi CI yang cocok di repositori, dan proyek tidak memakai Trusted Publishing. Kode berjalan saat paket diimpor di Linux, mencuri kredensial AWS, Azure, GCP, dan Kubernetes, berusaha bergerak lateral lewat AWS SSM dan kubectl exec, serta memuat komponen perusak bersyarat wilayah. Microsoft mengonfirmasi dan menarik versi tersebut. Rilis bersih terakhir adalah 1.4.0.
Pola yang Perlu Dikenali dan Langkah Defensif
Dari semua kasus, beberapa pola berulang:
- Kredensial publikasi yang dicuri, baik akun maintainer maupun token pipeline.
- Dependensi baru yang mencurigakan, sering berupa tiruan nama pustaka populer.
- Kode yang berjalan sebelum aplikasi dipakai: skrip postinstall di npm, build script di Cargo, dan eksekusi saat impor di Python.
- Publikasi di luar alur normal, seperti rilis tanpa tag atau dari workflow berstatus gagal.
Respons yang masuk akal bagi tim Anda:
- Commit lockfile dan pasang dengan perintah yang deterministik, misalnya npm ci.
- Nonaktifkan skrip siklus hidup yang tidak perlu (ignore-scripts=true pada npm).
- Terapkan cooldown, misalnya 24 sampai 72 jam seperti disarankan Unit 42, melalui registry privat atau proxy sebelum versi baru boleh dipakai, dan lihat perubahan di keamanan npm terbaru.
- Jalankan build dari runner yang membatasi koneksi keluar, dan jangan memberi runner rahasia di luar kebutuhannya.
- Pertahankan SBOM per rilis agar analisis dampak cepat.
- Jika ada paket terdampak yang pernah berjalan di mesin build, anggap mesin itu terkompromi, rotasi rahasia yang terpapar, dan bangun ulang dari worker tepercaya. Hati-hati dengan urutan: menurut Unit 42, payload gelombang 11 Mei memantau token curian dan menghapus direktori home bila token itu dicabut, jadi siapkan penanganan mesin terdampak sebelum mencabut token.
Relevansi untuk Tim di Indonesia
Banyak startup, software house, dan tim internal di Indonesia membangun produk dari ratusan dependensi npm, PyPI, dan crates. Sebuah dependensi transitif yang dikompromikan bisa sampai ke aplikasi Anda tanpa sepengetahuan siapa pun. Jika layanan Anda memproses data pribadi, kebocoran rahasia build berujung pada kewajiban pelindungan data yang serius. Mulailah dari inventaris dependensi dan pembatasan akses rahasia di CI.
Pertanyaan yang Sering Diajukan
Apakah provenance yang valid berarti paket aman?
Tidak. Kasus @redhat-cloud-services menunjukkan paket berbahaya dengan provenance valid, karena pipeline yang sah membangun kode yang sudah disusupi. Provenance membuktikan asal build, bukan niat kode.
Mengapa build script dan postinstall begitu berbahaya?
Karena keduanya berjalan otomatis saat pemasangan atau kompilasi, sering dengan hak akses developer atau runner, sebelum Anda sempat meninjau apa pun.
Bagaimana saya tahu bila terdampak?
Cari nama paket dan versi terdampak di lockfile, cache registry internal, dan log CI. Untuk crates, periksa Cargo.lock dan cache registry.
Kesimpulan
Serangan registry paket 2026 bukan kejadian terpisah, melainkan pola yang sama dengan korban berbeda. Fokuskan upaya pada hal yang bisa Anda kendalikan: lockfile, skrip instalasi, cooldown, pembatasan rahasia, dan rotasi kredensial yang cepat. Jika Anda ingin menilai seberapa rentan pipeline organisasi Anda, tim layanan Linuxhackingid siap membantu, dan dasar teorinya dibahas di artikel supply chain attack.
Every article is reviewed by the practice lead who ran the work before it is published.
