3 poin oleh GN⁺ 2025-08-29 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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 postinstall berbahaya 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

  1. Periksa daftar repositori di akun Github Anda untuk memastikan apakah s1ngularity-repository telah dibuat
  2. Unduh file yang ada di repositori tersebut untuk disimpan sebagai arsip
  3. Hapus repositori tersebut dari Github
  4. Kirim email ke security@nrwl.io untuk mendapatkan panduan cara mendekripsi informasi yang bocor
  5. 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 .zshrc dan .bashrc untuk 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.yml menyimpan 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 postinstall dari 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)

  • postinstall menyisipkan perintah sudo 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 install dijalankan 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 memasang nx@latest saat editor dijalankan, sehingga memicu eksekusi postinstall

  • Pada dasarnya, perlu diwaspadai bahwa pemasangan modul NPM dapat terjadi di banyak tempat meski tidak disengaja

  • Mulai Nx Console (18.66.0), proses pemasangan latest nx telah 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.yml dijalankan 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.js di 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.

Belum ada komentar.