- Versi berbahaya dari paket Nx dan plugin telah didistribusikan ke npm, memindai sistem file, mengumpulkan kredensial, lalu mengirimkannya ke repositori akun Github milik pengguna
- Untuk memeriksa apakah terdampak, perlu memastikan apakah repositori s1ngularity-repository telah dibuat di akun Github
- Jika terinfeksi, mengganti token dan kata sandi, menghapus repositori berbahaya, serta memeriksa file konfigurasi shell wajib dilakukan
- Versi berbahaya memengaruhi sistem melalui skrip postinstall; risikonya meningkat karena dapat dijalankan tanpa disadari, terutama saat memakai plugin VSCode Nx Console
- Pihak Nx telah menerapkan pencegahan kekambuhan dan langkah keamanan tambahan, dan versi terkait telah dihapus dari npm
Gambaran umum dan ringkasan
- Peringatan keamanan ini terkait serangan supply chain serius terhadap paket Nx dan beberapa plugin terkait, dengan kode berbahaya didistribusikan melalui npm
- Versi berbahaya tersebut memindai sistem file pengguna untuk mengumpulkan informasi autentikasi, path, dan lainnya, lalu mengunggahnya ke repositori Github (
s1ngularity-repository) - Skrip
postinstallberbahaya juga memodifikasi file konfigurasi shell pengguna (.zshrc,.bashrc) dengan menambahkan perintah mematikan sistem - Vektor serangan, proses serangan, versi yang terdampak, tindakan segera yang harus diambil pengguna, serta langkah pencegahan agar tidak terulang dijelaskan secara rinci
Langkah darurat
Hal yang harus diperiksa semua orang
- Periksa daftar repositori di akun Github Anda untuk memastikan apakah
s1ngularity-repositorytelah dibuat - Unduh file yang ada di repositori tersebut untuk disimpan sebagai arsip
- Hapus repositori tersebut dari Github
- Kirim email ke
security@nrwl.iountuk mendapatkan panduan cara mendekripsi informasi yang bocor - Segera ganti semua kredensial dan token untuk seluruh akun
Cara mengganti token Github
- Kunjungi https://github.com/settings/connections/…
- Cabut akses aplikasi yang terhubung untuk menonaktifkan token lama
- Jika menggunakan gh CLI, lakukan autentikasi ulang untuk membuat token baru
- Jika tidak ditindaklanjuti, token lama berisiko disalahgunakan
Hentikan penggunaan versi Nx berbahaya dan lakukan pembersihan
- Periksa apakah versi Nx yang sedang digunakan adalah versi berbahaya dengan perintah
npm ls nx - Jika termasuk versi terinfeksi, lakukan pembaruan dengan
npm uninstall nx && npm install nx@latest - Bersihkan cache dengan
npm cache clean --force
Pengguna yang sudah terinfeksi
- Ganti token npm dan Github
- Reset seluruh kata sandi dan kredensial Github serta layanan terkait
- Periksa file
.zshrcdan.bashrcuntuk memastikan tidak ada perintah asing yang disisipkan, lalu hapus
Untuk administrator repositori paket internal
- Segera hapus versi berbahaya dari proxy di registry internal perusahaan untuk mencegah penyebaran lebih lanjut
Informasi versi yang terdampak
Paket Nx
21.5.0,20.9.0,20.10.0,21.6.0,20.11.0,21.7.0,21.8.0,20.12.0- Sudah dihapus dari npm per pukul 10:44 PM EDT
@nx/devkit, @nx/js, @nx/workspace, @nx/node, @nx/eslint, @nx/key, @nx/enterprise-cloud
- Sudah dihapus dari npm per pukul 10:44 PM dan 6:20 AM EDT
Rincian vektor serangan
Penyebab workflow yang rentan
- Kerentanan yang memungkinkan eksekusi kode arbitrer diperkenalkan ke workflow Github Actions
- Jika kode bash tertentu disisipkan ke judul PR, kerentanan di workflow memungkinkan perintah sistem dijalankan (Bash Injection)
- Disalahgunakan melalui trigger
pull_request_target, sehingga memperoleh hak istimewa yang lebih tinggi (GITHUB_TOKEN, dll.) - Sampai dihapus, workflow rentan tetap ada di branch lama selain
main, sehingga penyerang berhasil menjalankan workflow dengan PR berbahaya dan mencuri secret
Proses pencurian token npm
- Workflow rentan dimanfaatkan untuk menjalankan
publish.yml publish.ymlmenyimpan token npm di Github Secrets, dan dalam prosesnya token dikirim ke webhook eksternal- Pada akhirnya penyerang menggunakan token ini untuk mengunggah versi berbahaya dari Nx dan paket pendukung ke npm
Perilaku paket berbahaya
Mengumpulkan informasi termasuk kredensial dan memublikasikannya ke repositori Github
- Saat skrip
postinstalldari paket Nx yang terinfeksi dijalankan, berbagai lokasi file teks dan informasi kredensial dikumpulkan - Data di-encode dalam base64 lalu diunggah ke repositori Github bernama
s1ngularity-repository - Walaupun repositori aslinya telah dihapus, karena sebelumnya sempat bersifat publik, kemungkinan kebocoran informasi tetap harus dipertimbangkan
Modifikasi profil shell (.zshrc, .bashrc)
postinstallmenyisipkan perintahsudo shutdown -h 0, yang dapat memicu sistem mati saat terminal dijalankan dan berpotensi mengekspos kata sandi
Berbagai skenario saat postinstall dapat berjalan
-
Selain saat
npm install/yarn/pnpm installdijalankan secara eksplisit, ini juga dapat berjalan dalam berbagai situasi seperti dependensi transitif, ekstensi editor, dan eksekusi skrip -
Khususnya, ekstensi Nx Console untuk VSCode (versi
18.6.30~18.65.1) dapat secara otomatis memasangnx@latestsaat editor dijalankan, sehingga memicu eksekusipostinstall -
Pada dasarnya, perlu diwaspadai bahwa pemasangan modul NPM dapat terjadi di banyak tempat meski tidak disengaja
-
Mulai
Nx Console (18.66.0), proses pemasanganlatest nxtelah dihapus
Linimasa serangan dan respons
21 Agustus
- 4:31 PM: PR yang berisi kerentanan Bash injection di-merge
- 10:48 PM: Postingan yang menunjukkan kerentanan dipublikasikan di X (sebelumnya Twitter)
22 Agustus
- Sore hari: investigasi internal, rollback workflow rentan (tidak lengkap)
- Penerapan CodeQL untuk mendeteksi kerentanan serupa pada PR di masa depan
24 Agustus
- Muncul commit di fork penyerang yang menunjukkan indikasi kebocoran token npm
- PR berbahaya dibuat lalu dihapus, dan
publish.ymldijalankan oleh PR ini
26 ~ 27 Agustus (distribusi versi berbahaya dan respons)
- Banyak versi berbahaya Nx dan plugin didistribusikan ke npm secara bertahap
- Isu dilaporkan ke komunitas Github/NPM
- 10:44 PM: Pihak NPM mengambil tindakan termasuk menghapus seluruh versi terkait
- 11:57 PM: Semua token untuk publikasi paket terkait Nx dinonaktifkan
- 27 Agustus: Patch Nx Console, 2FA, peralihan ke metode Trusted Publisher, dan langkah tambahan lainnya
Tindakan pencegahan sebelumnya dan respons lanjutan
- 2FA diwajibkan bagi semua maintainer di organisasi
nrwl - Menerapkan mekanisme Trusted Publisher. Distribusi berbasis token npm dilarang
- Ke depannya, paket hanya akan dirilis setelah melalui verifikasi berbasis kepercayaan dan 2FA
- Deteksi risiko tambahan, persetujuan PR, perlindungan branch, dan langkah bertahap lainnya juga diterapkan
Pelajaran dan rencana ke depan
- Kembali menyadarkan pentingnya supply chain, pipeline CI/CD, dan prinsip minimisasi izin workflow baik secara lokal maupun global
- Setelah ditinjau ulang secara internal, tim berencana membagikan pembelajaran ini kepada komunitas
Pertanyaan
- Dapat menghubungi
security@nrwl.io
Referensi dan lampiran
- Isu utama Github, linimasa, dan postingan terkait
- Menyediakan contoh skrip
telemetry.jsdi dalam paket yang terinfeksi - Skrip ini mengumpulkan path file teks penting dalam sistem file untuk tujuan pembuatan inventaris
Ringkasan kesimpulan
- Penting untuk segera menerapkan pembaruan dan patch terbaru untuk Nx dan plugin terkait
- Sangat disarankan untuk segera mengganti informasi autentikasi penting seperti npm dan Github
- Insiden ini menjadi pengingat bahwa lemahnya keamanan supply chain dan pengelolaan izin workflow dapat berujung pada insiden besar
Belum ada komentar.