CVE-2026-31656

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: drm/i915/gt: intel_engine_park_heartbeat fonksiyonundaki refcount underflow hatası düzeltildi Heartbeat worker ve intel_engine_park_heartbeat() fonksiyonunun aynı engine->heartbeat.systole isteğini serbest bırakmak için yarışması durumunda bir serbest bırakıldıktan sonra kullanım (use-after-free) / refcount underflow durumu oluşabilmektedir. Heartbeat worker, engine->heartbeat.systole değerini okur ve istek tamamlandığında üzerinde i915_request_put() çağrısı yapar; ancak işaretçiyi ayrı ve atomik olmayan bir adımda temizler. Eş zamanlı olarak, başka bir CPU üzerindeki bir istek emekliliği (request retirement), engine wakeref değerini sıfıra indirerek __engine_park() -> intel_engine_park_heartbeat() sürecini tetikleyebilir. Eğer o noktada heartbeat zamanlayıcısı beklemedeyse, cancel_delayed_work() true döner ve intel_engine_park_heartbeat() güncel olmayan non-NULL systole işaretçisini okuyarak üzerinde tekrar i915_request_put() çağrısı yapar, bu da bir refcount underflow'a neden olur: ``` <4> [487.221889] Workqueue: i915-unordered engine_retire [i915] <4> [487.222640] RIP: 0010:refcount_warn_saturate+0x68/0xb0 ... <4> [487.222707] Call Trace: <4> [487.222711] <TASK> <4> [487.222716] intel_engine_park_heartbeat.part.0+0x6f/0x80 [i915] <4> [487.223115] intel_engine_park_heartbeat+0x25/0x40 [i915] <4> [487.223566] __engine_park+0xb9/0x650 [i915] <4> [487.223973] ____intel_wakeref_put_last+0x2e/0xb0 [i915] <4> [487.224408] __intel_wakeref_put_last+0x72/0x90 [i915] <4> [487.224797] intel_context_exit_engine+0x7c/0x80 [i915] <4> [487.225238] intel_context_exit+0xf1/0x1b0 [i915] <4> [487.225695] i915_request_retire.part.0+0x1b9/0x530 [i915] <4> [487.226178] i915_request_retire+0x1c/0x40 [i915] <4> [487.226625] engine_retire+0x122/0x180 [i915] <4> [487.227037] process_one_work+0x239/0x760 <4> [487.227060] worker_thread+0x200/0x3f0 <4> [487.227068] ? __pfx_worker_thread+0x10/0x10 <4> [487.227075] kthread+0x10d/0x150 <4> [487.227083] ? __pfx_kthread+0x10/0x10 <4> [487.227092] ret_from_fork+0x3d4/0x480 <4> [487.227099] ? __pfx_kthread+0x10/0x10 <4> [487.227107] ret_from_fork_asm+0x1a/0x30 <4> [487.227141] </TASK> ``` Bu sorun, her iki yarışan yolda atomik olmayan işaretçi okuma ve ayrı temizleme işlemleri xchg() ile değiştirilerek çözülmüştür. xchg(), eski işaretçiyi atomik olarak okuyan ve yerine NULL yazan tek ve bölünemez bir donanım talimatıdır. Bu, eş zamanlı iki çağrıdan yalnızca birinin non-NULL işaretçiyi alıp put işlemini gerçekleştirmesini, diğerinin ise NULL alarak işlemi atlamasını garanti eder. (commit 13238dc0ee4f9ab8dafa2cca7295736191ae2f42 üzerinden cherry pick yapılmıştır)

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın24 Nis 2026
İlk görülme24 Nis 2026
Zayıflık türüCWE-362Yarış durumu

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.15.203, 6.1.169, 6.6.135, 6.12.82, 6.18.23, 6.19.13 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.5.1 ≤ v < 5.15.203, 5.16 ≤ v < 6.1.169, 6.2 ≤ v < 6.6.135, 6.7 ≤ v < 6.12.82, 6.13 ≤ v < 6.18.23, 6.19 ≤ v < 6.19.13, 5.5, 7.05.15.203, 6.1.169, 6.6.135, 6.12.82, 6.18.23, 6.19.13

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-2026-31656 · Linux Kernel · Dark Radar