Linux Netfilter nüvə alt sistemində zəiflik

Şəbəkə paketlərini süzgəcdən keçirmək və dəyişdirmək üçün istifadə edilən Linux nüvəsinin alt sistemi olan Netfilterdə yerli istifadəçiyə, o cümlədən təcrid olunmuş konteynerdə olarkən sistemdə kök imtiyazları əldə etməyə imkan verən zəiflik (CVE-2021-22555) müəyyən edilib. Sınaq üçün KASLR, SMAP və SMEP qoruma mexanizmlərindən yan keçən istismarın işləyən prototipi hazırlanmışdır. Zəifliyi aşkar edən tədqiqatçı, kCTF klasterində Kubernetes konteynerlərinin təcrid olunmasından yan keçmək üçün bir üsul müəyyən etdiyinə görə Google-dan 20 dollar mükafat aldı.

Problem 2.6.19 il əvvəl buraxılmış kernel 15-dan bəri mövcuddur və uyğun rejimdə setsockopt çağırışı vasitəsilə xüsusi formatlaşdırılmış parametrləri göndərərkən buferin daşmasına səbəb olan IPT_SO_SET_REPLACE və IP6T_SO_SET_REPLACE işləyicilərindəki səhvdən qaynaqlanır. Normal şəraitdə, yalnız kök istifadəçi compat_setsockopt()-a zəng edə bilər, lakin hücumu həyata keçirmək üçün tələb olunan imtiyazları istifadəçi adları üçün dəstək aktivləşdirilmiş sistemlərdə imtiyazsız istifadəçi də əldə edə bilər.

İstifadəçi ayrıca kök istifadəçisi olan konteyner yarada və oradan zəiflikdən istifadə edə bilər. Məsələn, "istifadəçi adları" Ubuntu və Fedora-da defolt olaraq aktivdir, lakin Debian və RHEL-də aktiv deyil. Boşluğu aradan qaldıran yamaq aprelin 13-də Linux nüvəsinə qəbul edilib. Paket yeniləmələri artıq Debian, Arch Linux və Fedora layihələri tərəfindən yaradılıb. Ubuntu, RHEL və SUSE-də yeniləmələr hazırlanır.

Problem 32-bitdən 64-bit təmsilə çevrildikdən sonra kernel strukturlarının saxlanması zamanı yaddaş ölçüsünün düzgün hesablanmaması səbəbindən xt_compat_target_from_user() funksiyasında baş verir. Səhv dörd null baytı ofset 0x4C ilə məhdudlaşan ayrılmış buferdən kənarda istənilən mövqeyə yazmağa imkan verir. Bu xüsusiyyət kök hüquqlarını əldə etməyə imkan verən istismar yaratmaq üçün kifayət etdi - msg_msg strukturunda m_list->növbəti göstəricini silməklə, yaddaşı boşaltdıqdan sonra məlumatlara daxil olmaq üçün şərait yaradıldı (pulsuz istifadədən sonra). daha sonra msgsnd() sistem çağırışı ilə manipulyasiya yolu ilə ünvanlar və digər strukturlara edilən dəyişikliklər haqqında məlumat əldə etmək üçün istifadə edilmişdir.

Mənbə: opennet.ru

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