CVE-2021-47505

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: aio: eksik POLLFREE işleme nedeniyle oluşan serbest bırakıldıktan sonra kullanım (use-after-free) hatası düzeltildi signalfd_poll() ve binder_poll(), normalde olduğu gibi struct file yerine ömrü mevcut görev olan bir waitqueue kullandıkları için özeldirler. Engelleyici (blocking) yoklamalar tek bir görev içinde gerçekleştiği için bu durum sorun teşkil etmez; ancak engelleyici olmayan (non-blocking) yoklamalar başka bir çözüm gerektirir. Bu çözüm, tüm bekleyenlere bir POLLFREE bildirimi göndererek kuyruğun serbest bırakılmadan önce temizlenmesidir. Maalesef sadece eventpoll POLLFREE bildirimlerini işlemektedir. Kernel v4.18 sürümünde ikinci bir engelleyici olmayan yoklama türü olan aio poll eklenmiş olup POLLFREE bildirimlerini işlemez. Bu durum, bir signalfd veya binder fd'sinin aio poll ile yoklanması ve waitqueue'nun serbest bırakılması durumunda bir serbest bırakıldıktan sonra kullanım (use-after-free) hatasının oluşmasına izin verir. Bu sorun, aio poll'un POLLFREE bildirimlerini işlemesi sağlanarak düzeltilmiştir. Ramji Jiyani <[email protected]> tarafından hazırlanan bir yama (https://lore.kernel.org/r/[email protected]), POLLFREE görüldüğünde aio_poll_wake()'in isteği her zaman satır içi olarak tamamlamasını sağlayarak bunu yapmaya çalışmıştır. Ancak bu çözüm iki hata içermekteydi. Birincisi, waitqueue kilidini tutarken koşulsuz olarak aio bağlamını kilitlediği için normal kilitleme sırasını tersine çevirmiş ve bir deadlock oluşturmuştur. İkincisi, istek geçici olarak kuyruktan çıkarıldığında POLLFREE bildirimlerinin kaçırılabileceğini göz önünde bulundurmamıştır. İkinci sorun önceki yamamla çözülmüştür. Bu yama ise POLLFREE bildirimlerini deadlock oluşturmayacak şekilde işleyerek serbest bırakıldıktan sonra kullanım (use-after-free) hatasını uygun şekilde düzeltmektedir. Bunu, eventpoll'un yaptığına benzer şekilde, waitqueue'nun serbest bırakılmasının RCU ile geciktirilmesi gerçeğinden yararlanarak gerçekleştirir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın24 May 2024
İlk görülme24 May 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel4.19.221, 5.4.165, 5.10.85, 5.15.8 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel4.18 ≤ v < 4.19.221, 4.20 ≤ v < 5.4.165, 5.5 ≤ v < 5.10.85, 5.11 ≤ v < 5.15.8, 5.164.19.221, 5.4.165, 5.10.85, 5.15.8

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2021-47505 · Linux Kernel · Dark Radar