Puhvri ületäitumine curl'is ja libcurlis, mis ilmneb juurdepääsul SOCKS5 puhverserveri kaudu

Paralleelselt arendatavas utiliidis Curl võrgu ja libcurli teegi kaudu andmete vastuvõtmise ja saatmise utiliidis (CVE-2023-38545) on tuvastatud haavatavus (CVE-5-8.4.0), mis võib põhjustada puhvri ületäitumise ja potentsiaalselt ründajakoodi käivitamise. kliendi poolel, kui sellele pääseb ligi utiliidi curl või libcurli kasutava rakenduse abil, ründaja juhitavasse HTTPS-serverisse. Probleem ilmneb ainult siis, kui juurdepääs SOCKS4660 puhverserveri kaudu on curl'is lubatud. Otse ilma puhverserverita juurdepääsul haavatavust ei ilmu. haavatavus on parandatud curl XNUMX versioonis. Vea avastanud turvateadlane sai Hackerone'i Interneti-vigade bounty algatuse raames XNUMX dollari suuruse preemia.

Haavatavuse põhjuseks on viga hostinime eralduskoodis enne SOCKS5 puhverserverile juurdepääsu. Kui hostinimi on kuni 256 tähemärki pikk, edastab curl nime kohe SOCKS5 puhverserverile, et see oma küljel lahendaks, ja kui nimi on pikem kui 255 tähemärki, lülitub see kohalikule lahendajale ja edastab juba määratletud aadressi SOCKS5-le. . Koodivea tõttu võis kohaliku eraldusvõime vajadust näitav lipp seada SOCKS5 kaudu aeglase ühenduse loomise ajal valele väärtusele, mis viis pika hostinime salvestamiseni ootusega eraldatud puhvrisse. IP-aadressi või nime salvestamise kohta, mis ei ületa 255 tähemärki.

SOCKS5 puhverserveri kaudu curl'i kaudu ligipääsetava saidi omanik saab käivitada kliendipoolse puhvri ületäitumise, tagastades päringu ümbersuunamiskoodi (HTTP 30x) ja määrates päise „Location:” URL-ile, mille hostinimi on vahemikus 16 kuni 64 KB (16 KB on eraldatud puhvri ületäitumiseks vajalik minimaalne suurus ja 65 KB on URL-is hostinime maksimaalne lubatud pikkus). Kui päringu ümbersuunamine on libcurli sätetes lubatud ja kasutatav SOCKS5 puhverserver on piisavalt aeglane, siis kirjutatakse pikk hostinimi väikesesse puhvrisse, mis on ilmselt väiksema suurusega.

Haavatavus mõjutab peamiselt libcurlil põhinevaid rakendusi ja ilmub curl-utiliidis ainult siis, kui kasutate suvandit "--limit-rate" väärtusega alla 65541 - vaikimisi eraldab libcurl 16 KB suuruse puhvri ja curl-utiliidis. see on 100 KB, kuid selle suurus muutub sõltuvalt parameetri "-limit-rate" väärtusest.

Projekti autor Daniel Stenberg mainis, et haavatavus jäi avastamata 1315 päeva. Samuti öeldakse, et 41% varem tuvastatud haavatavustest curl'is oleks tõenäoliselt saanud vältida, kui curl oleks kirjutatud mälukindlas keeles, kuid lähitulevikus ei ole plaanis curl'i mõneks muuks keeleks ümber kirjutada. Koodibaasi turvalisuse parandamise meetmetena tehakse ettepanek laiendada koodi testimise tööriistu ja aktiivsemalt kasutada programmeerimiskeeltes kirjutatud sõltuvusi, mis tagavad turvalise töö mäluga. Samuti kaalub ta võimalust asendada lokkide osad järk-järgult turvalistes keeltes kirjutatud suvanditega, näiteks Rustis rakendatud eksperimentaalse Hyper HTTP taustaprogrammiga.

Allikas: opennet.ru

Lisa kommentaar