Linux'un yeni mseal sistem çağrısına derinlemesine bakış
mseal, Linux çekirdeği 6.10 sürümünde kullanıma giren yeni bir sistem çağrısıdır ve bellek koruması için "bellek mühürleme" işlevi sunar.
- Bu sistem çağrısı, program çalışırken bellek bölgelerini yetkisiz değişikliklere karşı değiştirilemez hale getirerek saldırganların bellek izinlerini değiştirmesini veya bellek yerleşimini manipüle etmesini engeller.
mseal, uzak saldırganların kod çalıştırmasını önlemeye yöneliktir; bellekte hassas veri saklayan yerel saldırganlara karşı savunma sağlayan mevcut memfd_create ve memfd_secretten farklıdır.
mseal nasıl çalışır
msealin işlev imzası basittir; başlangıç adresi ve uzunluğu alarak ilgili bellek bölgesini mühürler.
do_mseal işlevi bellek bölgesini kilitler ve check_mm_seal ile apply_mm_seal üzerinden bellek bölgesinin geçerliliğini denetleyip mühürler.
- Mühürlenmiş bellek bölgelerinde
mprotect, munmap, mremap gibi sistem çağrılarıyla izin değiştirme, eşlemeyi kaldırma veya yeniden boyutlandırma yapılamaz.
msealin savunduğu saldırı teknikleri
- NX güçlendirmesi:
mseal, VMA'nın yürütme izinlerinin değiştirilmesini engelleyerek shellcode tabanlı saldırıları önler.
- Eşleme kaldırma tabanlı yalnızca veri saldırılarını hafifletme:
mseal, bellek bölgelerinin keyfi biçimde kaldırılıp yeniden eşlenmesini önleyerek yalnızca veri saldırılarını engeller.
mseal ile yazılımı güçlendirme
mseal, yazılımın belirli bellek bölgelerini mühürleyerek güvenliği artırabilir.
- Geliştiriciler, güvenilmeyen verilerin bulunabileceği bellek bölgelerini seçici olarak mühürlemek için
mseal kullanabilir.
- glibc ile entegrasyon ilerledikçe otomatik mühürleme özelliğinin eklenmesi mümkün olabilir.
GN⁺ özeti
mseal, Linux çekirdeğine yeni eklenen bir güvenlik özelliğidir; bellek bölgelerini mühürleyerek uzak saldırganların kod çalıştırmasını önler.
- Bu sistem çağrısı, mevcut bellek koruma yöntemlerinden farklı olarak bellek izinlerinin değiştirilmesini ve eşlemelerin kaldırılmasını engelleyerek yalnızca veri saldırılarını önler.
msealin eklenmesi, yazılım güvenliğini güçlendirmede önemli bir rol oynar ve glibc ile entegrasyon sayesinde daha fazla kullanım senaryosu beklenmektedir.
- Benzer işlevlere sahip diğer projeler arasında bellek korumasına yönelik
memfd_create ve memfd_secret bulunur.
1 yorum
Hacker News görüşü
Çekirdek posta listesinde "hararetli tartışma"dan söz edildiği belirtiliyor. Bir yorumda, içeriden birinin itirazları ve endişeleri özetleyip özetleyemeyeceği soruluyor. Posta listesinin fazla sert olduğu için ondan kaçınma eğilimi olduğu söyleniyor
Chrome bu çağrıyı istiyor, ancak saldırgan farklı bayraklarla yeniden eşleyebileceği için mühürlenmiş sayfaların mührü kaldırılamıyor
mseal()ve bununla ilgili sonraki makaleye bağlantı veriliyorModern (x86_64) mimarilerin güvenli programlamayı teşvik eden pek çok özelliğe sahip olmasına rağmen, işletim sisteminin bu tür çağrıları uygulamak zorunda olmasından üzüntü duyuluyor
msealsistem çağrısının LD_PRELOAD hilesiyle etkisiz hâle getirilip getirilemeyeceği soruluyorMakaledeki
mseal()prototipi sözdizimi açısından doğru değil. İlk argümanunsigned start addrdeğil,unsigned long start_addrolmalıOpenBSD'nin bu özelliğe uzun zamandır sahip olduğu, bunun neden Linux'a ancak şimdi eklendiğinin sorgulandığı belirtiliyor