Rusti ja Go standardraamatukogudes on tuvastatud haavatavused, mis on seotud IP-aadresside vale töötlemisega, kui need sisaldavad kaheksandikke, aadressi parsimise funktsioonides. Need haavatavused vĂ”imaldavad mööda minna rakendustes kehtestatud lubatud aadresside kontrollidest, nĂ€iteks suunates pĂ€ringud loopback-liidesete (127.x.x.x) vĂ”i intraneti alamvĂ”rkude poole SSRF (Server-side request forgery) rĂŒnnakute kĂ€igus. Need haavatavused jĂ€tkavad probleeme, mida on varem tuvastatud node-netmask (JavaScript, CVE-2021-28918, CVE-2021-29418), private-ip (JavaScript, CVE-2020-28360), ipaddress (Python, CVE-2021-29921), Data::Validate::IP (Perl, CVE-2021-29662) ja Net::Netmask (Perl, CVE-2021-29424) raamatukogudes.
Vastavalt spetsifikatsioonile peavad stringivÀÀrtused IP-aadresse, mis algavad nulliga, olema tĂ”lgendatavad kui kaheksandikud, kuid paljud raamatukogud ei arvestata seda eripĂ€ra ja lihtsalt viskavad nulli kĂ”rvale, töötades vÀÀrtuse nagu kĂŒmnend numbriga. NĂ€iteks number 0177 kaheksandikes on 127 kĂŒmnendites. RĂŒndaja vĂ”ib nĂ”uda ressursi, sisestades vÀÀrtuse "0177.0.0.1", mis kĂŒmnendlikus vormis vastab "127.0.0.1". Probleemse raamatukogu kasutamisel ei tuvastaks rakendus aadressi 0177.0.0.1 kuuluvust alamvĂ”rku 127.0.0.1/8, kuid pĂ€ringu saatmisel vĂ”ib see tegelikult suunata aadressile "0177.0.0.1", mida vĂ”rgufunktsioonid töötlevad nagu 127.0.0.1. Sarnasel viisil on vĂ”imalik petta ka intraneti aadresside kontrolli, sisestades sarnaseid vÀÀrtusi nagu "012.0.0.1" (mis vastab "10.0.0.1").
Rustis on probleemiga seotud standardraamatukogu "std::net" (CVE-2021-29922). Selle raamatukogu IP-aadresside parser viskas nulli aadressi vÀÀrtustest vĂ€lja, kuid ainult juhul, kui oli madalam kui kolm numbrit, nĂ€iteks "0177.0.0.1" peetakse kehtetuks, kuid vastuseks "010.8.8.8" ja "127.0.026.1" tagastatakse vale tulemus. Rakendused, mis kasutavad std::net::IpAddr kasutajanĂ€idatud aadresside parsimiseks, vĂ”ivad olla potentsiaalselt SSRF (Server-side request forgery), RFI (Remote File Inclusion) ja LFI (Local File Inclusion) rĂŒnnakutele vastuvĂ”tlikud. Haavatavus on kĂ”rvaldatud Rusti versioonis 1.53.0.

Go keeles on probleemiks standardne teek «net» (CVE-2021-29923). Sisseehitatud funktsioon net.ParseCIDR jĂ€tab nullid kaheksandike numbrite ees arvestamata, mitte ei töötle neid. NĂ€iteks vĂ”ib rĂŒndaja edastada vÀÀrtuse 00000177.0.0.1, mis kontrollimisel funktsioonis net.ParseCIDR(00000177.0.0.1/24) tĂ”lgendatakse kui 177.0.0.1/24, mitte 127.0.0.1/24. Probleem ilmneb ka Kubernetes platvormil. Haavatavus on kĂ”rvaldatud Go versioonis 1.16.3 ja beetaversioonis 1.17.


Allikas: opennet.ru
