CVE-2023-53087

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: drm/i915/active: Boşta olmayan bariyerlerin çit izleyicileri olarak yanlış kullanımı düzeltildi Kullanıcılar, birçok grafik uygulamasının eşzamanlı olarak çalıştığı ortamlarda i915 perf kullanırken liste bozulmaları nedeniyle "oops" hataları raporlamıştır. Kök neden analizi, bariyer işleme kodundaki bir soruna işaret etmiştir; çekirdek bağlamında aktif bariyerlerin perf istekleriyle değiştirilmesini sağlayan perf açık/kapalı işlemleri ile kullanıcı bağlamındaki ilk sabitleme/son serbest bırakma sırasında gerçekleştirilen eşzamanlı bariyer ön tahsis/edinme işlemleri arasında bir yarış durumu (race condition) oluşmaktadır. Bir bileşik izleyiciye istek eklerken, halihazırda tahsis edilmiş ve o bileşiğe kaydedilmiş mevcut bir çit izleyicisini yeniden kullanmaya çalışıyoruz. Elde ettiğimiz izleyici başka bir çiti takip ediyor olabilir, boşta bir bariyer veya aktif bir bariyer olabilir. Eğer elde ettiğimiz izleyici boşta olmayan bir bariyer ise, bu bariyeri ait olduğu bariyer görevleri listesinden silmeye çalışıyoruz. Ancak bunu yaparken, bariyer silme işlemini gerçekleştiren fonksiyonun dönüş değerini dikkate almıyoruz. Silme işlemi başarısız olursa, hala bir bariyer görevi olarak kayıtlı olan izleyiciyi yeniden kullanmış oluruz. Aynı yapı alanı hem çit geri çağırma listeleri hem de bariyer görevleri listesi için yeniden kullanıldığından, muhtemelen liste bozulmaları meydana gelecektir. Bariyerler artık, liste içeriği geçici olarak kaldırılarak, silinecek düğüm atlanarak içerik taranarak ve ardından listenin değiştirilmiş içerikle tekrar doldurulması yoluyla bariyer görevleri listesinden silinmektedir. Bilinçli olarak yarış durumuna açık olan bu eşzamanlı silme girişimleri serileştirilmezse, listenin geçici olarak boş olması nedeniyle bunlardan biri veya daha fazlası başarısız olabilir. Bariyer silme sonuçlarını görmezden gelen ilgili kod, başlangıçta v5.4 sürümünde d8af05ff38ae ("drm/i915: Allow sharing the idle-barrier from other kernel requests") commit'i ile tanıtılmıştır. Ancak, o dönemde bariyer silme rutininin tüm kullanıcıları görünüşte serileştirildiği için sorun kendini göstermemiştir. Yeni geliştirilen igt@gem_barrier_race@remote-request IGT testi yardımıyla yapılan git bisect sonuçları, liste bozulmalarının v5.5 sürümünde tanıtılan 311770173fac ("drm/i915/gt: Schedule request retirement when timeline idles") commit'inden sonra ortaya çıkmaya başlamış olabileceğini göstermektedir. Bariyer silme girişimi sonuçları dikkate alınmalıdır; bariyer yalnızca listeden başarıyla silindiyse boşta olarak işaretlenmelidir. Ardından, çitimizi şu anda takip edilen çit olarak ayarlamaya devam etmeden önce, aldığımız izleyicinin boşta olmayan bir bariyer olmadığından emin olunmalıdır. Bu kontrol başarısız olursa söz konusu izleyici kullanılmamalı, bunun yerine yeni ve kullanılabilir bir izleyici edinilmeye çalışılmalıdır. v3: Beklenen sonucu belgelemek için unlikely() kullanıldı (Andi), - commit açıklamasındaki dil bilgisi hataları düzeltildi. v2: Kod değişikliği yok, - sorumluluk v5.4'teki d8af05ff38ae değil, v5.5'teki 311770173fac commit'ine yüklendi, - commit açıklaması yeniden düzenlendi. (commit 506006055769b10d1b2b4e22f636f3b45e0e9fc7 üzerinden cherry pick edildi)

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın2 May 2025
İlk görülme2 May 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.176, 5.15.104, 6.1.21, 6.2.8 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.5 ≤ v < 5.10.176, 5.11 ≤ v < 5.15.104, 5.16 ≤ v < 6.1.21, 6.2 ≤ v < 6.2.8, 6.35.10.176, 5.15.104, 6.1.21, 6.2.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-2023-53087 · Linux Kernel · Dark Radar