Tejmbushje buffer-i në curl dhe libcurl gjatë përdorimit përmes proxy SOCKS5

Në utilitarin për marrjen dhe dërgimin e të dhënave përmes rrjetit curl dhe bibliotekës në zhvillim libcurl është zbuluar një vulnerabilitet (CVE-2023-38545), i cili mund të çojë në mbushje të tamponit dhe potencialisht në ekzekutimin e kodit nga sulmuesi në anën e klientit gjatë përdorimit të utilitarit curl ose aplikacionit që përdor libcurl për t'u lidhur me një server HTTPS, i kontrolluar nga keqbërësi. Problemi shfaqet vetëm në rastin kur aksesin në curl e mundëson një proxy SOCKS5. Nëse lidhet direkt pa proxy, vulnerabiliteti nuk shfaqet. Vulnerabiliteti është eliminuar në lëshimin curl 8.4.0. Kërkuesi që po e hulumton këtë problemi ka marrë një shpërblim prej $4660 në kuadër të iniciativës Internet Bug Bounty në Hackerone.

Vulnerabiliteti është shkaktuar nga një gabim në kodin e zgjidhjes së emrit të hostit para se t'i drejtohet proxy SOCKS5. Kur gjatësia e emrit të hostit arrin deri në 256 karaktere, curl e dërgon menjëherë emrin në proxy SOCKS5 për zgjidhje në anën e tij, ndërsa nëse emri është më shumë se 255 karaktere, kalon në rezolverin lokal dhe dërgon në SOCKS5 një adresë tashmë të caktuar. Për shkak të një gabimi në kod, flaga që tregon nevojën për zgjidhje lokale, gjatë një procesi të ngadaltë të pajtimit të lidhjes përmes SOCKS5, mund të ishte vendosur në një vlerë të gabuar, duke çuar në shkruarjen e emrit të gjatë të hostit në tamponin e ndarë për ruajtje. Adresa IP ose emri, që nuk e kalon 255 karaktere.

Pronari i faqes që curl e viziton përmes proxy SOCKS5 mund të nxisë mbushjen e tamponit në anën e klientit, duke kthyer një kod përcjelljeje të kërkesës (HTTP 30x) dhe duke vendosur në kokë «Location:» një URL me emrin e hostit, madhësia e të cilit ndodhet në intervalin nga 16 deri në 64 KB (vlera 16 KB është e përcaktuar si madhësia minimale e nevojshme për të mbushur tamponin e ndarë, ndërsa vlera 65 KB lidhet me gjatësinë maksimale të lejuar të emrit të hostit në URL). Nëse në cilësimet e libcurl lejohet përcjellja e kërkesave dhe proxy SOCKS5 i përdorur është mjaft i ngadaltë, emri i gjatë i hostit do të regjistrohet në një tampon të vogël, të qartë me një madhësi më të vogël.

Vulnerabiliteti kryesisht ndikon nĂ« aplikacionet e bazuara nĂ« libcurl dhe shfaqet nĂ« utilitarin curl vetĂ«m kur pĂ«rdoret opsioni «—limit-rate» me njĂ« vlerĂ« mĂ« tĂ« vogĂ«l se 65541 — nĂ« libcurl standardisht ndahet njĂ« tampon me madhĂ«si 16 KB, ndĂ«rsa nĂ« utilitarin curl — 100 KB, por kjo madhĂ«si ndryshon nĂ« pĂ«rputhje me vlerĂ«n e parametrĂ«s «—limit-rate».

Daniel Stenberg, autori i projektit, përmendi se vulnerabiliteti kishte kaluar pa u vënë re për 1315 ditë. Gjithashtu, u tha se 41% e vulnerabiliteteve të mëparshme të identifikuara në curl ndoshta do të ishin shmangur nëse curl do të ishte shkruar në një gjuhë që ofron siguri në trajtimin e memories, por rikodimi i curl në një gjuhë tjetër nuk është plakuar për të ardhmen e afërt. Si masa për të përmirësuar sigurinë e kodit, propozohet zgjerimi i mjeteve për testimin e kodit dhe përdorimi më aktiv i varësive të shkruara në gjuhë programimi që ofrojnë siguri në trajtimin e memories. Gjithashtu, po shqyrtohet mundësia e ndryshimit gradual të pjesëve të curl me variante të shkruara në gjuhë të sigurta, si backend-i eksperimental HTTP Hyper, i realizuar në gjuhën Rust.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster