Mbushja e buferit në curl dhe libcurl, manifestohet kur qaseni përmes një përfaqësuesi SOCKS5

Një dobësi (CVE-2023-38545) është identifikuar në programin për marrjen dhe dërgimin e të dhënave përmes rrjetit curl dhe bibliotekës libcurl, e cila po zhvillohet paralelisht, e cila mund të çojë në një tejmbushje buferi dhe potencialisht ekzekutimin e kodit të sulmuesit në ana e klientit kur aksesohet duke përdorur programin curl ose një aplikacion duke përdorur libcurl, në një server HTTPS të kontrolluar nga sulmuesi. Problemi shfaqet vetëm nëse qasja përmes një përfaqësuesi SOCKS5 është aktivizuar në curl. Kur qaseni drejtpërdrejt pa një përfaqësues, cenueshmëria nuk shfaqet. Dobësia është fiksuar në lëshimin e curl 8.4.0. Studiuesi i sigurisë që zbuloi gabimin mori një shpërblim prej 4660 dollarësh si pjesë e iniciativës së Hackerone's Internet Bug Bounty.

Dobësia shkaktohet nga një gabim në kodin e rezolucionit të emrit të hostit përpara se të hyni në përfaqësuesin SOCKS5. Nëse emri i hostit është deri në 256 karaktere, curl ia kalon menjëherë emrin përfaqësuesit SOCKS5 për zgjidhje në anën e tij, dhe nëse emri është më shumë se 255 karaktere, ai kalon në zgjidhësin lokal dhe ia kalon adresën e përcaktuar tashmë SOCKS5 . Për shkak të një gabimi në kod, flamuri që tregon nevojën për zgjidhje lokale mund të vendoset në vlerën e gabuar gjatë negocimit të ngadaltë të një lidhjeje nëpërmjet SOCKS5, gjë që çoi në regjistrimin e një emri të gjatë të hostit në një tampon të caktuar me pritshmërinë të ruajtjes së adresës IP ose emrit, jo më shumë se 255 karaktere.

Pronari i një sajti të aksesuar nga curl përmes një përfaqësuesi SOCKS5 mund të shkaktojë një tejmbushje të tamponit nga ana e klientit duke rikthyer një kod ridrejtues kërkese (HTTP 30x) dhe duke vendosur titullin "Vendndodhja:" në një URL me një emër hosti në intervalin 16 lart. në 64 KB (16 KB është madhësia minimale e kërkuar për të tejmbushur bufferin e caktuar dhe 65 KB është gjatësia maksimale e lejuar e emrit të hostit në një URL). Nëse ridrejtimi i kërkesës është aktivizuar në cilësimet e libcurl dhe përfaqësuesi i përdorur SOCKS5 është mjaft i ngadalshëm, atëherë emri i gjatë i hostit do të shkruhet në një tampon të vogël, padyshim me një madhësi më të vogël.

Dobësia prek kryesisht aplikacionet e bazuara në libcurl dhe shfaqet në programin curl vetëm kur përdoret opsioni "--limit-rate" me një vlerë më të vogël se 65541 - libcurl si parazgjedhje ndan një tampon prej 16 KB në madhësi dhe në programin curl është 100 KB, por kjo madhësi ndryshon në varësi të vlerës së parametrit “-limit-rate”.

Daniel Stenberg, autori i projektit, përmendi se dobësia mbeti e pazbuluar për 1315 ditë. Ai gjithashtu thotë se 41% e dobësive të identifikuara më parë në curl ka të ngjarë të ishin shmangur nëse curl do të ishte shkruar në një gjuhë të sigurt për kujtesën, por nuk ka plane për të rishkruar curl në një gjuhë tjetër në të ardhmen e parashikueshme. Si masa për të përmirësuar sigurinë e bazës së kodit, propozohet zgjerimi i mjeteve për testimin e kodit dhe përdorimi më aktiv i varësive të shkruara në gjuhët e programimit që sigurojnë funksionim të sigurt me memorie. Gjithashtu po shqyrton mundësinë e zëvendësimit gradual të pjesëve të curl me opsione të shkruara në gjuhë të sigurta, të tilla si prapavija eksperimentale Hyper HTTP e zbatuar në Rust.

Burimi: opennet.ru

Shto një koment