Güvenlik firması Calif, OpenBSD 7.9 üzerinde yerel root yetkisi kazandıran bir açık zinciri yayımladı. Zincirin temelinde 1988'den bu yana taşınan 37 yıllık bir tam sayı taşması hatası bulunuyor; her iki güvenlik açığı da Eylül ayında yamalı hale getirildi.
Yazılım ve Uygulamalar
Admin3 okunma

OpenBSD'de 37 Yıllık Bellek Hatası Root Açığına Kapı Araladı

Güvenlik firması Calif, OpenBSD 7.9 üzerinde yerel root yetkisi kazandıran bir açık zinciri yayımladı. Zincirin temelinde 1988'den bu yana taşınan 37 yıllık bir tam sayı taşması hatası bulunuyor; her iki güvenlik açığı da Eylül ayında yamalı hale getirildi.

OpenBSD'de 37 Yıllık Bellek Hatası Root Açığına Kapı Araladı

Haber detayı

Güvenlik firması Calif, OpenBSD 7.9 işletim sistemi üzerinde yerel bir saldırganın root yetkisi kazanmasına olanak tanıyan bir açık zinciri ve buna ait kavram kanıtı (proof-of-concept) kodunu kamuoyuyla paylaştı. Zincirin giriş noktası, 1988 tarihli orijinal BSD kaynak kodlarından miras alınan ve yaklaşık 37 yıldır düzeltilmemiş bir tam sayı taşması hatasına dayanıyor. Exploit, OpenBSD'nin KARL çekirdek adres rastgeleştirmesini ve SMAP ile SMEP donanım korumalarını da devre dışı bırakıyor.

37 Yıllık Bir Mirasın Bedeli: shm_nattch Taşması​

Sorunun kaynağı, paylaşımlı bellek ekleme sayacı olan shm_nattch değişkeninin veri tipiyle ilgili. 1988 tarihli orijinal BSD kaynaklarında bu sayaç, maksimum değeri 32.767 olan işaretli 16 bitlik bir short olarak tanımlandı. OpenBSD bu tipi hiçbir zaman genişletmedi. Exploit, 127 paylaşımlı bellek segmenti eşleyip 259 süreç çatallayarak sayacı maksimum değerinin üzerine çıkarıyor ve değerin −32.643'e dönmesine neden oluyor. Bu taşma, shmat(4) ekleme fonksiyonunda yer alıyor ve OpenBSD tarafından bir güvenilirlik düzeltmesi olarak sınıflandırılmıştı; doğrudan güvenlik açığı olarak değil.

Çekirdek Kullanım-Sonrası-Serbest Bırakma ve Koruma Atlatma​

Tam sayı taşmasının ardından devreye giren ikinci halka, çekirdekteki bir referans sayımı kullanım-sonrası-serbest-bırakma (use-after-free) hatasıdır. Bozulmuş referans sayısı, çekirdeğin diğer süreçlerin hâlâ kullandığı belleği serbest bırakmasına yol açıyor. Bir yarış koşuluyla tetiklenen bu hata, ardından ayrı bir sınır dışı yazma işlemine zemin hazırlıyor: çekirdekteki çok noktaya yayın üyelik sayaçları üzerine yazılıyor. Etkilenen soket kapandığında ortaya çıkan azaltma işlemleri, sayfa tablosu girişlerini değiştiriyor; kullanıcı bellek eşlemesi denetçi erişimine açılıyor ve hem SMAP hem de SMEP korumaları atlatılmış oluyor. Exploit, son adımda lo0 ve enc0 ağ arayüzü işleyicilerindeki öngörülebilir bir çekirdek adresindeki fonksiyon işaretçisinin üzerine yazarak kendi kodunu çalıştırıyor.

KARL'ın Sınırları: Bellek Ayırıcılar Rastgele Değil​

