Serangan Rantaian Bekalan NPM Berterusan Walaupun Di Bawah Pemilikan Microsoft, Pembangun Menuntut Langkah Keselamatan Yang Lebih Baik

Pasukan Komuniti BigGo
Serangan Rantaian Bekalan NPM Berterusan Walaupun Di Bawah Pemilikan Microsoft, Pembangun Menuntut Langkah Keselamatan Yang Lebih Baik

Komuniti pembangun JavaScript sekali lagi bergelut dengan serangan rantaian bekalan yang menyasarkan pengurus pakej NPM, menimbulkan persoalan serius tentang keselamatan repositori kod terbesar di dunia. Insiden terkini telah menjejaskan pakej popular yang digunakan oleh ribuan pembangun setiap hari, mencuri data sensitif termasuk kunci AWS dan token pengesahan.

Peranan Microsoft Di Bawah Penelitian

Sejak Microsoft memperoleh NPM melalui GitHub pada tahun 2020, gergasi teknologi ini telah menghadapi kritikan yang semakin meningkat kerana gagal menangani kelemahan keselamatan asas. Syarikat itu kini mengawal keseluruhan ekosistem JavaScript - dari repositori kod ( GitHub ) hingga pengedaran pakej ( NPM ) dan persekitaran pembangunan utama ( VS Code ). Walaupun mempunyai sumber kewangan yang besar dan sumber yang luas, Microsoft telah membuat kemajuan yang minimum dalam mengamankan platform daripada pelaku berniat jahat.

Isu teras terletak pada keputusan reka bentuk NPM yang dibuat lebih sedekad yang lalu. Ciri-ciri seperti skrip postinstall dan npx membenarkan pakej melaksanakan kod sewenang-wenangnya semasa pemasangan, mewujudkan vektor serangan yang mudah. Apabila digabungkan dengan budaya kemas kini agresif NPM dan kecenderungan ekosistem untuk memasukkan beratus-ratus atau beribu-ribu kebergantungan, permukaan serangan menjadi sangat besar.

Kelemahan Keselamatan Utama dalam NPM

  • Skrip Postinstall: Membenarkan pelaksanaan kod sewenang-wenangnya semasa pemasangan pakej
  • Alat NPX: Boleh menjalankan mana-mana modul dari mana-mana sumber web tanpa interaksi pengguna
  • Kemas Kini Automatik: Budaya naik taraf yang agresif dengan julat semver (^) secara lalai
  • Tiada Tandatangan Kod: Pakej tidak ditandatangani atau disahkan secara kriptografi
  • Keperluan 2FA Lemah: Hanya 100 pakej teratas memerlukan pengesahan dua faktor

Bantahan Komuniti dan Penyelesaian Yang Dicadangkan

Pembangun semakin kecewa dengan kekurangan penambahbaikan keselamatan yang bermakna. Ramai yang menunjuk kepada pengurus pakej alternatif seperti pnpm, yang melumpuhkan skrip pasca-pemasangan secara lalai dan memasukkan ciri seperti dasar umur pelepasan minimum untuk melambatkan kemas kini automatik pakej yang baru diterbitkan.

Alat yang kami gunakan untuk membina perisian tidak selamat secara lalai, dan hampir sepanjang masa, syarikat yang menyediakannya tidak dipertanggungjawabkan untuk keselamatan produk mereka.

Pakar keselamatan mencadangkan beberapa penambahbaikan segera: pengesahan dua faktor mandatori untuk semua penyelenggara pakej, keperluan tandatangan kod, dan pengimbasan automatik untuk kandungan berniat jahat sebelum penerbitan. Sesetengah pembangun telah melaksanakan langkah perlindungan mereka sendiri, termasuk penyematan kebergantungan, pemasangan kotak pasir, dan semakan kod manual untuk kemas kini.

Langkah Keselamatan Yang Disyorkan

  • Gunakan pnpm sebagai ganti npm untuk keselamatan lalai yang lebih baik
  • Tetapkan versi tepat sebagai ganti menggunakan julat semver
  • Laksanakan tempoh penyejukan untuk versi pakej baharu (24-72 jam)
  • Pemasangan kotak pasir menggunakan alat seperti bubblewrap pada Linux
  • Semakan kebergantungan manual untuk projek kritikal
  • Gunakan npm audit dan alat pengimbasan kebergantungan secara berkala

Masalah Ekosistem Yang Lebih Luas

Krisis keselamatan NPM mencerminkan isu yang lebih mendalam dalam model perisian sumber terbuka. Syarikat Fortune 500 sangat bergantung pada perisian percuma yang diselenggara oleh sukarelawan yang tidak dibayar, namun menyumbang sedikit kembali kepada projek kritikal ini. Ini mewujudkan situasi yang tidak mampan di mana infrastruktur penting kekurangan pengawasan keselamatan yang betul.

Tidak seperti pengurus pakej lain yang telah melaksanakan langkah keselamatan - PyPI mempunyai pengesahan dan penerbit dipercayai, Ruby mempunyai permata bertandatangan sejak versi 2 - NPM telah membincangkan tandatangan pakej sejak 2013 dengan sedikit kemajuan konkrit. Populariti platform ini menjadikannya sasaran yang menarik, tetapi falsafah reka bentuknya mengutamakan kemudahan penggunaan berbanding keselamatan.

Pengurus Pakej Alternatif dengan Keselamatan yang Lebih Baik

Pengurus Pakej Ciri-ciri Keselamatan
pnpm Melumpuhkan skrip postinstall secara lalai, dasar umur keluaran minimum
PyPI Sokongan pengesahan, sistem penerbit yang dipercayai
RubyGems Gem yang ditandatangani sejak versi 2
Maven Proses kelulusan undang-undang, kemas kini yang diteliti dalam perusahaan

Memandang Ke Hadapan

Apabila serangan rantaian bekalan menjadi lebih canggih dan kerap, komuniti JavaScript menghadapi titik keputusan kritikal. Sesetengah pembangun menyokong langkah keselamatan yang lebih ketat walaupun ia merumitkan proses pembangunan, manakala yang lain menentang perubahan yang mungkin memperlahankan budaya lelaran pantas yang telah menentukan pembangunan JavaScript.

Situasi semasa menyerlahkan keperluan untuk perubahan seluruh industri kepada keselamatan rantaian bekalan perisian. Tanpa tindakan yang diselaraskan daripada pemilik platform, penyelenggara pakej, dan organisasi pengguna, serangan ini berkemungkinan akan terus meningkat dalam kekerapan dan kecanggihan.

Rujukan: Oh no, not again... a meditation on NPM supply chain attacks