CVE-2026-89689
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: nfsd: hələ də istifadə edilən sessiya slotlarını azad etməyin nfsd4_sequence() hazırda emal etdiyi slotu azad edə bilər. Sessiyanın kiçiltməsi (shrinker) se_target_maxslots dəyərini se_fchannel.maxreqs səviyyəsindən aşağı saldıqda, kiçiltmə yolu free_session_slots() funksiyasını çağırmazdan əvvəl üç şərti yoxlayır: 1. se_target_maxslots < maxreqs (kiçiltmə elan edilmişdir) 2. slot->sl_generation == se_slot_gen (slot aktualdır) 3. seq->maxslots <= se_target_maxslots (klient təsdiqləyir) Lakin, seq->slotid heç vaxt se_target_maxslots ilə müqayisə edilmir. [se_target_maxslots, maxreqs) diapazonunda olan slotdan istifadə edən klient hər üç şərti yerinə yetirə bilər: onun slotu cari generasiyaya malikdir (əvvəlki SEQUENCE tərəfindən təyin edilmişdir) və o, kiçiltməni təsdiqləmək üçün sa_highest_slotid <= se_target_maxslots göndərir. Daha sonra free_session_slots() indeksi >= se_target_maxslots olan hər bir slotu, o cümlədən çağırıcının öz slotunu kfree vasitəsilə azad edir. Funksiya sl_seqid, sl_flags, sl_generation yazmağa davam edir və asılı göstəricini (dangling pointer) cstate->slot-da saxlayır. Sonradan nfsd4_store_cache_entry() mürəkkəb cavabın maxresp_cached bayta qədər hissəsini azad edilmiş sl_data[] massivinə kopyalayaraq həmin ünvanı tutan slab obyektini korlayır. Əlavə olaraq, fərqli yüksək nömrəli slotda SEQUENCE emal edən paralel axın (thread) öz slotunun altından azad edildiyini görə bilər. NFSD4_SLOT_INUSE kilid buraxılmazdan əvvəl nn->client_lock altında təyin edilir, beləliklə, SEQUENCE mərhələsini keçmiş hər hansı paralel axının slotu qeyd olunmuş olur. Lakin, free_session_slots() azad etməzdən əvvəl NFSD4_SLOT_INUSE şərtini yoxlamır. Hər iki problem aşağıdakılarla düzəldilmişdir: 1. Cari sorğunun slotid-nin kiçiltmə sərhədindən aşağı olduğunun yoxlanılması. 2. Azad ediləcək diapazondakı slotların NFSD4_SLOT_INUSE üçün skan edilməsi və aktiv slotlar olduqda kiçiltmənin təxirə salınması.
Necə düzəltmək olar
- Linux Linux72d40b103bb03f0124d3a3c8f71a30cbafaf6afa, b449b134e7762ddf98653a4b1d3e76d2d212ea64, f5d22e372f4ac3eb287037a488c29691d52a6330 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | fc8738c68d0bbf5033dd98b4f63d277ecbd49fd7 ≤ v < 72d40b103bb03f0124d3a3c8f71a30cbafaf6afa, fc8738c68d0bbf5033dd98b4f63d277ecbd49fd7 ≤ v < b449b134e7762ddf98653a4b1d3e76d2d212ea64, fc8738c68d0bbf5033dd98b4f63d277ecbd49fd7 ≤ v < f5d22e372f4ac3eb287037a488c29691d52a6330, 6.14 | 72d40b103bb03f0124d3a3c8f71a30cbafaf6afa, b449b134e7762ddf98653a4b1d3e76d2d212ea64, f5d22e372f4ac3eb287037a488c29691d52a6330 |
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.