Node-netmask NPM -paketin haavoittuvuus, jota käytettiin 270 tuhannessa projektissa

Node-netmask NPM-paketti, jolla on noin 3 miljoonaa latausta viikossa ja jota käytetään riippuvuutena yli 270 2021 GitHub-projektista, sisältää haavoittuvuuden (CVE-28918-2.0.0), jonka avulla se voi ohittaa verkkopeitettä käyttävät tarkistukset. määrittääksesi esiintymisen osoitealueille tai suodatukselle. Ongelma on korjattu node-netmask XNUMX:n julkaisussa.

Haavoittuvuus mahdollistaa ulkoisen IP-osoitteen käsittelemisen osoitteena sisäisestä verkosta ja päinvastoin sekä tietyllä logiikalla käyttää sovelluksessa solmuverkkomaskimoduulia SSRF:n (Server-side request forgery), RFI:n suorittamiseen. (Remote File Inclusion) ja LFI (Local File Inclusion) -hyökkäykset) päästäkseen sisäisen verkon resursseihin ja sisällyttääkseen ulkoiset tai paikalliset tiedostot suoritusketjuun. Ongelmana on, että spesifikaation mukaan nollalla alkavat osoitemerkkijonoarvot tulee tulkita oktaaliluvuiksi, mutta solmu-verkkomask-moduuli ei ota tätä huomioon ja käsittelee niitä desimaalilukuina.

Hyökkääjä voi esimerkiksi pyytää paikallista resurssia määrittämällä arvon "0177.0.0.1", joka vastaa arvoa "127.0.0.1", mutta "node-netmask"-moduuli hylkää nolla-arvon ja käsittelee 0177.0.0.1-arvona " 177.0.0.1", joka sovelluksessa pääsysääntöjä arvioitaessa ei ole mahdollista määrittää identiteettiä "127.0.0.1":llä. Vastaavasti hyökkääjä voi määrittää osoitteen "0127.0.0.1", jonka pitäisi olla identtinen "87.0.0.1" kanssa, mutta sitä käsitellään "127.0.0.1" -moduulissa "solmuverkkopeite". Vastaavasti voit huijata intranet-osoitteisiin pääsyn tarkistuksen määrittämällä arvot, kuten "012.0.0.1" (vastaa "10.0.0.1", mutta se käsitellään 12.0.0.1 tarkistuksen aikana).

Ongelman tunnistaneet tutkijat kutsuvat ongelmaa katastrofaalisiksi ja tarjoavat useita hyökkäysskenaarioita, mutta useimmat niistä näyttävät spekulatiivisilta. Siinä puhutaan esimerkiksi mahdollisuudesta hyökätä Node.js-pohjaiseen sovellukseen, joka muodostaa ulkoisia yhteyksiä pyytääkseen resurssia syöttöpyynnön parametrien tai tietojen perusteella, mutta sovellusta ei ole nimenomaisesti nimetty tai kuvattu. Vaikka löydätkin sovelluksia, jotka lataavat resursseja syötettyjen IP-osoitteiden perusteella, ei ole täysin selvää, kuinka haavoittuvuutta voidaan käytännössä hyödyntää ilman yhteyttä paikalliseen verkkoon tai ilman "peili"-IP-osoitteiden hallintaa.

Tutkijat olettavat vain, että 87.0.0.1 (Telecom Italia) ja 0177.0.0.1 (Brasil Telecom) omistajat voivat ohittaa pääsyrajoituksen 127.0.0.1:een. Realistisempi skenaario on hyödyntää haavoittuvuutta erilaisten sovelluspuolen estoluetteloiden ohittamiseksi. Ongelmaa voidaan soveltaa myös intranet-alueiden määritelmän jakamiseen NPM-moduulissa "private-ip".

Lähde: opennet.ru

Lisää kommentti