OpenBSD-də W^X təhlükəsizlik mexanizmini gücləndirməyi planlaşdırır

Teo De Raadt paylaşdı W^X (Write XOR Execute) yaddaşın qorunması mexanizmini gücləndirməyi planlaşdırır. Mexanizmin mahiyyəti ondan ibarətdir ki, proses yaddaş səhifələrinə yazmaq və icra etmək üçün eyni vaxtda daxil olmaq mümkün deyil. Belə ki, kod yalnız yazı deaktiv edildikdən sonra icra edilə bilər və yaddaş səhifəsinə yazmaq yalnız icra dayandırıldıqdan sonra mümkündür. W^X mexanizmi istifadəçi məkanı proqramlarını ümumi bufer daşqın hücumlarından, o cümlədən yığın daşqınlarından qorumağa kömək edir və OpenBSD-də aktivdir. default olaraq.

W^X-də işə başlayandan bəri bunun uzun bir yol olduğu aydın idi, çünki JIT-dən istifadə edən xeyli sayda tətbiq var idi. JIT tətbiqləri üç kateqoriyaya bölünə bilər:

  • Yaddaşın W və X vəziyyətləri arasında dəyişdirilməsi, sistem çağırışının "qiymətini" qəbul etmək qoruyucu.
  • Eyni yaddaşın bir cüt W və X xəritələri arasında ləqəblərin yaradılması.
  • Ən “çirkli” seçim eyni vaxtda qeyd və icra etməyə imkan verən W|X yaddaş modeli tələb edir.

Hal-hazırda, üçüncü variantdan istifadə edən proqramlar əhəmiyyətli dərəcədə azdır və birinci və ikincidən daha çox istifadə olunur. Bununla belə, W|X JIT (əsasən Chromium və Iridum) ilə proqramları işə salmaq lazım olduğundan, icra edilə bilən ELF olduğu halda yaddaşdan həm yazı, həm də icra üçün eyni vaxtda istifadə etməyə imkan verən "wxallowed" fayl sistemi quraşdırma seçimi əlavə edildi. fayl "wxneeded" markeri ilə qeyd olunur və proqramların özləri əlavə olaraq mexanizmlərdən istifadə edərək qorunur. vəd и açılacaq istifadə olunan sistem zənglərinin siyahısını və müvafiq olaraq proqram üçün mövcud fayl sisteminin hissələrini məhdudlaşdırmaq.

Bu cür tətbiqlərdə zəifliklərin istismarını daha da çətinləşdirmək üçün mexanizmə əlavə təklif edilir. MAP_STACK, sistem çağırışının yazıla bilən yaddaş səhifəsindən icra edilib-edilmədiyini yoxlayır. Səhifə yazıla biləndirsə, proses dayandırılmalı olur. Beləliklə, təcavüzkar sistem zənglərindən istifadə edə bilməyəcək və JIT tətbiqində lazımi qadcetləri tapmağa və ya hətta birbaşa daxildə sistem zənglərinin stublarını aşkar etmək üçün daha çətin işi görməyə məcbur olacaq. təsadüfən bağlı libc.

Chrome/Iridium prosesləri artıq girov və açılma ilə kifayət qədər etibarlı şəkildə qorunur, lakin məsələn, write(2) sistem çağırışından istifadə etmək qabiliyyətinin aradan qaldırılması açıq-aydın bəzi üstünlüklərə malikdir, çünki bu, təcavüzkar üçün əlavə çətinliklər yaradır. Bununla belə, JIT tətbiqi W|X yaddaşından yerli sistem zənglərindən istifadə edərsə, çətinliklər də yarana bilər. Bununla belə, bunun belə olmayacağını ümid etməyə əsas var, çünki ABI bir neçə dəfə dəyişdirilib, lakin heç kim heç vaxt problemlər barədə məlumat verməyib.

Dəyişikliklər artıq OpenBSD-Current filialının adi görüntülərində mövcuddur, maraqlanan hər kəs test etməyə dəvət olunur.

Chrome/Iridium-da rejimin görünüşü ilə bağlı xəbərlər Theo-dan ayrıca şərhə layiqdir JITless. Onun nöqteyi-nəzərindən bu, bəzi istifadə modelləri üçün məqbuldur, lakin yəqin ki, hamı üçün deyil, çünki bu rejim prosessorun yükünü açıq şəkildə artıracaq. Hazırda /usr/local üçün "wxallowed" funksiyasını deaktiv etsəniz, Chrome əsasən işləyəcək, baxmayaraq ki, bəzi genişləndirmələrdə problemlər ola bilər (gostery nümunədir). Bu və ya digər şəkildə Teo ümid edir ki, JITless rejimində tam hüquqlu iş yaxın gələcəkdə tam işlək vəziyyətə gətiriləcək.

Mənbə: opennet.ru

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