ZafiyetYüksek

OpenBSD 7.9'da onlarca yıllık paylaşımlı bellek hatasıyla root veren istismar yayımlandı

Güvenlik şirketi Calif, OpenBSD 7.9 için çalışan bir yerel yetki yükseltme istismarı yayımladı; düzeltmeler errata 018 ve 026'da.

OpenBSD 7.9'da onlarca yıllık paylaşımlı bellek hatasıyla root veren istismar yayımlandı

Kısaca

  • İstismar, shmat'teki tamsayı taşmasını bir use-after-free ve sınır dışı yazma hatasıyla zincirleyerek root yetkisi sağlıyor.
  • The Hacker News'e göre taşan sayaç türü 1988 tarihli BSD kaynak koduna dayanıyor.
  • Zincir, bilgi sızdırma açığına gerek duymadan KARL, SMAP ve SMEP korumalarını atlatıyor.
  • Errata 018 (14 Eylül) ve 026 (30 Eylül) açıkları kapatıyor; aktif istismar bilinmiyor.

The Hacker News'in 16 Ekim'de aktardığına göre güvenlik şirketi Calif, kökleri 1988 tarihli koda uzanan bir paylaşımlı bellek hatasını daha yeni çekirdek açıklarıyla zincirleyerek OpenBSD 7.9'da yerel kullanıcıya root yetkisi veren çalışan bir istismar yayımladı. "big-fish" başlıklı ayrıntılı teknik yazı ve GitHub'daki tam kavram kanıtı kodu, OpenBSD'nin güvenlik sıkılaştırması nedeniyle güvenlik duvarlarında ve hassas sistemlerde yaygın kullanılması nedeniyle dikkat çekiyor. OpenBSD açıkları eylülde kapattı.

Neler oldu?

The Hacker News'e göre Calif açıkları bu yılın başlarında OpenBSD projesine bildirdi. Yamalar eylülde yayımlandı, teknik yazı ve istismar kodu ise 16 Ekim'de paylaşıldı. Yayına göre haber yayımlandığında iki açığa da CVE kimliği atanmamıştı ve saldırılarda kullanıldıklarına dair bir kanıt yok.

Teknik detaylar

Zincir, paylaşımlı bellek bağlama işlevi shmat'teki bir tamsayı taşmasıyla başlıyor. The Hacker News'in aktardığına göre bağlantı sayacı shm_nattch, en fazla 32.767 değerini alabilen işaretli 16 bitlik bir tür; bu tür 1988 tarihli BSD kaynaklarından devralınmış ve hiç genişletilmemiş. İstismar 127 paylaşımlı bellek bölümü oluşturup 259 süreç başlatarak sayacın negatif bir değere dönmesini sağlıyor.

Bozulan sayaç, bir yarış durumu üzerinden referans sayımında use-after-free hatasına yol açıyor ve çekirdek hâlâ kullanılan belleği serbest bırakıyor. Ayrı bir sınır dışı yazma hatası çekirdekteki çok noktaya yayın üyelik sayaçlarının üzerine yazıyor; ilgili soket kapandığında azalan değerler sayfa tablosu girdilerini değiştirerek kullanıcı belleğini çekirdeğin erişebileceği hâle getiriyor ve böylece SMAP ile SMEP korumaları atlatılıyor. Ardından istismar, tahmin edilebilir bir çekirdek adresindeki fonksiyon işaretçisinin üzerine yazıyor.

Yayına göre zincir, OpenBSD'nin çekirdek adres rastgeleleştirmesi KARL'ı da etkisiz kılıyor; çünkü çekirdeğin bellek ayırıcıları deterministik çalışıyor ve bazı ağ arayüzü işleyicilerinin işaretçileri aynı donanımda yeniden başlatmalar arasında aynı adreste kalıyor. Bu nedenle bilgi sızdıran ek bir açığa gerek duyulmuyor.

Kimler etkileniyor?

İstismar OpenBSD 7.9 üzerinde gösterildi. Habere göre OpenBSD 7.8 de tamsayı taşması düzeltmesini aldı. Saldırı yerel olduğundan, güvenilmeyen kullanıcılara erişim veren veya saldırgana ilk erişim sağlayabilecek açık servisler çalıştıran sistemler en yüksek risk altında.

Ne yapmalı?

Yöneticiler iki errata yamasını da syspatch ile uygulamalı: OpenBSD'nin güvenilirlik düzeltmesi olarak sınıflandırdığı ve 14 Eylül'de yayımlanan errata 018 ile 30 Eylül'de güvenlik düzeltmesi olarak çıkan errata 026. Zinciri tamamen kapatmak için ikisi de gerekli ve tüm mimarileri kapsıyor. Calif ayrıca çekirdek bağlı listelerinde güvenli bağlantı kaldırma, 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 gibi ek sıkılaştırmalar önerdi.

Kaynaklar

Bu haber yukarıda listelenen kaynaklara dayanmaktadır. Kritik sistemlerle ilgili işlem yapmadan önce üreticinin resmi duyurusunu kontrol edin.