Linux yadrosi darajasida kodni bajarishga imkon beruvchi eBPF quyi tizimidagi zaiflik

eBPF quyi tizimida zaiflik (CVE-2021-4204) aniqlandi, bu sizga Linux yadrosi ichidagi ishlov beruvchilarni JIT bilan maxsus virtual mashinada ishga tushirish imkonini beradi, bu esa mahalliy imtiyozsiz foydalanuvchiga imtiyozlarni oshirishga va o'z kodini ishga tushirishga imkon beradi. Linux yadro darajasi. Muammo Linux yadrosi 5.8 versiyasidan beri paydo bo'ldi va hal qilinmadi (shu jumladan, 5.16 versiyasi). Tarqatishlardagi muammoni hal qilish uchun yaratilayotgan yangilanishlar holatini quyidagi sahifalarda kuzatish mumkin: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. 18-yanvarda eʼlon qilinishi rejalashtirilgan ishchi ekspluatatsiya yaratilgani maʼlum qilindi (foydalanuvchilar va dasturchilarga zaiflikni tuzatish uchun bir hafta vaqt berilgan).

Zaiflik bajarish uchun uzatilgan eBPF dasturlarini noto'g'ri tekshirish natijasida yuzaga keladi. eBPF quyi tizimi yordamchi funktsiyalarni ta'minlaydi, ulardan to'g'ri foydalanish maxsus tekshiruvchi tomonidan tekshiriladi. Ba'zi funktsiyalar PTR_TO_MEM qiymatini argument sifatida o'tkazishni talab qiladi va mumkin bo'lgan bufer to'lib ketishining oldini olish uchun tekshiruvchi argument bilan bog'liq xotira hajmini bilishi kerak. Bpf_ringbuf_submit va bpf_ringbuf_discard funktsiyalari uchun uzatilgan xotira hajmi haqidagi ma'lumotlar tekshirgichga xabar qilinmadi, bu maxsus mo'ljallangan eBPF kodini bajarishda bufer chegarasidan tashqaridagi xotira maydonlarini qayta yozish uchun ishlatilishi mumkin.

Hujumni amalga oshirish uchun foydalanuvchi o'zining BPF dasturini yuklay olishi kerak va ko'plab so'nggi Linux distribyutorlari bu imkoniyatni sukut bo'yicha bloklaydi (shu jumladan, eBPF-ga imtiyozsiz kirish endi yadroning o'zida sukut bo'yicha taqiqlangan, 5.16 versiyasidan boshlab). Masalan, zaiflikdan Ubuntu 20.04 LTS da standart konfiguratsiyada foydalanish mumkin, lekin Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 va Fedora 33 muhitlarida u faqat administrator oʻrnatgan boʻlsa paydo boʻladi. kernel.unprivileged_bpf_disabled parametrini 0 ga keltiring. Zaiflikni blokirovka qilish uchun vaqtinchalik yechim sifatida siz “sysctl -w kernel.unprivileged_bpf_disabled=1” buyrug'i bilan imtiyozsiz foydalanuvchilar tomonidan BPF dasturlarini bajarilishini oldini olishingiz mumkin.

Manba: opennet.ru

a Izoh qo'shish