Ievainojamība mezgla tīkla maskas NPM pakotnē, kas izmantota 270 tūkstošos projektu

Node-netmask NPM pakotnei, kuru nedēļā lejupielādē apmēram 3 miljoni un kas tiek izmantota kā atkarība no vairāk nekā 270 tūkstošiem projektu GitHub tīklā, ir ievainojamība (CVE-2021-28918), kas ļauj apiet pārbaudes, kurās tiek izmantota tīkla maska. lai noteiktu adrešu diapazonu vai filtrēšanas gadījumu. Problēma ir novērsta node-netmask 2.0.0 laidienā.

Ievainojamība ļauj apstrādāt ārējo IP adresi kā adresi no iekšējā tīkla un otrādi, kā arī ar noteiktu mezgla tīkla maskas moduļa izmantošanas loģiku lietojumprogrammā, lai veiktu SSRF (Server-side request forgery), RFI. (Remote File Inclusion) un LFI (Local File Inclusion) uzbrukumi ), lai piekļūtu resursiem iekšējā tīklā un iekļautu ārējos vai vietējos failus izpildes ķēdē. Problēma ir tāda, ka saskaņā ar specifikāciju adrešu virknes vērtības, kas sākas ar nulli, ir jāinterpretē kā oktālie skaitļi, bet mezgla tīkla maskas modulis to neņem vērā un apstrādā tos kā decimālskaitļus.

Piemēram, uzbrucējs var pieprasīt vietējo resursu, norādot vērtību "0177.0.0.1", kas atbilst "127.0.0.1", bet modulis "node-netmask" atmetīs nulli un apstrādās 0177.0.0.1 kā " 177.0.0.1", kura aplikācijā, izvērtējot piekļuves noteikumus, nevarēs noteikt identitāti ar "127.0.0.1". Tāpat uzbrucējs var norādīt adresi “0127.0.0.1”, kurai jābūt identiskai ar “87.0.0.1”, bet modulī “node-netmask” tā tiks uzskatīta par “127.0.0.1”. Tāpat varat apkrāpt pārbaudi par piekļuvi iekštīkla adresēm, norādot tādas vērtības kā “012.0.0.1” (atbilst “10.0.0.1”, bet pārbaudes laikā tiks apstrādāta kā 12.0.0.1).

Pētnieki, kas identificēja problēmu, sauc problēmu par katastrofālu un sniedz vairākus uzbrukuma scenārijus, taču lielākā daļa no tiem izskatās spekulatīvi. Piemēram, tas runā par iespēju uzbrukt uz Node.js balstītai lietojumprogrammai, kas izveido ārējos savienojumus, lai pieprasītu resursu, pamatojoties uz ievades pieprasījuma parametriem vai datiem, bet lietojumprogramma nav īpaši nosaukta vai detalizēta. Pat ja atrodat lietojumprogrammas, kas ielādē resursus, pamatojoties uz ievadītajām IP adresēm, nav līdz galam skaidrs, kā praksē var izmantot ievainojamību, nepieslēdzoties lokālajam tīklam vai neiegūstot kontroli pār “spoguļa” IP adresēm.

Pētnieki tikai pieņem, ka 87.0.0.1 (Telecom Italia) un 0177.0.0.1 (Brasil Telecom) īpašnieki var apiet piekļuves ierobežojumu līdz 127.0.0.1. Reālāks scenārijs ir izmantot ievainojamību, lai apietu dažādus lietojumprogrammu puses bloku sarakstus. Problēmu var attiecināt arī uz iekštīkla diapazonu definīcijas kopīgošanu NPM modulī "private-ip".

Avots: opennet.ru

Pievieno komentāru