Linux nüvəsi səviyyəsində kodun icrasına imkan verən eBPF alt sistemindəki zəifliklər

eBPF altsistemində iki yeni boşluq müəyyən edilib ki, bu da Linux nüvəsi daxilində işləyiciləri JIT ilə xüsusi virtual maşında işə salmağa imkan verir. Hər iki zəiflik kodunuzu təcrid olunmuş eBPF virtual maşını xaricində nüvə hüquqları ilə icra etməyə imkan verir. Problemlər haqqında məlumat Pwn2Own müsabiqəsini həyata keçirən Zero Day Initiative komandası tərəfindən dərc edilib, bu müddət ərzində bu il Ubuntu Linux-a əvvəllər məlum olmayan zəifliklərdən istifadə edilən üç hücum nümayiş etdirilib (eBPF-dəki zəifliklərin bu hücumlarla əlaqəli olub-olmadığı barədə məlumat verilmir) .

  • CVE-2021-3490 - Zəiflik eBPF ALU32-də bit üzrə AND, OR, və XOR əməliyyatlarını yerinə yetirərkən 32 bitlik sərhəddən kənar yoxlamanın olmaması ilə əlaqədardır. Təcavüzkar, ayrılmış buferin hüdudlarından kənarda məlumatları oxumaq və yazmaq üçün bu xətadan istifadə edə bilər. XOR əməliyyatları ilə bağlı problem nüvənin 5.7-rc1 versiyasından, AND və OR isə 5.10-rc1-dən başlayaraq görünür.
  • CVE-2021-3489 - Zəiflik halqa buferinin həyata keçirilməsində baş verən xətadan qaynaqlanır və bpf_ringbuf_reserve funksiyasının ayrılmış yaddaş bölgəsinin ölçüsünün faktiki ölçüdən az ola biləcəyi ehtimalını yoxlamaması ilə əlaqədardır. ringbuf. Problem 5.8-rc1 buraxılışından bəri görünür.

Dağıtımlarda zəifliklərin yamaq vəziyyətini bu səhifələrdə izləmək olar: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Düzəlişlər yamaqlar kimi də mövcuddur (CVE-2021-3489, CVE-2021-3490). Problemdən istifadə edilib-edilməməsi eBPF sistem zənginin istifadəçi üçün əlçatan olub-olmamasından asılıdır. Məsələn, RHEL-də defolt konfiqurasiyada zəifliyin istismarı istifadəçidən CAP_SYS_ADMIN hüquqlarına malik olmasını tələb edir.

Ayrı-ayrılıqda Linux nüvəsində yerli istifadəçiyə öz imtiyazlarını kök səviyyəsinə qaldırmağa imkan verən CVE-2021-32606-da daha bir zəifliyi qeyd edə bilərik. Problem Linux kernel 5.11-dən bəri aydındır və isotp_setsockopt() funksiyasında düzgün kilidlərin təyin edilməməsi səbəbindən rozetka bağlama parametrlərini dəyişdirməyə imkan verən CAN ISOTP protokolunun həyata keçirilməsində yarış vəziyyəti ilə əlaqədardır. CAN_ISOTP_SF_BROADCAST bayrağını emal edərkən.

ISOTP yuvası bağlandıqdan sonra alıcı yuvasına bağlanma qüvvədə qalır və bu, onlarla əlaqəli yaddaş boşaldıqdan sonra yuva ilə əlaqəli strukturlardan istifadə etməyə davam edə bilər (isotp_sock strukturuna çağırış səbəbindən pulsuz istifadə). isotp_rcv() çağırıldıqda artıq azad edilmişdir). Məlumatların manipulyasiyası vasitəsilə siz göstəricini sk_error_report() funksiyasına keçə və kodunuzu nüvə səviyyəsində icra edə bilərsiniz.

Mənbə: opennet.ru

Добавить комментарий