Kerentanan dina pakét NPM node-netmask dipaké dina 270 rébu proyék

Paket NPM node-netmask, anu ngagaduhan sakitar 3 juta undeuran per minggu sareng dianggo salaku kagumantungan kana langkung ti 270 rébu proyék di GitHub, gaduh kerentanan (CVE-2021-28918) anu ngamungkinkeun pikeun ngaliwat cek anu nganggo netmask. pikeun nangtukeun kajadian pikeun alamat rentang atawa pikeun nyaring. Masalahna dibereskeun dina sékrési node-netmask 2.0.0.

Kerentanan ngamungkinkeun pikeun ngubaran alamat IP éksternal salaku alamat tina jaringan internal sareng sabalikna, sareng kalayan logika anu tangtu ngagunakeun modul node-netmask dina aplikasi pikeun ngalaksanakeun SSRF (pemalsuan pamundut sisi server), RFI (Remote File Inclusion) jeung LFI (Local File Inclusion) serangan ) pikeun ngakses sumberdaya dina jaringan internal tur ngawengku file éksternal atawa lokal dina ranté palaksanaan. Masalahna nyaéta numutkeun spésifikasi, nilai string alamat anu dimimitian ku nol kedah diinterpretasi salaku angka octal, tapi modul node-netmask henteu nganggap ieu sareng ngarawatna salaku angka decimal.

Salaku conto, panyerang tiasa nyuhunkeun sumber daya lokal ku netepkeun nilai "0177.0.0.1", anu pakait sareng "127.0.0.1", tapi modul "node-netmask" bakal miceun null, sareng ngubaran 0177.0.0.1″ salaku " 177.0.0.1", anu dina aplikasi nalika ngevaluasi aturan aksés, moal mungkin pikeun nangtukeun identitas sareng "127.0.0.1". Nya kitu, panyerang bisa nangtukeun alamat "0127.0.0.1", nu kudu sarua jeung "87.0.0.1", tapi bakal dianggap salaku "127.0.0.1" dina modul "node-netmask". Nya kitu, anjeun tiasa curang cek pikeun aksés ka alamat intranet ku netepkeun nilai sapertos "012.0.0.1" (sarua sareng "10.0.0.1", tapi bakal diolah janten 12.0.0.1 salami dipariksa).

Panaliti anu ngaidentipikasi masalahna nyauran masalah éta bencana sareng nyayogikeun sababaraha skenario serangan, tapi kalolobaanana katingalina spekulatif. Contona, ngobrol ngeunaan kamungkinan serangan aplikasi basis Node.js nu ngadegkeun sambungan éksternal pikeun ménta sumberdaya dumasar kana parameter atawa data tina pamundut input, tapi aplikasi nu teu husus ngaranna atawa rinci. Sanaos anjeun mendakan aplikasi anu ngamuat sumber dumasar kana alamat IP anu diasupkeun, éta henteu écés pisan kumaha kerentanan tiasa dieksploitasi dina prakna tanpa nyambung ka jaringan lokal atanapi tanpa gaduh kadali alamat IP "mirror".

Para panalungtik ngan nganggap yen nu boga 87.0.0.1 (Telecom Italia) jeung 0177.0.0.1 (Brasil Telecom) bisa bypass larangan aksés ka 127.0.0.1. Skenario anu langkung realistis nyaéta ngamangpaatkeun kerentanan pikeun ngalangkungan rupa-rupa daptar blok sisi aplikasi. Masalahna ogé tiasa diterapkeun pikeun ngabagi definisi rentang intranet dina modul NPM "private-ip".

sumber: opennet.ru

Tambahkeun komentar