Linux çekirdeğinin tty alt sistemindeki bir güvenlik açığından yararlanma tekniği açıklandı

Google Project Zero ekibinden araştırmacılar, Linux çekirdeğinin tty alt sisteminden TIOCSPGRP ioctl işleyicisinin uygulanmasındaki bir güvenlik açığından (CVE-2020-29661) yararlanmaya yönelik bir yöntem yayınladı ve ayrıca bu tür güvenlik açıklarını engelleyebilecek koruma mekanizmalarını ayrıntılı olarak inceledi. güvenlik açıkları.

Soruna neden olan hata, geçen yıl 3 Aralık'ta Linux çekirdeğinde giderildi. Sorun, 5.9.13 sürümüne kadar olan çekirdeklerde görülüyor, ancak çoğu dağıtım, geçen yıl sunulan çekirdek paketlerine yapılan güncellemelerle sorunu çözdü (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Benzer bir güvenlik açığı (CVE-2020-29660) aynı anda TIOCGSID ioctl çağrısının uygulanmasında da bulundu, ancak bu güvenlik açığı zaten her yerde düzeltildi.

Sorun, kilitleri ayarlarken oluşan bir hatadan kaynaklanıyor ve bu hata, ioct manipülasyonları aracılığıyla kullanıcı alanından yararlanılan serbest kullanımdan sonra kullanım koşullarını oluşturmak için kullanılan sürücüler/tty/tty_jobctrl.c kodunda bir yarış durumuna yol açıyor. TIOCSPGRP çağırılıyor. 10-4.19.0-amd13 çekirdeğine sahip Debian 64'da ayrıcalık yükseltme için çalışan bir istismar gösterilmiştir.

Aynı zamanda yayınlanan makale, çalışan bir istismar oluşturma tekniğinden çok, bu tür güvenlik açıklarına karşı koruma sağlamak için çekirdekte hangi araçların bulunduğuna odaklanıyor. Sonuç pek iç açıcı değil; yığında bellek bölütleme ve bellek serbest bırakıldıktan sonra belleğe erişimin kontrol edilmesi gibi yöntemler performansın düşmesine yol açtığı için pratikte kullanılmazken, CFI (Control Flow Integrity) tabanlı koruma da pratikte kullanılmamaktadır. Bir saldırının sonraki aşamalarında istismarları engeller, iyileştirilmesi gerekir.

Uzun vadede neyin fark yaratacağı düşünüldüğünde öne çıkanlardan biri gelişmiş statik analizörlerin kullanılması veya kontrol etmek için zengin açıklamalara sahip (Checked C gibi) Rust ve C lehçeleri gibi bellek açısından güvenli dillerin kullanılmasıdır. yapım aşamasındaki durum kilitler, nesneler ve işaretçiler. Koruma yöntemleri arasında panik_on_oops modunun etkinleştirilmesi, çekirdek yapılarının salt okunur moda geçirilmesi ve seccomp gibi mekanizmalar kullanılarak sistem çağrılarına erişimin kısıtlanması da yer alır.

Kaynak: opennet.ru

Yorum ekle