CVE-2026-31718
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: ksmbd: durable scavenger vasitəsilə __ksmbd_close_fd()-də use-after-free xətasının düzəldilməsi Daimi fayl tutacağı (durable file handle) sessiya kəsildikdə (SMB2_LOGOFF olmadan TCP bağlanması) sağ qaldıqda, session_fd_check() funksiyası tutacağın sonrakı yenidən qoşulma üçün saxlanılması məqsədilə fp->conn = NULL təyin edir. Lakin, bu zaman fp->lock_list üzərindəki bayt diapazonu kilidləri təmizlənilmir. Sonradan, durable scavenger axını vaxtaşımıya uğradığında və __ksmbd_close_fd(NULL, fp) funksiyasını çağırdıqda, kilid təmizləmə dövrü bunu yerinə yetirirdi: spin_lock(&fp->conn->llist_lock); Bu, slab use-after-free xətasına səbəb olurdu, çünki fp->conn NULL idi və orijinal bağlantı obyekti artıq ksmbd_tcp_disconnect() tərəfindən azad edilmişdi. Kök səbəb asimmetrik təmizləmədir: fp->conn sıfırlanarkən, kilid yazılışları (smb_lock->clist) azad edilmiş conn->lock_list üzərində asılı şəkildə qalmışdı. Bu problemi düzgün şəkildə həll etmək üçün smb_lock->clist-in ömrünü üç yol boyunca idarə etməliyik: - Siyahı boş olduqda və fp->conn NULL olduqda clist silinməsini təhlükəsiz şəkildə ötürmək. - Kilidi session_fd_check() funksiyasında köhnə bağlantının lock_list siyahısından çıxarmaq. - Kilidi ksmbd_reopen_durable_fd() funksiyasında yeni bağlantının lock_list siyahısına yenidən əlavə etmək.
Necə düzəltmək olar
- linux linux_kernel6.7, 6.12.84, 6.18.25, 7.0.2 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 6.6.32 ≤ v < 6.7, 6.9 ≤ v < 6.12.84, 6.13 ≤ v < 6.18.25, 6.19 ≤ v < 7.0.2, 7.1 | 6.7, 6.12.84, 6.18.25, 7.0.2 |
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.