Jie aptiko pažeidžiamumą, turintį įtakos curl, libcurl ir jais pagrįstiems projektams

raitytis

cURL yra programinės įrangos projektas, susidedantis iš bibliotekos ir komandų interpretatoriaus, skirto failams perkelti.

Danielis Stenbergas (projekto cURL autorius) neseniai paskelbta per dienoraščio įrašą, informaciją apie pažeidžiamumas, kuris buvo aptiktas programa duomenims gauti ir siųsti tinkle curl ir libcurl biblioteka.

Paminėta, kad pažeidžiamumas (jau kataloguotas CVE-2023-38545) yra dėl pagrindinio kompiuterio pavadinimo skyros kodo klaidos prieš pasiekiant SOCKS5 tarpinį serverį.

SOCKS5 yra tarpinio serverio protokolas. Tai gana paprastas tinklo ryšio nustatymo per tam skirtą „tarpininką“ protokolas. Pavyzdžiui, protokolas paprastai naudojamas nustatant ryšį per „Tor“, taip pat norint pasiekti internetą iš organizacijų ir įmonių.

SOCKS5 turi du skirtingus pagrindinio kompiuterio vardo skyros režimus. Arba klientas nustato pagrindinio kompiuterio pavadinimą vietoje ir perduoda paskirties vietą kaip išspręstą adresą, arba klientas perduoda visiškai kvalifikuotą pagrindinio kompiuterio pavadinimą įgaliotajam serveriui ir leidžia tarpiniam serveriui nuotoliniu būdu išspręsti pagrindinio kompiuterio pavadinimą.

Kaip tokia nesėkmė gali sukelti buferio perpildymą ir galimas užpuoliko kliento kodo vykdymas, kai pasiekiate HTTPS serverį, kurį užpuolikas valdo per curl įrankį arba programą, kuri naudoja libcurl. bet problema yra tik jei prieiga per SOCKS5 tarpinį serverį yra įjungtas curl. Kai tiesiogiai pasiekiate be tarpinio serverio, pažeidžiamumas nepasirodo.

Svetainės, kuri pasiekiama naudojant curl per SOCKS5 tarpinį serverį, savininkas apibūdinamas kaip galintis:

Suaktyvinkite kliento pusės buferio perpildymą grąžindami užklausos peradresavimo kodą (HTTP 30x) ir nustatydami antraštę „Location:“ į URL su prieglobos pavadinimu, kurio dydis svyruoja nuo 16 iki 64 KB (maksimalus dydis yra 16 KB). perpildyti skirto buferio ir 65 KB yra didžiausias leistinas prieglobos serverio vardo ilgis URL).

Jei libcurl konfigūracijoje įgalintas užklausų peradresavimas, o naudojamas SOCKS5 tarpinis serveris yra pakankamai lėtas, tada ilgas pagrindinio kompiuterio pavadinimas bus įrašytas į mažą buferį, akivaizdžiai mažesnio dydžio.

Savo tinklaraščio įraše Danielis Stenbergas paminėjo, kad pažeidžiamumas liko nepastebėtas 1315 dienų. Jame taip pat sakoma, kad 41% anksčiau nustatytų „curl“ pažeidžiamumų tikriausiai būtų buvę galima išvengti, jei „curl“ būtų parašyta atmintimi saugia kalba, tačiau artimiausiu metu neplanuojama perrašyti „curl“ kita kalba.

Pažeidžiamumas pirmiausia paveikia libcurl pagrįstas programas ir pasirodo curl paslaugų programoje tik naudojant parinktį „–limit-rate“, kurios reikšmė mažesnė nei 65541, nes „libcurl“ pagal numatytuosius nustatymus skiria 16 KB buferį, o curl – 100 KB, tačiau šis dydis keičiasi atsižvelgiant į „–ribinės normos“ parametras.

Paminėta, kad jei pagrindinio kompiuterio pavadinimas yra iki 256 simbolių, curl iš karto perduoda pavadinimą SOCKS5 tarpiniam serveriui, kad jis būtų išspręstas, o jei pavadinimas yra ilgesnis nei 255 simboliai, jis persijungia į vietinį sprendimą ir jau apibrėžtą adresą perduoda SOCKS5. . Dėl kodo klaidos vėliavėlė, nurodanti vietinės skyros poreikį, gali būti nustatyta į neteisingą reikšmę lėtai derantis dėl ryšio per SOCKS5, todėl ilgas pagrindinio kompiuterio pavadinimas įrašomas į buferį, priskirtą tikintis išsaugoti IP. adresas arba vardas, neviršija 255 simbolių.

Galiausiai minimas tas pažeidžiamumas buvo ištaisytas 8.4.0 curl versijoje o kaip priemones kodų bazės saugumui gerinti siūloma išplėsti kodo testavimo įrankius ir aktyviau naudoti programavimo kalbomis parašytas priklausomybes, kurios garantuoja saugų veikimą su atmintimi. Ji taip pat svarsto galimybę palaipsniui pakeisti curl dalis parinktimis, parašytomis saugiomis kalbomis, pvz., eksperimentine „Hyper HTTP backend“, įdiegta „Rust“.

Kakleliai domina sužinoti daugiau apie tai, galite patikrinti išsamią informaciją Šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.