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

eBPF altsistemində zəiflik (CVE-2021-4204) 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 ki, bu da yerli imtiyazsız istifadəçiyə imtiyazların artırılmasına və öz kodunun icrasına nail olmağa imkan verir. Linux nüvəsinin səviyyəsi. Problem Linux 5.8 nüvəsindən bəri özünü göstərir və düzəldilmir (5.16 buraxılışı daxil olmaqla). Dağıtımlarda problemin aradan qaldırılması ilə yeniləmələrin yaradılması vəziyyəti bu səhifələrdə izlənilə bilər: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Yanvarın 18-də dərc edilməsi planlaşdırılan işçi eksploytın yaradılması elan edilir (istifadəçilərə və tərtibatçılara zəifliyi aradan qaldırmaq üçün bir həftə vaxt verilib).

Zəifliyə icra üçün təqdim edilmiş eBPF proqramlarının düzgün yoxlanılması səbəb olur. eBPF alt sistemi köməkçi funksiyaları təmin edir, onların düzgünlüyü xüsusi yoxlayıcı tərəfindən yoxlanılır. Bəzi funksiyalar PTR_TO_MEM dəyərinin arqument kimi ötürülməsini tələb edir və mümkün bufer daşqınlarının qarşısını almaq üçün yoxlayıcı arqumentlə əlaqəli yaddaşın ölçüsünü bilməlidir. bpf_ringbuf_submit və bpf_ringbuf_discard funksiyaları üçün ötürülən yaddaşın ölçüsü haqqında məlumat yoxlayıcıya bildirilməyib, bu, xüsusi hazırlanmış eBPF kodunu icra edərkən bufer sərhədindən kənar yaddaş sahələrinin üzərinə yazmaq üçün istifadə edilə bilər.

Hücum etmək üçün istifadəçi BPF proqramını yükləyə bilməlidir və bir çox son Linux paylamaları bunu defolt olaraq bloklayır (o cümlədən eBPF-ə imtiyazsız giriş indi 5.16 buraxılışından başlayaraq nüvənin özündə defolt olaraq qadağandır). Məsələn, boşluq Ubuntu 20.04 LTS-də defolt konfiqurasiyada istifadə oluna bilər, lakin Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 və Fedora 33 mühitlərində yalnız administrator müəyyən etdikdə görünür. kernel.unprivileged_bpf_disabled parametrini 0-a çevirin. Zəifliyin bloklanması üçün həll yolu kimi, "sysctl -w kernel.unprivileged_bpf_disabled=1" əmri ilə imtiyazsız istifadəçilər tərəfindən BPF proqramlarının icrasını söndürə bilərsiniz.

Mənbə: opennet.ru

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