2 puan yazan GN⁺ 2024-10-27 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-10-27
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

    • Mekanizmanın kendisi makul görünüyor, ancak bunun çekirdekte zaten mevcut olmaması şaşırtıcı
  • 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

    • Bu, çalışma zamanında ayrılan sayfalarda kullanılamayacağı anlamına geliyor; tüm süreç ömrü boyunca elde tutulması amaçlanmıyorsa kullanılamaz
    • Bunun JS sandbox gibi belleklerde kullanılamayacağı anlamına gelip gelmediği soruluyor
    • Chrome'un bellek/süreç yönetim biçimine aşina olunmadığı için bunun neden sorun olmadığından emin olunamadığı belirtiliyor
  • mseal() ve bununla ilgili sonraki makaleye bağlantı veriliyor

  • Modern (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

    • Eski sistemleri yamamaya çalışma çabalarının bilişimin ilerlemesini yavaşlattığı ve milyarlarca insanı riske attığı söyleniyor
    • Mimari hatalar mevcut olsa da, yazılım mevcut özellikleri gerektiği gibi kullanamıyor
  • mseal sistem çağrısının LD_PRELOAD hilesiyle etkisiz hâle getirilip getirilemeyeceği soruluyor

  • Makaledeki mseal() prototipi sözdizimi açısından doğru değil. İlk argüman unsigned start addr değil, unsigned long start_addr olmalı

  • OpenBSD'nin bu özelliğe uzun zamandır sahip olduğu, bunun neden Linux'a ancak şimdi eklendiğinin sorgulandığı belirtiliyor