CVE-2026-43489
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: liveupdate: luo_file: retrieve() statusunu yadda saxla LUO, LUO faylı üzərində uğurlu retrieve cəhdlərini izləyir. Bunu eyni faylın dəfələrlə retrieve edilməsinin qarşısını almaq üçün edir. Çoxsaylı retrieve əməliyyatları problemlərə səbəb olur, çünki fayl bir dəfə retrieve edildikdən sonra seriyallaşdırılmış məlumat strukturları böyük ehtimalla azad edilir və fayl kodun gözlədiyindən çox fərqli vəziyyətdə olur. struct luo_file daxilindəki retrieve boolean-ı bunu izləyir və hansı işlərin artıq görüldüyünü və nələrin qaldığını bilməsi üçün finish callback funksiyasına ötürülür. Retrieve uğurlu olduqda bütün bunlar düzgün işləyir. Lakin uğursuz olduqda, luo_retrieve_file() retrieve cəhdinin edildiyini və ya xəta kodunun nə olduğunu heç bir yerdə qeyd etmədən dərhal xətanı qaytarır. Bu, istifadəçi sahəsinə (userspace) xətalı LIVEUPDATE_SESSION_RETRIEVE_FD ioctl göndərməklə nəticələnir, lakin bunun təkrar cəhd edilməsinin qarşısını heç nə almır. Təkrar cəhd, yuxarıda qeyd olunan səbəblərin çoxu ilə problemlidir. Fayl, retrieve məntiqinin normalda gözlədiyindən çox fərqli vəziyyətdə ola bilər və hətta bəzi seriyallaşdırma məlumat strukturlarını azad etmiş ola bilər. Onlara daxil olmağa və ya onları yenidən azad etməyə çalışmaq sistemin pozulmasına səbəb olacaqdır. Məsələn, əgər memfd 10 foliodan 8-ni bərpa edib, lakin 9-cusunda uğursuz olubsa, növbəti retrieve cəhdi birinci folio üzərində yenidən kho_restore_folio() çağırmağa çalışacaq və bu, etibarsız əməliyyat olduğu üçün xəbərdarlıqla birlikdə uğursuz olacaqdır. Təkrar cəhddən əlavə, finish() funksiyası da sıradan çıxır. Uğursuzluq zamanı luo_file-dakı retrieved bool-una toxunulmadığı üçün sessiya bağlanarkən finish() çağırışı fayl idarəedicisinə retrieve cəhdinin heç vaxt edilmədiyini bildirəcək və o, təkrar cəhd zamanı olduğu kimi, mövcud olmayan məlumat strukturlarına daxil olmağa və ya onları azad etməyə çalışacaqdır. Retrieve əməliyyatını yenidən cəhd etməyin məntiqli yolu yoxdur. Retrieve tərəfindən qaytarılan xətanı yadda saxlayın və təkrar cəhd zamanı onu birbaşa qaytarın. Həmçinin, bu status kodunu finish() funksiyasına ötürün ki, o, yerinə yetirməli olduğu işlərlə bağlı düzgün qərar verə bilsin. Bu, bool tipinin tam ədədə (integer) dəyişdirilməsi ilə həyata keçirilib. 0 qiyməti retrieve cəhdinin heç vaxt edilmədiyini, müsbət qiymət onun uğurlu olduğunu, mənfi qiymət isə uğursuz olduğunu və xəta kodunun həmin qiymət olduğunu bildirir.
Necə düzəltmək olar
- linux linux_kernel6.19.9 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.19 ≤ v < 6.19.9, 7.0 | 6.19.9 |
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.