Pakej popular Stylus CSS preprocessor telah dikeluarkan secara mengejut dari NPM , menyebabkan gangguan meluas kepada pembangun yang bergantung pada alat ini untuk projek mereka. Pakej tersebut, yang mempunyai lebih 3.6 juta muat turun mingguan, telah digantikan dengan versi pemegang tempat keselamatan berlabel 0.0.1-security pada 23 Julai 2025.
Statistik Pakej Sebelum Penyingkiran:
- Muat Turun Mingguan: 3,628,473
- Jumlah Pakej Bergantung: 2,277 pakej
- Sejarah Pakej: Aktif sejak 2010 (15 tahun)
- Pengganti Semasa: 0.0.1-security (418 B, 2 fail)
Nasihat Keselamatan Tidak Jelas Menimbulkan Kekeliruan
NPM dan GitHub mengeluarkan nasihat keselamatan yang mendakwa semua versi Stylus mengandungi perisian hasad, bermula dari tahun 2010. Walau bagaimanapun, komuniti masih ragu-ragu mengenai dakwaan ini. Nasihat tersebut tidak memberikan butiran khusus mengenai kelemahan keselamatan yang didakwa, menyebabkan pembangun mempersoalkan sama ada ancaman itu benar atau ini mewakili tindak balas terlalu berhati-hati oleh sistem keselamatan automatik.
Masa pelaksanaannya juga menimbulkan kecurigaan. Pakej tersebut ditarik balik pada 03:03 UTC , dan GitHub Security Advisory diterbitkan hanya satu minit kemudian, menunjukkan tindak balas yang diselaraskan tetapi mungkin tergesa-gesa.
Penyelesaian Pembangun:
- Gantikan dengan versi keselamatan:
"overrides": {"stylus": "0.0.1-security"}
- Pasang dari GitHub:
"overrides": {"stylus": "github:stylus/stylus0.64.0"}
- Garis Masa: Pakej dikeluarkan 23 Julai 2025 pada 03:03 UTC, Nasihat dikeluarkan pada 03:03:56 UTC
Teori Kompromi Penyelenggara Muncul
Perbincangan komuniti menunjukkan kepada penjelasan yang lebih bernuansa. Bukti menunjukkan bahawa salah seorang penyelenggara lama, yang dikenali sebagai Ponya , mungkin telah mempunyai akaun mereka dikompromi dan terlibat dengan pakej-pakej mencurigakan lain. Daripada menyiasat setiap pakej secara individu, NPM nampaknya telah mengambil pendekatan nuklear, mengeluarkan semua pakej yang berkaitan dengan penyelenggara yang berpotensi dikompromi.
Nampaknya salah seorang penyelenggara lama telah menolak pakej-pakej lain yang dikompromi, jadi npm hanya memusnahkan semua pakej yang dia mempunyai akses, sama ada ia dikompromi atau tidak.
Teori ini mendapat kredibiliti apabila mempertimbangkan bahawa tiada keluaran hasad sebenar Stylus telah dikenal pasti, dan repositori GitHub kekal bersih dan tidak dikompromi.
Penyelesaian Sementara Pembangun dan Usaha Pemulihan
Sementara situasi ini berlangsung, pembangun telah menemui beberapa cara untuk terus menggunakan Stylus dalam projek mereka. Penyelesaian sementara yang paling popular melibatkan penggunaan overrides package.json untuk memasang terus dari repositori GitHub , memintas registri NPM sepenuhnya.
Penyelenggara semasa iChenLei dilaporkan sedang dalam rundingan dengan pegawai NPM untuk memulihkan akses yang betul kepada pakej tersebut. Pasukan Stylus mengekalkan bahawa kod asas mereka selamat dan bahawa insiden ini berpunca daripada kebimbangan keselamatan yang lebih luas dan bukannya kelemahan sebenar dalam perisian mereka.
Insiden ini menyerlahkan kerapuhan ekosistem JavaScript moden, di mana satu keputusan keselamatan boleh serta-merta merosakkan beribu-ribu projek yang bergantung pada pakej-pakej popular.
Rujukan: stylus