- Sejumlah paket npm yang menyertakan paket open source @ctrl/tinycolor terdampak versi berbahaya; penyebabnya adalah pencurian token npm melalui workflow GitHub Actions di repositori kolaboratif
- Penyerang menggunakan token npm dengan izin luas untuk menyebarkan kode berbahaya ke sekitar 20 paket, dan di antaranya @ctrl/tinycolor memiliki sekitar 2 juta unduhan per minggu sehingga dampaknya besar
- Versi yang terinfeksi menjalankan payload berbahaya pada tahap postinstall, dan tim keamanan GitHub serta npm merespons dengan cepat untuk melakukan penghapusan dan pembersihan
- Penulis menyiapkan rencana keamanan yang diperkuat untuk mencegah kejadian serupa, termasuk migrasi ke Trusted Publishing(OIDC), meminimalkan izin token, mewajibkan 2FA, dan memanfaatkan fitur pnpm
- Insiden ini menunjukkan kerentanan keamanan rantai pasok perangkat lunak dan menjadi contoh yang menegaskan perlunya peningkatan fitur keamanan serta perubahan praktik keamanan di seluruh ekosistem npm
TL;DR
- Sebuah workflow GitHub Actions berbahaya didorong ke repositori bersama dan mencuri token npm
- Dengan token tersebut, penyerang menyebarkan versi berbahaya dari 20 paket, dan @ctrl/tinycolor memiliki dampak besar karena jumlah unduhannya tinggi
- Akun pribadi maupun repositori tidak dibobol secara langsung, dan tidak ada phishing atau pemasangan malware lokal
- Berkat respons cepat tim keamanan GitHub/npm, versi berbahaya dihapus, lalu versi bersih diterbitkan ulang untuk membersihkan cache
Bagaimana insiden ini diketahui (How I Found Out)
- Pada sore hari 15 September, anggota komunitas Wes Todd memberi tahu masalah ini melalui DM Bluesky
- Tim keamanan GitHub/npm sudah lebih dulu menyusun daftar paket yang terdampak dan memulai tindakan penghapusan
- Sebagai petunjuk awal, nama branch berbahaya "Shai-Hulud" dibagikan; nama ini diambil dari sandworm dalam semesta Dune
Apa yang sebenarnya terjadi (What Actually Happened)
- Ada kolaborator yang masih memiliki hak admin di repositori angulartics2 yang pernah dikerjakan bersama sejak lama
- Token npm yang disimpan di repositori tersebut dicuri oleh workflow GitHub Actions berbahaya
- Dengan token ini, penyerang menerbitkan sekitar 20 paket termasuk @ctrl/tinycolor
- Tim keamanan GitHub/npm dengan cepat menghapus versi berbahaya, dan penulis menerbitkan ulang versi baru yang tepercaya
Dampak (Impact)
- Jika memasang versi berbahaya, skrip postinstall akan dijalankan dan menimbulkan ancaman keamanan
- Pengguna yang terdampak disarankan merujuk ke panduan respons segera dari StepSecurity
Lingkungan publikasi dan rencana penanganan (Publishing Setup & Interim Plan)
- Sebelumnya, publikasi otomatis dilakukan dengan kombinasi semantic-release + GitHub Actions
- Fitur npm provenance digunakan, tetapi tidak mampu menghentikan penyerang yang memiliki token valid
- Ke depan, ada rencana mengadopsi Trusted Publishing(OIDC) untuk menghapus token statis
- Saat ini semua token telah dicabut dan langkah keamanan tambahan sedang diterapkan, seperti mewajibkan 2FA, hanya mengizinkan token dengan izin granular, serta meninjau fitur minimumReleaseAge milik pnpm
Usulan perbaikan ideal (Publishing Wishlist)
- Perlu ada opsi untuk memaksa Trusted Publishing berbasis OIDC di tingkat akun npm
- Diperlukan fitur untuk memblokir publikasi saat provenance tidak ada, serta dukungan integrasi penuh semantic-release dengan OIDC
- Diharapkan GitHub UI menyediakan fitur publikasi dengan persetujuan manual berbasis 2FA
- Fitur perlindungan setingkat GitHub Environments seharusnya dapat digunakan tanpa langganan Pro
- Halaman paket npm perlu menampilkan apakah ada skrip postinstall dan mengungkap alasan versi yang dihapus
Belum ada komentar.