Bufro superfluo en curl kaj libcurl, manifestita dum aliro per SOCKS5-prokurilo

Vulnerabileco (CVE-2023-38545) estis identigita en la utileco por ricevi kaj sendi datumojn tra la bukloreto kaj la libcurl-biblioteko, kiu estas disvolvita paralele, kio povas kaŭzi bufran superfluon kaj eble ekzekuto de atakanta kodo sur la klientflanko kiam alirite uzante la buklan ilon aŭ aplikaĵon uzante libcurl, al HTTPS-servilo kontrolita de la atakanto. La problemo nur aperas se aliro per SOCKS5-prokurilo estas ebligita en buklo. Alirante rekte sen prokurilo, la vundebleco ne aperas. La vundebleco estas riparita en buklo 8.4.0 eldono. La sekureca esploristo kiu malkovris la cimon ricevis $4660 rekompencon kiel parto de la Internet Bug Bounty-iniciato de Hackerone.

La vundebleco estas kaŭzita de eraro en la gastnomo rezoluciokodo antaŭ aliri la SOCKS5-prokurilon. Se la gastiga nomo estas ĝis 256 signoj longa, curl tuj pasas la nomon al la SOCKS5-prokurilo por rezolucio siaflanke, kaj se la nomo estas pli ol 255 signoj, ĝi ŝanĝas al la loka solvilo kaj pasas la jam difinitan adreson al SOCKS5. . Pro eraro en la kodo, la flago indikanta la bezonon de loka rezolucio povus esti agordita al la malĝusta valoro dum la malrapida intertraktado de SOCKS5-ligo, kiu kondukis al longa gastiga nomo estanta skribita al bufro asignita por stoki la IP-adreson. aŭ nomo , ne superante 255 signojn.

La posedanto de retejo alirita per buklo per SOCKS5-prokurilo povas ekigi klientflankan bufron superfluon resendante petan alidirektilon (HTTP 30x) kaj agordante la "Loko:" kaplinion al URL kun gastiga nomo de grandeco de 16. ĝis 64 KB (16 KB estas la minimuma grandeco postulata por superflui la asignitan bufron, kaj 65 KB estas la maksimuma permesita gastnomo-longo en URL). Se la peto-redirekto estas ebligita en la agordoj de libcurl kaj la uzata SOCKS5-prokurilo estas sufiĉe malrapida, tiam la longa gastiga nomo estos skribita al malgranda bufro, evidente de pli malgranda grandeco.

La vundebleco ĉefe influas aplikojn bazitajn sur libcurl kaj aperas en la bukla ilo nur kiam oni uzas la opcion "--limit-rate" kun valoro malpli ol 65541 - libcurl defaŭlte asignas bufron de 16 KB en grandeco, kaj en la bukla ilo. ĝi estas 100 KB, sed ĉi tio la grandeco ŝanĝiĝas depende de la valoro de la parametro "-limit-rate".

Daniel Stenberg, la aŭtoro de la projekto, menciis, ke la vundebleco restis nerimarkita dum 1315 tagoj. Ĝi ankaŭ diras, ke 41% de antaŭe identigitaj vundeblecoj en buklo verŝajne povus esti evititaj se buklo estus skribita en memorsekura lingvo, sed ne estas planoj reverki buklon en alian lingvon en antaŭvidebla estonteco. Kiel mezuroj por plibonigi la sekurecon de la koda bazo, oni proponas vastigi la ilojn por testi kodon kaj pli aktive uzi dependecojn skribitajn en programlingvoj, kiuj certigas sekuran funkciadon per memoro. Ĝi ankaŭ pripensas la eblecon iom post iom anstataŭigi partojn de buklo per variantoj skribitaj en sekuraj lingvoj, kiel ekzemple la eksperimenta Hyper HTTP-backend efektivigita en Rust.

fonto: opennet.ru

Aldoni komenton