Eksperimen dengan mencipta pakej NPM yang bergantung pada semua pakej dalam repositori

Salah seorang pembangun pakej JavaScript bereksperimen dengan mencipta dan meletakkan dalam repositori NPM pakej "semuanya", yang meliputi semua pakej sedia ada dalam repositori dengan kebergantungan. Untuk melaksanakan ciri ini, pakej "semuanya" mempunyai kebergantungan langsung dengan lima pakej "@everything-registry/chunk-N", yang seterusnya mempunyai kebergantungan pada lebih daripada 3000 pakej "sub-chunk-N", setiap satunya terikat kepada 800 pakej sedia ada dalam repositori.

Meletakkan "semuanya" dalam NPM mempunyai dua kesan yang menarik. Pertama, pakej "semuanya" telah menjadi sejenis alat untuk melakukan serangan DoS, kerana percubaan untuk memasangnya membawa kepada memuat turun berjuta-juta pakej yang dihoskan dalam NPM dan meletihkan ruang cakera yang tersedia atau menghentikan pelaksanaan proses binaan. Menurut statistik NPM, pakej itu telah dimuat turun kira-kira 250 kali, tetapi tiada siapa yang mengganggu untuk menambahkannya sebagai pergantungan kepada pakej lain selepas akaun pemaju digodam untuk melakukan sabotaj. Selain itu, beberapa perkhidmatan dan alatan yang memantau dan menyemak pakej baharu yang dihoskan oleh NPM terdedah kepada serangan tanpa disedari.

Kedua, menerbitkan pakej "semuanya" dengan berkesan menyekat keupayaan untuk mengalih keluar sebarang pakej dalam NPM yang berakhir dalam senarai kebergantungannya. Pakej dari NPM boleh dialih keluar oleh pengarang hanya jika ia belum digunakan dalam kebergantungan pakej lain, tetapi selepas penerbitan "semuanya" kebergantungan ternyata meliputi semua pakej dalam repositori. Perlu diperhatikan bahawa penyingkiran pakej "segala-galanya" itu sendiri juga disekat, sejak 9 tahun yang lalu pakej ujian "segala-galanya" telah disiarkan dalam repositori, yang termasuk rentetan "segala-galanya" dalam senarai kebergantungan. Oleh itu, selepas diterbitkan, pakej "segala-galanya" akhirnya bergantung pada pakej lain.

Sumber: opennet.ru

Tambah komen