ld.so OpenBSD-da zaiflik

Dinamik yuklovchi ld.soOpenBSD-ga kiritilgan, ma'lum sharoitlarda, SUID/SGID- ilovalar LD_LIBRARY_PATH muhit o'zgaruvchisini tark etadi va shu bilan yuqori imtiyozlar bilan ishlaydigan jarayon kontekstida uchinchi tomon kodini yuklashga ruxsat beradi. Zaiflikni tuzatuvchi yamoqlar relizlar uchun mavjud 6.5 и 6.6. Ikkilik yamoqlar (syspatch) amd64, i386 va arm64 platformalari uchun allaqachon ishlab chiqarilmoqda va bu yangilik chop etilgunga qadar yuklab olish mumkin bo'lishi kerak.

Muammoning mohiyati: ish paytida ld.so birinchi navbatda LD_LIBRARY_PATH o'zgaruvchisining qiymatini muhitdan ajratib oladi va _dl_split_path() funksiyasidan foydalanib, uni qatorlar massiviga - kataloglarga yo'llarga aylantiradi. Agar keyinchalik joriy jarayon SUID/SGID ilovasi tomonidan boshlanganligi aniqlansa, yaratilgan massiv va aslida LD_LIBRARY_PATH o'zgaruvchisi tozalanadi. Shu bilan birga, agar _dl_split_path() xotirasi tugasa (bu muhit oʻzgaruvchilari oʻlchamidagi aniq 256 kB chegarasi tufayli qiyin, lekin nazariy jihatdan mumkin), u holda _dl_libpath oʻzgaruvchisi NULL qiymatini oladi va keyingi tekshiruvdan oʻtadi. ushbu o'zgaruvchining qiymati _dl_unsetenv("LD_LIBRARY_PATH") ga qo'ng'iroqni o'tkazib yuborishga olib keladi.

Mutaxassislar tomonidan aniqlangan zaiflik Qualis, shu qatorda; shu bilan birga bir nechtasi avval oshkor qilingan muammolar. Zaiflikni aniqlagan xavfsizlik tadqiqotchilari muammo qanchalik tez hal qilinganini qayd etishdi: yamoq tayyorlandi va yangilanishlar OpenBSD loyihasi bildirishnoma olganidan keyin uch soat ichida chiqarildi.

Qo'shimcha: muammoga raqam berildi CVE-2019-19726. Oss-xavfsizlik pochta ro'yxatida tuzilgan rasmiy e'lon, shu jumladan OpenBSD 6.6, 6.5, 6.2 va 6.1 arxitekturalarida ishlaydigan ekspluatatsiya prototipi
amd64 va i386 (ekspluatatsiya boshqa arxitekturalar uchun moslashtirilishi mumkin).
Muammo standart o'rnatishda ishlatilishi mumkin va imtiyozsiz mahalliy foydalanuvchiga chpass yoki passwd yordamchi dasturlarini ishga tushirishda kutubxonani almashtirish orqali kodni ildiz sifatida bajarishga imkon beradi. Ishlash uchun zarur bo'lgan kam xotira sharoitlarini yaratish uchun setrlimit orqali RLIMIT_DATA chegarasini o'rnating.

Manba: opennet.ru

a Izoh qo'shish