CVE-2026-89625
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: HID: sony: sürücü ayırımı (unbind) sırasında ghl_poke_timer / ghl_urb için UAF düzeltmesi GHL (Guitar Hero Live) dongle'ları için sony_probe() periyodik bir zamanlayıcı kurar: ghl_magic_poke() (zamanlayıcı geri çağırma fonksiyonu) sc->ghl_urb'yi gönderir ve URB tamamlanma fonksiyonu olan ghl_magic_poke_cb(), mod_timer() ile zamanlayıcıyı yeniden kurar. sony_remove(), timer_delete_sync() ile zamanlayıcıyı boşaltmış ve ardından usb_free_urb() ile URB'yi serbest bırakmıştır: timer_delete_sync(&sc->ghl_poke_timer); usb_free_urb(sc->ghl_urb); timer_delete_sync() yeniden kurulumu engellemez ve URB işlemdeyken zamanlayıcı beklemede olmadığından senkronize silme işlemi etkisiz kalır. Silme işleminden sonra çalışan bir URB tamamlaması zamanlayıcıyı yeniden kurar ve usb_free_urb() yalnızca bir referansı düşürür; işlemdeki bir URB'yi sonlandırmaz. sc, devm_kzalloc() ile tahsis edilir ve sony_remove() döndüğünde serbest bırakılır; bu nedenle yeniden kurulan ghl_poke_timer (sc içinde gömülüdür), serbest bırakılmış bellek üzerinde tetiklenir ve timer softirq kaynaklı bir serbest bırakıldıktan sonra kullanım (use-after-free) durumu oluşur. Bu durum bir bağlantı kesme/rmmod yarış durumudur (race condition). Çözüm olarak, URB serbest bırakılmadan önce önce URB zehirlenmeli (poison), ardından zamanlayıcı kapatılmalıdır. usb_poison_urb() işlemdeki tüm URB'leri sonlandırır ve sonraki gönderimleri kalıcı olarak reddeder; böylece hala beklemede olan bir poke zamanlayıcısı, timer_shutdown_sync() çalışmadan önceki pencerede ghl_magic_poke() üzerinden URB'yi yeniden gönderemez. usb_kill_urb() yeterli olmayacaktır: çünkü sadece işlemdeki URB'yi iptal eder ve döndükten sonra tekrar gönderilebilir durumda bırakır; böylece beklemedeki zamanlayıcı bunu yeniden gönderebilir ve serbest bırakılan sc üzerinde yeni bir URB başlatabilir. Ardından timer_shutdown_sync(), kalan son geri çağırmayı boşaltır ve yeniden kurulumu engeller. Probe hata yolu etkilenmemiştir: buraya yalnızca zamanlayıcı kurulmadan önce ulaşılır. KASAN altında, next-20260710 sürümünde, GHL PS4 dongle (VID 0x1430 / PID 0x07bb) emülasyonu yapan dummy_hcd + raw-gadget aracılığıyla yeniden üretilmiştir: hid-sony bağlanır ve poke zamanlayıcısını kurar, poke URB işlemde tutulur, sürücü ayrılır (sc serbest bırakılır) ve ardından URB serbest bırakılır. Tamamlanma işlemi, serbest bırakılan sc üzerinde zamanlayıcıyı yeniden kurar ve yeniden kurulan zamanlayıcı yaklaşık 8 saniye sonra tetiklenir: BUG: KASAN: slab-use-after-free in ghl_magic_poke+0x98/0xb0 Read of size 8 at addr ffff88810b02fd50 by task swapper/0/0 ghl_magic_poke+0x98/0xb0 call_timer_fn+0x35/0x2b0 __run_timers+0x69c/0x9a0 run_timer_softirq+0x173/0x2a0 Allocated by task 169: sony_probe Freed by task 338: devres_release_group <- hid_device_remove (sony_remove) Otomatik kaynak analizi kullanarak 0sec (https://0sec.ai) tarafından bulunmuştur.
Nasıl düzeltilir
Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| microsoft azl3_kernel_6.6.152.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.150.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.157.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.159.1-1 | Aralık belirtilmemiş | — |
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.
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.