CVE-2026-93221
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: nfsd: nfsd_net boolean bayraqlarını unsigned long bayraq sözünə çevirmək nfsd_net strukturu, seriyallaşdırma olmadan paralel kontekstlərdən daxil olunan bir neçə boolean sahəsi ehtiva edir. Xüsusilə, nfsd4_end_grace() funksiyası öz boşaltma yolunu adi bool ilə qoruyur: if (nn->grace_ended) return; nn->grace_ended = true; Oxuma və yazma əməliyyatları müstəqildir və struct nfsd_net daxilində onları seriyallaşdıran heç nə yoxdur. Heç bir kilid saxlanılmadan ən azı iki kontekst bu koda çata bilər: 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() Hər iki çağırıcı fərqli CPU-larda grace_ended == false vəziyyətini müşahidə edə bilər, hər ikisi true dəyərini təyin edər və hər ikisi aktiv client_tracking_ops->grace_done geri çağırma funksiyasını işə salan nfsd4_record_grace_done() funksiyasına keçid edər. reclaim_str_hashtbl-i boşaldan izləmə əməliyyatları üçün (nfsd4_recdir_purge_old vasitəsilə legacy_tracking_ops və nfsd4_cld_grace_done vasitəsilə cld v1+ əməliyyatları), grace_done funksiyası nfs4_release_reclaim()-i çağırır; bu isə heç bir kilid olmadan reclaim_str_hashtbl-in hər bir səbətini gəzir və hər bir element üzərində nfs4_remove_reclaim_record() (list_del + kfree) funksiyasını çağırır. İki paralel gəzinti siyahını korlayır və hər bir nfs4_client_reclaim elementi üçün double-free (ikiqat azad etmə) baş verir. Eyni səbəti iterasiya edən paralel nfsd4_find_reclaim_client() funksiyası isə azad edilmiş yaddaşı oxuyur. Üçüncü çağırıq nöqtəsi skip_grace startap yolunda nfs4_state_start_net() funksiyasında mövcuddur, lakin o, hər hansı bir klient qoşulmamışdan və laundromat-ın ilk gecikdirilmiş işi başlamamışdan əvvəl nfsd_mutex altında işləyir, buna görə də yuxarıdakı iki çağırıcı ilə yarışa girə bilməz. nfsd_net strukturundakı dağınıq boolean sahələri tək bir unsigned long bayraq sözü və bit mövqeləri üçün enum nfsd_net_flag ilə əvəzləndi. grace_ended yarışı bütün arxitekturalarda atomik olan test_and_set_bit() istifadə edilərək həll edildi. Digər bayraqlar (grace_end_forced, in_grace, somebody_reclaimed, track_reclaim_completes, nfsd_net_up, lockd_up) ardıcıllığı təmin etmək üçün test_bit/set_bit/clear_bit istifadəsinə çevrildi. Bu, yalnız söz ölçülü atomik əməliyyatları dəstəkləyən Hexagon kimi arxitekturalarda sub-word cmpxchg problemlərinin qarşısını alır.
Necə düzəltmək olar
Mənbələrdə bu zəiflik üçün düzəldilmiş versiya və ya yamaq keçidi yoxdur.
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| microsoft azl3_kernel_6.6.157.1-1 | Aralıq göstərilməyib | — |
| microsoft azl3_kernel_6.6.159.1-1 | Aralıq göstərilməyib | — |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.