Andmete edastamiseks ja vastuvĂ”tmiseks mĂ”eldud utiliidis curl ja samal ajal arenevas raamatukogus libcurl avastati haavatavus (CVE-2023-38545), mis vĂ”ib viia puhveri ĂŒletamiseni ja potentsiaalselt koodide tĂ€itmisse rĂŒndaja poolt kliendipoolsel kĂŒljel, kui utiliit curl vĂ”i rakendus, mis kasutab libcurl-i, pöördub HTTPS-serveri poole, mis on kurjategija kontrolli all. Probleem avaldub ainult siis, kui curlis on sisse lĂŒlitatud juurdepÀÀs SOCKS5-proksi kaudu. Otsese pĂ€ringu korral ilma proksita haavatavust ei esine. Haavatavus on kĂ”rvaldatud curl versioonis 8.4.0. Vea avastanud turvauurijale anti $4660 suurune preemia Internet Bug Bounty algatuse raames Hackerone'is.
Haavatavus on pĂ”hjustatud veast hostinime lahendamise koodis enne pöördumist SOCKS5-proksi. Kui hostinimi on kuni 256 mĂ€rke, edastab curl nime kohe SOCKS5-proksile lahendamiseks sellel poolel, ja kui nimi on pikem kui 255 mĂ€rki, lĂŒlitub ta kohaliku resolvri kasutamisele ja edastab SOCKS5-le juba mÀÀratud aadressi. Koodivea tĂ”ttu vĂ”is aeglase SOCKS5-ĂŒhenduse seadistamise kĂ€igus vale vÀÀrtus saada flagg, mis nĂ€itab, et kohalikku lahendamist on vaja, mis viis pika hostinime kirjutamiseni puhvrisse, mis oli ette nĂ€htud salvestamiseks IP-aadressid vĂ”i nimele, mis ei ĂŒleta 255 mĂ€rki.
Selle saidi omanik, kelle poole curl pöördub lĂ€bi SOCKS5-proksi, vĂ”ib algatada klientpoolsest puhveri ĂŒletamise, tagastades pĂ€ringule suunamise koodi (HTTP 30x) ja seadistades pĂ€isesse "Location:" URL, mille hostinime suurus on vahemikus 16 kuni 64 KB (16 KB vÀÀrtus on tingitud minimaalsetest nĂ”uetest, mis on vajalikud puhberdisainiga ĂŒletamiseks, ja 65 KB vÀÀrtus on seotud maksimaalselt lubatud hostinime pikkusega URL-is). Kui libcurl-i seadetes on lubatud pĂ€ringute suunamine ja kasutatav SOCKS5-proksi on piisavalt aeglane, kirjutatakse pika hostinime andmed vĂ€ikesele puhvrile, mille suurus on selgelt vĂ€iksem.
Haavatavus mĂ”jutab peamiselt rakendusi, mis pĂ”hinevad libcurl'il, ja ilmneb curl'i utiliidis ainult siis, kui kasutatakse valikut â--limit-rateâ vÀÀrtusega, mis on vĂ€iksem kui 65541 â libcurl reserves vaikimisi 16 KB suuruse puhver, samas kui curl'is on see 100 KB, kuid see suurus muutub sĂ”ltuvalt â--limit-rateâ parameetri vÀÀrtusest.
Daniel Stenberg, projekti autor, mainis, et haavatavus jĂ€i mĂ€rkamatuks 1315 pĂ€eva jooksul. Samuti öeldi, et 41% varasematest curl'i haavatavustest oleks tĂ”enĂ€oliselt saanud vĂ€ltida, kui curl oleks kirjutatud keeles, mis tagab mĂ€luga ohutu töö, kuid curl'i ĂŒmberkirjutamist teise keelde lĂ€hitulevikus ei plaanita. Koodibaasi turvalisuse suurendamiseks soovitatakse laiendada koodi testimise tööriistu ja kasutada aktiivsemalt sĂ”ltuvusi, mis on kirjutatud mĂ€luga ohututesse programmeerimiskeeltesse. Samuti kaalutakse curl'i osade jĂ€rkjĂ€rgulist asendamist turvalistes keeltes kirjutatud variantidega, nagu katseprojekt HTTP-tagaplaan Hyper, mis on rakendatud Rust keeles.
Allikas: opennet.ru