OpenBSD'nin KARL mekanizması, çekirdek ikili dosyasını yeniden bağlayarak hem fonksiyon hem de veri adreslerini rastgeleleştiriyor. Ancak araştırmacı Andrew Griffiths'in bulgularına göre çekirdeğin bellek ayırıcıları temel adres rastgeleştirmesinden yoksun. Hem önyükleme zamanı hem de en iyi uyum (best-fit) ayırıcıları rastgele taban adres kullanmıyor; bu nedenle lo0 ve enc0 ağ arayüzü işleyicilerindeki fonksiyon işaretçileri de dahil olmak üzere erken önyükleme yapıları, aynı donanım üzerinde yeniden başlatmalar arasında hep aynı adreslerde yer alıyor. Bu durum, exploitin herhangi bir bilgi ifşası açığına gerek duymadan çalışmasını mümkün kılıyor.

Yamalar ve Önerilen Ek Sertleştirme Adımları​

Calif, açıkları daha önce OpenBSD ekibine bildirdiğini açıkladı. Tam sayı taşması, 14 Eylül'de errata 018 kapsamında yayımlanan bir güvenilirlik yamasıyla giderildi. Zinciri tamamlayan referans sayımı use-after-free hatası ise 30 Eylül'de errata 026 kapsamında bir güvenlik yaması olarak kapatıldı. Her iki yama da syspatch aracılığıyla tüm mimariler için sunuluyor. OpenBSD 7.8 de tam sayı taşması yamasını aldı. Yayım tarihi itibarıyla her iki açık için henüz CVE numarası atanmamış durumda ve açıkların gerçek saldırılarda kullanıldığına dair herhangi bir kanıt bulunmuyor.
Calif, mevcut yamalar dışında dört ek sertleştirme kategorisi öneriyor: çekirdek bağlı listeleri için güvenli bağlantı kaldırma (FreeBSD ve NetBSD'nin halihazırda uyguladığı yöntem), sayfa tablosu öz-referans eşlemesinin rastgeleleştirilmesi, çekirdek bellek ayırıcısının rastgeleleştirilmesi ve derleyici tabanlı sınır denetimi. Kavram kanıtı exploit kodu GitHub üzerinde kamuya açık biçimde yayımlandı.

Sıkça Sorulan Sorular​

Bu açık zinciri OpenBSD'nin hangi sürümünü etkiliyor?​

Açık zinciri OpenBSD 7.9 sürümünü etkiliyor. Tam sayı taşması yaması ayrıca OpenBSD 7.8'e de uygulandı. Her iki yama da syspatch aracılığıyla tüm mimariler için sunuluyor.

shm_nattch değişkenindeki tam sayı taşması neden bu kadar uzun süre fark edilmedi?​

shm_nattch sayacı, 1988 tarihli orijinal BSD kaynaklarında işaretli 16 bitlik short olarak tanımlandı. OpenBSD bu veri tipini hiçbir zaman genişletmedi. Açık, bir güvenlik sorunu olarak değil güvenilirlik sorunu olarak sınıflandırıldığından güvenlik denetimlerinin kapsamı dışında kalmış olabilir.

Exploit, KARL adres rastgeleştirmesini nasıl atlıyor?​

KARL çekirdek ikili dosyasını yeniden bağlayarak adresleri rastgeleleştirse de çekirdeğin bellek ayırıcıları temel adres rastgeleştirmesinden yoksun. Bu nedenle lo0 ve enc0 ağ arayüzü işleyicilerindeki fonksiyon işaretçileri aynı donanım üzerinde yeniden başlatmalar arasında sabit adreslerde kalıyor; exploit herhangi bir bilgi ifşası açığına gerek duymadan bu adreslere ulaşabiliyor.

Açıklar için CVE numarası atandı mı ve saldırılarda kullanıldığına dair kanıt var mı?​

Haberin yayımlandığı tarih itibarıyla her iki açık için de CVE numarası atanmamış durumda. Açıkların gerçek saldırılarda kullanıldığına dair herhangi bir kanıt da bulunmuyor.

Calif, OpenBSD için hangi ek sertleştirme önlemlerini öneriyor?​

Calif dört kategori öneriyor: çekirdek bağlı listeleri için güvenli bağlantı kaldırma (FreeBSD ve NetBSD'nin halihazırda uyguladığı bir yöntem), sayfa tablosu öz-referans eşlemesinin rastgeleleştirilmesi, çekirdek bellek ayırıcısının rastgeleleştirilmesi ve derleyici tabanlı sınır denetimi.

Etiketler

Yorumlar (0)

Yorum yapmak için giriş yapmalısınız.

Geri
Üst