Google-ın Project Zero komandasının tədqiqatçıları, nüvənin tty alt sistemindən TIOCSPGRP ioctl işleyicisinin tətbiqində bir zəiflikdən (CVE-2020-29661) istifadə etmək üçün bir metod dərc etdilər. Linuxvə həmçinin bu cür zəiflikləri bloklaya biləcək qoruma mexanizmlərini ətraflı araşdırdı.
Problemə səbəb olan xəta nüvədə düzəldilib. Linux ötən ilin 3 dekabrında. Problem 5.9.13 versiyasından əvvəlki nüvələrdə görünür, lakin əksər distributivlər keçən il buraxılan nüvə paketi yeniləmələrində problemi həll ediblər (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Oxşar bir zəiflik (CVE-2020-29660) TIOCGSID ioctl çağırışının tətbiqində eyni vaxtda aşkar edilmişdir, lakin o, artıq geniş şəkildə yamaqlanmışdır.
Problem, drivers/tty/tty_jobctrl.c faylında yarış şərtinə səbəb olan kilidləmə quraşdırma xətasından qaynaqlanır və bu, TIOCSPGRP ioct çağırışını manipulyasiya etməklə istifadəçi məkanından istismar edilə bilən istifadədən sonra pulsuz şərt yaratmaq üçün uğurla istismar edilmişdir. İmtiyazların artırılması üçün işləyən bir istismar nümayiş etdirilmişdir. Debian 10 nüvəsi 4.19.0-13-amd64 ilə.
Eyni zamanda, dərc olunmuş məqalədə daha çox işləyən istismarın yaradılması texnikasına deyil, bu cür zəifliklərdən qorunmaq üçün nüvədə hansı vasitələrin mövcudluğuna diqqət yetirilir. Nəticə təsəlliverici deyil; yığında yaddaş seqmentasiyası və boşaldıqdan sonra yaddaşa girişə nəzarət kimi üsullar praktikada istifadə edilmir, çünki performansın azalmasına səbəb olur və CFI (Control Flow Integrity) əsaslı qoruma hücumun sonrakı mərhələlərində istismarları bloklayır, təkmilləşdirilməsi lazımdır.
Uzunmüddətli perspektivdə nəyin dəyişəcəyini nəzərdən keçirərkən diqqətəlayiq olanlardan biri qabaqcıl statik analizatorların istifadəsi və ya yoxlamaq üçün zəngin annotasiyalara malik Rust və C dialektləri (məsələn, Yoxlanmış C) kimi yaddaş üçün təhlükəsiz dillərin istifadəsidir. Quraşdırma mərhələsində vəziyyət Kilidlər, obyektlər və göstəricilər. Qoruma üsullarına həmçinin panic_on_oops rejiminin aktivləşdirilməsi, nüvə strukturlarının yalnız oxumaq üçün rejimə keçirilməsi və seccomp kimi mexanizmlərdən istifadə edərək sistem zənglərinə girişin məhdudlaşdırılması daxildir.
Mənbə: opennet.ru
