SOCKS5 proksi-server orqali kirishda namoyon bo'ladigan curl va libcurl-da buferning to'lib ketishi

Parallel ravishda ishlab chiqilayotgan curl tarmog'i va libcurl kutubxonasi orqali ma'lumotlarni qabul qilish va jo'natish uchun yordamchi dasturda zaiflik (CVE-2023-38545) aniqlandi, bu esa buferning to'lib ketishiga va tajovuzkor kodining potentsial bajarilishiga olib kelishi mumkin. Curl yordam dasturi yoki libcurl yordamida ilovadan foydalanganda mijoz tomoni tajovuzkor tomonidan boshqariladigan HTTPS serveriga. Muammo faqat SOCKS5 proksi-server orqali kirish curl rejimida yoqilgan bo'lsa paydo bo'ladi. Proksi-serversiz to'g'ridan-to'g'ri kirishda zaiflik paydo bo'lmaydi. Zaiflik curl 8.4.0 versiyasida tuzatilgan. Xatoni aniqlagan xavfsizlik tadqiqotchisi Hackeronening Internet Bug Bounty tashabbusi doirasida 4660 dollar mukofot oldi.

Zaiflik SOCKS5 proksi-serveriga kirishdan oldin xost nomini aniqlash kodidagi xatolik tufayli yuzaga keladi. Agar xost nomi 256 ta belgidan iborat bo'lsa, curl darhol o'z tomonidagi rezolyutsiya uchun nomni SOCKS5 proksi-serveriga o'tkazadi va agar nom 255 belgidan ortiq bo'lsa, u mahalliy hal qiluvchiga o'tadi va allaqachon aniqlangan manzilni SOCKS5 ga uzatadi. . Koddagi xatolik tufayli SOCKS5 orqali ulanishning sekin muhokamasi paytida mahalliy ruxsat zarurligini bildiruvchi bayroq noto'g'ri qiymatga o'rnatilishi mumkin, bu esa kutish bilan ajratilgan buferda uzoq xost nomini yozib olishga olib keldi. IP manzili yoki nomini saqlash uchun 255 belgidan oshmasligi kerak.

SOCKS5 proksi-server orqali curl orqali kiradigan sayt egasi so'rovni qayta yo'naltirish kodini (HTTP 30x) qaytarish va "Joylashuv:" sarlavhasini 16 dan yuqori diapazondagi xost nomiga ega URL manziliga o'rnatish orqali mijoz tomonidan bufer to'lib ketishini boshlashi mumkin. 64 KB gacha (16 KB ajratilgan buferni to'ldirish uchun zarur bo'lgan minimal o'lcham va 65 KB - URL manzilida ruxsat etilgan maksimal xost nomi uzunligi). Agar libcurl sozlamalarida soʻrovni qayta yoʻnaltirish yoqilgan boʻlsa va ishlatiladigan SOCKS5 proksi-server yetarlicha sekin boʻlsa, uzun xost nomi kichikroq buferga yoziladi, aniqki, oʻlchami kichikroq.

Zaiflik asosan libcurl-ga asoslangan ilovalarga ta'sir qiladi va curl yordam dasturida faqat qiymati 65541 dan kam bo'lgan "--limit-rate" opsiyasidan foydalanganda paydo bo'ladi - libcurl sukut bo'yicha 16 KB hajmdagi buferni ajratadi va curl yordam dasturida u 100 KB, lekin bu o'lcham "-limit-rate" parametrining qiymatiga qarab o'zgaradi.

Loyiha muallifi Daniel Stenbergning ta'kidlashicha, zaiflik 1315 kun davomida aniqlanmagan. Shuningdek, unda aytilishicha, agar curl xotira uchun xavfsiz tilda yozilgan bo'lsa, curl-da ilgari aniqlangan zaifliklarning 41 foizi oldini olish mumkin edi, ammo yaqin kelajakda curl-ni boshqa tilga qayta yozish rejalari yo'q. Kod bazasi xavfsizligini yaxshilash chora-tadbirlari sifatida kodni sinab ko'rish vositalarini kengaytirish va xotira bilan xavfsiz ishlashni ta'minlaydigan dasturlash tillarida yozilgan bog'liqliklardan faolroq foydalanish taklif etiladi. Shuningdek, u curl qismlarini xavfsiz tillarda yozilgan variantlar bilan bosqichma-bosqich almashtirish imkoniyatini ko'rib chiqmoqda, masalan, Rust-da amalga oshirilgan eksperimental Hyper HTTP backend.

Manba: opennet.ru

a Izoh qo'shish