Serangan terhadap NPM yang memungkinkan Anda menentukan keberadaan paket di repositori pribadi

Cacat telah diidentifikasi di NPM yang memungkinkan Anda mendeteksi keberadaan paket di repositori tertutup. Masalah ini disebabkan oleh waktu respons yang berbeda ketika meminta paket yang sudah ada dan yang tidak ada dari pihak ketiga yang tidak memiliki akses ke repositori. Jika tidak ada akses untuk paket apa pun di repositori pribadi, server registry.npmjs.org mengembalikan kesalahan dengan kode "404", tetapi jika paket dengan nama yang diminta ada, kesalahan dikeluarkan dengan penundaan yang nyata. Penyerang dapat menggunakan fitur ini untuk menentukan keberadaan suatu paket dengan mencari nama paket menggunakan kamus.

Menentukan nama paket di repositori pribadi mungkin diperlukan untuk melakukan serangan pencampuran ketergantungan yang memanipulasi perpotongan nama ketergantungan di repositori publik dan internal. Mengetahui paket NPM internal mana yang ada di repositori perusahaan, penyerang dapat menempatkan paket dengan nama yang sama dan nomor versi yang lebih baru di repositori NPM publik. Jika selama perakitan perpustakaan internal tidak secara eksplisit ditautkan ke repositori mereka dalam pengaturan, manajer paket npm akan menganggap repositori publik sebagai prioritas yang lebih tinggi dan akan mengunduh paket yang disiapkan oleh penyerang.

GitHub diberitahu tentang masalah ini pada bulan Maret tetapi menolak menambahkan perlindungan terhadap serangan tersebut, dengan alasan keterbatasan arsitektur. Perusahaan yang menggunakan repositori pribadi disarankan untuk secara berkala memeriksa kemunculan nama yang tumpang tindih di repositori publik atau membuat stub atas nama mereka dengan nama yang mengulangi nama paket di repositori pribadi, sehingga penyerang tidak dapat menempatkan paket mereka dengan nama yang tumpang tindih.

Sumber: opennet.ru

Tambah komentar