CVE-2026-90001

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: HID: bpf: struct_ops imha yolunda cihaz referans serbest bırakma işlemini serileştirin __hid_bpf_ops_destroy_device() ve hid_bpf_unreg() aynı kayıt referansı üzerinde yarış durumuna girebilir, bu da struct hid_device yapısının iki kez serbest bırakılmasına (double-put) ve hid_destroy_device() hala kullanırken belleğinin boşaltılmasına neden olabilir. Kaldırma/NULL kararını hdev->bpf.prog_list_lock altında serileştirerek her bir kayıt referansının tam olarak tek bir yol tarafından serbest bırakılması sağlanmıştır: unreg işlemi kilit altında ops->hdev değerini yeniden kontrol eder ve imha yolu bunu zaten temizlemişse serbest bırakmadan döner; tüm put_device() çağrıları kilit bırakıldıktan sonra gerçekleşir, bu güvenlidir çünkü eşzamanlı bir unreg işlemi kilit altında ops->hdev == NULL olduğunu gözlemler. Arka Plan: Her başarılı ekleme (hid_bpf_ops_reg) bir cihaz referansı (hid_get_device()) edinir. İki farklı yol bunu serbest bırakabilir: - Cihaz imhası: hid_destroy_device() -> hid_bpf_destroy_device() -> __hid_bpf_ops_destroy_device(); bu işlem rcu_read_lock() altında hdev->bpf.prog_list üzerinden geçer ve eklenen her program için bir referansı düşürür; - BPF bağlantı serbest bırakma: bpf harita silme (BPF_F_LINK olmadan) senkron olarak st_ops->unreg() -> hid_bpf_unreg() fonksiyonlarını çağırır ve kendi kaydı için olan referansı düşürür. Koordinasyon el sıkışması (imha tarafında e->hdev = NULL'a karşı unreg tarafında "if (!hdev) return") bir TOCTOU kontrolüdür: iki yol farklı kilit alanlarında (rcu_read_lock ile prog_list_lock) çalışır, bu nedenle eşzamanlı bir unreg işlemi ops->hdev değerini NULL olmayan olarak okuyabilir, prog_list_lock üzerinde bekleyebilir ve ardından imha taraması yürütülürken devam edebilir - böylece her iki yol da aynı referansı düşürür. Referans sayacı meşru olarak sıfıra ulaşır (her azaltma işlemi bireysel olarak geçerlidir), dolayısıyla herhangi bir refcount_t doygunluğu tetiklenmez: cihaz, taşıma katmanı hala hid_destroy_device() içerisindeyken basitçe serbest bırakılır ve sonraki söküm işlemleri boşaltılmış belleğe erişir. Düzeltme, her iki tarafta kaldırma/NULL kararını prog_list_lock altında serileştirir ve imha tarafındaki put işlemlerini kilidin dışına taşır. Kilit tutulurken, ops->hdev üzerindeki düz okuma/yazma işlemleri yeterlidir; yamayı minimumda tutmak için READ_ONCE/WRITE_ONCE eklenmemiştir. Kilitlenmemiş okuma güvenliği: hid_bpf_unreg() başlangıcındaki ops->hdev kilitlenmemiş okuması serbest bırakılmış bir cihaza erişemez, çünkü unreg yolunun kendisi hala bu kaydın referansını tutmaktadır (yalnızca kilit bırakıldıktan sonra kendi hid_put_device() işlemiyle serbest bırakılır) ve ops->hdev değerini zaten temizlemiş olan bir imha taraması, kilit içi yeniden kontrolün herhangi bir put işlemi yapmadan erken dönmesini sağlar. İki yoldan en fazla biri her bir kayıt referansını serbest bırakır.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux
Yayın16 Eyl 2026
İlk görülme16 Eyl 2026

Nasıl düzeltilir

Güncelleyin
  • Linux Linux401359684620145be710de97b87e1a47abfe1459, c7f927aa8b55008ed5ea0814313d5dad771dcf3c, bfb7939788f3c8dd080a4dd81e38d625b35d194e, 9cdc7e6dc7a99ad7311ad5e7c145f2b9ce4e24b0 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linuxebc0d8093e8c97de459615438edefad1a4ac352c ≤ v < 401359684620145be710de97b87e1a47abfe1459, ebc0d8093e8c97de459615438edefad1a4ac352c ≤ v < c7f927aa8b55008ed5ea0814313d5dad771dcf3c, ebc0d8093e8c97de459615438edefad1a4ac352c ≤ v < bfb7939788f3c8dd080a4dd81e38d625b35d194e, ebc0d8093e8c97de459615438edefad1a4ac352c ≤ v < 9cdc7e6dc7a99ad7311ad5e7c145f2b9ce4e24b0, 6.11401359684620145be710de97b87e1a47abfe1459, c7f927aa8b55008ed5ea0814313d5dad771dcf3c, bfb7939788f3c8dd080a4dd81e38d625b35d194e, 9cdc7e6dc7a99ad7311ad5e7c145f2b9ce4e24b0

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-90001 · Linux · Dark Radar