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

Satu kelemahan (CVE-2021-28918) telah ditemui dalam pakej NPM node-netmask, yang dimuat turun kira-kira 3 juta kali seminggu dan digunakan sebagai kebergantungan oleh lebih 270 projek GitHub. Kelemahan ini membolehkan pemeriksaan yang menggunakan netmask memintas untuk menentukan sama ada alamat rangkaian berada dalam julat atau untuk penapisan telah dibetulkan. Isu ini telah dibetulkan dalam node-netmask 2.0.0.

Kerentanan ini membolehkan alamat IP luaran diproses sebagai alamat rangkaian dalaman dan sebaliknya. Di bawah logik aplikasi tertentu, modul nod-netmask boleh digunakan untuk melakukan serangan SSRF (pemalsuan permintaan bahagian pelayan), RFI (Rangkuman Fail Jauh), dan LFI (Rangkuman Fail Tempatan) untuk mengakses sumber rangkaian dalaman dan memasukkan fail luaran atau setempat dalam rantaian pelaksanaan. Masalahnya ialah, mengikut spesifikasi, nilai rentetan alamat bermula dengan sifar harus ditafsirkan sebagai nombor oktal, tetapi modul nod-netmask mengabaikannya dan memprosesnya sebagai nombor perpuluhan.

Contohnya, penyerang boleh meminta sumber setempat dengan menyatakan nilai "0177.0.0.1", yang sepadan dengan "127.0.0.1", tetapi modul "node-netmask" akan membuang sifar dan memproses 0177.0.0.1 sebagai "177.0.0.1", yang akan menghalang aplikasi daripada menentukan kesamaannya dengan "127.0.0.1" semasa menilai peraturan akses. Begitu juga, penyerang boleh menyatakan alamat "0127.0.0.1", yang sepatutnya sama dengan "87.0.0.1", tetapi akan diproses sebagai "127.0.0.1" oleh modul "node-netmask". Begitu juga, adalah mungkin untuk memintas pemeriksaan akses untuk alamat intranet dengan menyatakan nilai seperti "012.0.0.1" (bersamaan dengan "10.0.0.1", tetapi akan diproses sebagai 12.0.0.1 semasa pemeriksaan).

Para penyelidik yang mengenal pasti masalah tersebut menggelarnya sebagai bencana dan memetik beberapa senario serangan, tetapi kebanyakannya kelihatan spekulatif. Contohnya, mereka menyebut kemungkinan menyerang aplikasi berasaskan Node.js yang mewujudkan sambungan luaran untuk meminta sumber berdasarkan parameter atau data permintaan input, tetapi mereka tidak menamakan aplikasi tertentu atau memberikan sebarang butiran. Walaupun mereka menemui aplikasi yang memuat turun sumber berdasarkan input, Alamat IP, tidak begitu jelas bagaimana kerentanan ini boleh dieksploitasi dalam praktik tanpa menyambung ke rangkaian tempatan atau tanpa mendapat kawalan ke atas alamat IP "dicerminkan".

Penyelidik hanya membuat spekulasi 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 ialah kerentanan yang digunakan untuk memintas pelbagai senarai sekatan yang dilaksanakan pada bahagian aplikasi. Isu ini juga boleh dieksploitasi untuk menukar definisi julat intranet dalam modul NPM "private-ip".

Sumber: opennet.ru

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster