Kerentanan dalam pakej NPM nod-netmask yang digunakan dalam 270 ribu projek

Pakej NPM node-netmask, yang mempunyai kira-kira 3 juta muat turun setiap minggu dan digunakan sebagai pergantungan pada lebih daripada 270 ribu projek pada GitHub, mempunyai kelemahan (CVE-2021-28918) yang membolehkannya memintas semakan yang menggunakan netmask untuk menentukan kejadian untuk menangani julat atau untuk penapisan. Isu ini telah dibetulkan dalam keluaran nod-netmask 2.0.0.

Kerentanan memungkinkan untuk menganggap alamat IP luaran sebagai alamat dari rangkaian dalaman dan sebaliknya, dan dengan logik tertentu menggunakan modul nod-netmask dalam aplikasi untuk menjalankan SSRF (Pemalsuan permintaan sisi pelayan), RFI (Pemasukan Fail Jauh) dan serangan LFI (Pemasukan Fail Tempatan) ) untuk mengakses sumber pada rangkaian dalaman dan memasukkan fail luaran atau tempatan dalam rantaian pelaksanaan. Masalahnya ialah mengikut spesifikasi, nilai rentetan alamat yang bermula dengan sifar harus ditafsirkan sebagai nombor perlapanan, tetapi modul nod-netmask tidak mengambil kira ini dan menganggapnya sebagai nombor perpuluhan.

Sebagai contoh, penyerang boleh meminta sumber tempatan dengan menyatakan nilai "0177.0.0.1", yang sepadan dengan "127.0.0.1", tetapi modul "nod-netmask" akan membuang null dan menganggap 0177.0.0.1β€³ sebagai " 177.0.0.1", yang dalam aplikasi semasa menilai peraturan akses, tidak mungkin untuk menentukan identiti dengan "127.0.0.1". Begitu juga, penyerang boleh menentukan alamat "0127.0.0.1", yang sepatutnya sama dengan "87.0.0.1", tetapi akan dianggap sebagai "127.0.0.1" dalam modul "nod-netmask". Begitu juga, anda boleh memintas semakan untuk akses kepada alamat intranet dengan menentukan nilai seperti "012.0.0.1" (bersamaan dengan "10.0.0.1", tetapi akan diproses sebagai 12.0.0.1 semasa semakan).

Para penyelidik yang mengenal pasti masalah itu memanggil masalah itu bencana dan menyediakan beberapa senario serangan, tetapi kebanyakannya kelihatan spekulatif. Sebagai contoh, ia bercakap tentang kemungkinan menyerang aplikasi berasaskan Node.js yang mewujudkan sambungan luaran untuk meminta sumber berdasarkan parameter atau data permintaan input, tetapi aplikasi itu tidak dinamakan atau diperincikan secara khusus. Walaupun anda menjumpai aplikasi yang memuatkan sumber berdasarkan alamat IP yang dimasukkan, tidak sepenuhnya jelas bagaimana kelemahan itu boleh dieksploitasi dalam amalan tanpa menyambung ke rangkaian tempatan atau tanpa mendapat kawalan ke atas alamat IP "cermin".

Para penyelidik hanya menganggap bahawa pemilik 87.0.0.1 (Telecom Italia) dan 0177.0.0.1 (Brasil Telecom) dapat memintas sekatan akses kepada 127.0.0.1. Senario yang lebih realistik adalah untuk mengeksploitasi kelemahan untuk memintas pelbagai senarai blok sebelah aplikasi. Isu ini juga boleh digunakan untuk berkongsi definisi julat intranet dalam modul NPM "ip peribadi".

Sumber: opennet.ru

Tambah komen