CVE-2026-93221
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: nfsd: nfsd_net boolean bayraklarını unsigned long bayrak kelimesine dönüştürün nfsd_net, seri hale getirilmeden eşzamanlı bağlamlardan erişilen birkaç boolean alan içerir. Özellikle, nfsd4_end_grace() boşaltma yolunu düz bir bool ile korur: if (nn->grace_ended) return; nn->grace_ended = true; Okuma ve yazma işlemleri bağımsızdır ve struct nfsd_net içinde bunları seri hale getiren hiçbir şey yoktur. En az iki bağlam, herhangi bir kilit tutulmadan bu koda ulaşabilir: laundromat yolu laundry_wq kworker nfs4_laundromat() nfsd4_end_grace() RECLAIM_COMPLETE yolu nfsd compound kthread nfsd4_reclaim_complete() inc_reclaim_complete() nfsd4_end_grace() Her iki çağırıcı da farklı CPU'larda grace_ended == false durumunu gözlemleyebilir, her ikisi de true değerini saklayabilir ve her ikisi de aktif client_tracking_ops->grace_done geri çağırmasını tetikleyen nfsd4_record_grace_done() işlemine devam edebilir. reclaim_str_hashtbl yapısını boşaltan izleme işlemleri için (nfsd4_recdir_purge_old aracılığıyla legacy_tracking_ops ve nfsd4_cld_grace_done aracılığıyla cld v1+ işlemleri), grace_done, reclaim_str_hashtbl'nin her kovasında kilit olmadan gezen ve her giriş üzerinde nfs4_remove_reclaim_record() (list_del + kfree) çağıran nfs4_release_reclaim() fonksiyonunu çağırır. İki eşzamanlı gezgin listeyi bozar ve her nfs4_client_reclaim nesnesini çift serbest bırakır (double-free). Aynı kovayı yineleyen eşzamanlı bir nfsd4_find_reclaim_client() işlemi ise serbest bırakılmış bellek üzerinden okuma yapar. nfs4_state_start_net() içindeki skip_grace başlangıç yolunda üçüncü bir çağrı noktası mevcuttur ancak bu nokta, herhangi bir istemci bağlanmadan ve laundromat'in ilk gecikmeli işi çalışmadan önce nfsd_mutex altında çalıştığından yukarıdaki iki çağırıcı ile yarışamaz. nfsd_net içindeki dağınık boolean alanları tek bir unsigned long bayrak kelimesi ve bit konumları için bir enum nfsd_net_flag ile değiştirin. grace_ended yarışı, tüm mimarilerde atomik olan test_and_set_bit() kullanılarak düzeltilmiştir. Kalan bayraklar (grace_end_forced, in_grace, somebody_reclaimed, track_reclaim_completes, nfsd_net_up, lockd_up), tutarlılık için test_bit/set_bit/clear_bit kullanacak şekilde dönüştürülmüştür. Bu, yalnızca kelime boyutlu atomik işlemleri destekleyen Hexagon gibi mimarilerdeki alt-kelime cmpxchg sorunlarını önler.
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.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.