Tizimda ildiz huquqlarini olish imkonini beruvchi Glibc ld.so-da zaiflik

Qualys Glibc tizimi C kutubxonasining (GNU libc) bir qismi sifatida taqdim etilgan ld.so bog'lovchisida xavfli zaiflikni (CVE-2023-4911) aniqladi. Zaiflik mahalliy foydalanuvchiga suid root bayrog'i bilan bajariladigan faylni ishga tushirishdan oldin GLIBC_TUNABLES muhit o'zgaruvchisida maxsus formatlangan ma'lumotlarni ko'rsatish orqali tizimdagi o'z imtiyozlarini oshirish imkonini beradi, masalan, /usr/bin/su.

Zaiflikdan muvaffaqiyatli foydalanish imkoniyati Fedora 37 va 38, Ubuntu 22.04 va 23.04, Debian 12 va 13 da namoyish etilgan. Zaiflik Glibc ishlatadigan har qanday boshqa tarqatishlarda ham paydo bo‘lishi taxmin qilinmoqda. Alpine Linux kabi Musl tizimi C kutubxonasiga asoslangan tarqatishlar muammodan ta'sirlanmaydi. Zaiflik 2 oktabr kuni qo‘shilgan yamoq bilan tuzatildi. Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux sahifalarida tarqatishlarda paket yangilanishlarining chiqarilishini kuzatishingiz mumkin.

Zaiflik 2021-yil aprel oyida glibc 2.34 versiyasining bir qismi sifatida kiritilgan o‘zgarish bilan bog‘liq. GLIBC_TUNABLES muhit oʻzgaruvchisida koʻrsatilgan satrni tahlil qilish kodidagi xatolik tufayli ushbu oʻzgaruvchidagi parametrlarning notoʻgʻri kombinatsiyasi ajratilgan buferdan tashqarida ajratilgan qiymatning yozilishiga olib keladi. Muammo standart "ism = val" ketma-ketliklari o'rniga, parametrlar "ism = nom = val" qo'sh tayinlangan shaklda ko'rsatilganda o'zini namoyon qiladi. Bunda topshiriq ikki marta qayta ishlanadi, avvaliga “ism=ism=val”, keyin esa “ism=val”. Ushbu ikki marta ishlov berish tunestr bufer hajmidan kattaroq bo'lgan "name=name=val:name=val" natijasini beradi.

Tadqiqotchilar suid root bayrog'i bilan deyarli har qanday dastur bilan foydalanilganda ildiz huquqlariga ega bo'lish imkonini beruvchi barqaror ekspluatatsiyani tayyorladilar. Istisnolar - sudo yordam dasturi (ELF RUNPATH qiymatini o'zgartiradi), Fedora'dagi chage va passwd yordam dasturlari (alohida SELinux qoidalari bilan himoyalangan) va Ubuntu'dagi snap-confine yordam dasturi (alohida AppArmor qoidalari bilan himoyalangan). Tavsiya etilgan ekspluatatsiya usuli RHEL 8 va RHEL 9 da ishlamaydi, garchi bu filiallar zaifliklarga moyil bo'lsa ham (hujum boshqa ekspluatatsiyani yaratishni talab qiladi). Ekspluatatsiya kodi zaiflik hamma joyda tuzatilgandan so'ng keyinroq e'lon qilinadi. Siz tizimingizning zaiflikka nisbatan zaifligini quyidagi buyruq yordamida tekshirishingiz mumkin, agar muammo yuzaga kelsa, u ishlamay qoladi: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help

Alohida, Glibc-da yana ikkita zaiflikni bartaraf etish qayd etilgan:

  • CVE-2023-4806 – getaddrinfo() funksiyasida bo‘sh xotiradan foydalanish imkoniyati, bu NSS plagini faqat “_gethostbyname2_r” va “_getcanonname_r” qayta qo‘ng‘iroqlarini amalga oshirganda yuzaga keladi, lekin “ _gethostbyname3_r” ni qo‘llab-quvvatlamaydi. Zaiflikdan foydalanish uchun DNS-server so‘ralgan xost uchun ko‘p sonli IPv6 va IPv4 manzillarini qaytarishi kerak, bu esa AI_CANONNAME, AI_ALL va AI_V6MAPPED bayroqlari o‘rnatilganda AF_INET4 oilasi uchun getaddrinfo funksiyasi deb ataladigan jarayonning ishdan chiqishiga olib keladi. o'rnatish.
  • CVE-2023-5156 – AI_CANONNAME, AI_ALL va AI_V6MAPPED bayroqlari o‘rnatilgan AF_INET4 manzillar oilasi uchun getaddrinfo funksiyasi chaqirilganda xotira oqishi sodir bo‘ladi.

Manba: opennet.ru

a Izoh qo'shish