Serangan ke atas NPM yang membolehkan anda menentukan kehadiran pakej dalam repositori peribadi

Satu kecacatan telah dikenal pasti dalam NPM yang membolehkan anda mengesan kewujudan pakej dalam repositori tertutup. Isu ini disebabkan oleh masa respons yang berbeza apabila meminta pakej sedia ada dan tidak sedia ada daripada pihak ketiga yang tidak mempunyai akses kepada repositori. Jika tiada akses untuk mana-mana pakej dalam repositori peribadi, pelayan registry.npmjs.org mengembalikan ralat dengan kod "404", tetapi jika pakej dengan nama yang diminta wujud, ralat itu dikeluarkan dengan kelewatan yang ketara. Penyerang boleh menggunakan ciri ini untuk menentukan kehadiran pakej dengan mencari nama pakej menggunakan kamus.

Menentukan nama pakej dalam repositori peribadi mungkin diperlukan untuk melakukan serangan pencampuran kebergantungan yang memanipulasi persilangan nama kebergantungan dalam repositori awam dan dalaman. Mengetahui pakej NPM dalaman yang mana terdapat dalam repositori korporat, penyerang boleh meletakkan pakej dengan nama yang sama dan nombor versi yang lebih baharu dalam repositori NPM awam. Jika semasa pemasangan perpustakaan dalaman tidak dipautkan secara eksplisit kepada repositori mereka dalam tetapan, pengurus pakej npm akan menganggap repositori awam sebagai keutamaan yang lebih tinggi dan akan memuat turun pakej yang disediakan oleh penyerang.

GitHub telah dimaklumkan tentang masalah itu pada bulan Mac tetapi enggan menambah perlindungan terhadap serangan itu, memetik batasan seni bina. Syarikat yang menggunakan repositori persendirian disyorkan untuk menyemak secara berkala kemunculan nama bertindih dalam repositori awam atau membuat stub bagi pihak mereka dengan nama yang mengulangi nama pakej dalam repositori persendirian, supaya penyerang tidak boleh meletakkan pakej mereka dengan nama bertindih.

Sumber: opennet.ru

Tambah komen