CVE-2026-89732
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: usb: gadget: f_fs: ep0 oxuma dövrü zamanı deadlock-un qarşısının alınması Hazırda ffs_ep0_read() funksiyası hadisəni gözləyərək yuxuya getməyə hazırlaşarkən ffs->mutex kilidini saxlayır. Heç bir quraşdırma (setup) hadisəsi gözlənilmədikdə, o, mutex hələ də tutulmuş halda wait_event_interruptible_exclusive_locked_irq() funksiyasını çağırır. Gözləmə makrosu yuxuya getməzdən əvvəl waitqueue spinlock-unu qəsdən buraxır, lakin mutex-i buraxmır. Əgər istifadəçi sahəsi (userspace) demonu read() vasitəsilə ep0-nı sorğulayırsa və gadget configfs vasitəsilə asinxron şəkildə sökülürsə (məsələn, echo "" > UDC), deadlock baş verə bilər: 1. Configfs sökülməsi FUNCTIONFS_UNBIND hadisəsini növbəyə düzən functionfs_unbind() funksiyasını çağırır. 2. Demon oyanır, hadisəni emal edir və mutex-i buraxır. 3. Lakin, əgər demon çıxış etməzdən əvvəl dövrə girib dərhal növbəti read() sorğusunu göndərərsə, o, ffs->mutex-i yenidən əldə edir və yenidən kəsilə bilən (interruptible) yuxuya gedir. 4. Bu arada, functionfs_unbind() icranı davam etdirir və ep0req-i sökmək üçün ffs->mutex-i əldə etməyə çalışır. 5. Nüvədə deadlock yaranır, çünki configfs axını mutex-i gözləyərək kəsilə bilməyən (uninterruptible) yuxuda qalır, istifadəçi sahəsi demonu isə artıq heç bir hadisə gəlməyəcəyi üçün mutex-i sonsuz müddətə tutaraq kəsilə bilən yuxuda qalır. Bunu düzəltmək üçün yuxuya getməzdən əvvəl həm waitqueue spinlock-unu, həm də ffs->mutex-i buraxırıq və bunun əvəzinə wait_event_interruptible_exclusive() funksiyasından istifadə edirik. Oyanarkən, mutex-i təhlükəsiz şəkildə yenidən əldə etmək və vəziyyət maşınını (state machine) yenidən qiymətləndirmək üçün `retry` etiketine geri qayıdırıq. ffs->mutex tutulmuş halda yuxuya getməməklə, biz gadget sökülmələrini (hansı ki, mutex tələb edir) istifadəçi sahəsi sorğularından təbii şəkildə ayırırıq.
Necə düzəltmək olar
- Linux Linuxfbe3db4b650c284df8eb4cb68eebcf270cf861b5, 30430509c156e1df2bdafd5f1cadb160e53db5d6, bafddd0f20b5228760be303aa69c58502e92309c, b0a6bfac0c3c3edf5b2ecaee87a09234601fe78d, fd20cc68bbdb5620696ac108e8f2efd180fe2c1a, 34e88f53614640b59039a46717fb6142e9871022, eac233e63f9db82ba874e3cccafaafab162999e0, 569dd7e5dcffe1e1c6b26ca2cd3be57eb433e082 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < fbe3db4b650c284df8eb4cb68eebcf270cf861b5, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 30430509c156e1df2bdafd5f1cadb160e53db5d6, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < bafddd0f20b5228760be303aa69c58502e92309c, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < b0a6bfac0c3c3edf5b2ecaee87a09234601fe78d, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < fd20cc68bbdb5620696ac108e8f2efd180fe2c1a, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 34e88f53614640b59039a46717fb6142e9871022, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < eac233e63f9db82ba874e3cccafaafab162999e0, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 569dd7e5dcffe1e1c6b26ca2cd3be57eb433e082, 2.6.35 | fbe3db4b650c284df8eb4cb68eebcf270cf861b5, 30430509c156e1df2bdafd5f1cadb160e53db5d6, bafddd0f20b5228760be303aa69c58502e92309c, b0a6bfac0c3c3edf5b2ecaee87a09234601fe78d, fd20cc68bbdb5620696ac108e8f2efd180fe2c1a, 34e88f53614640b59039a46717fb6142e9871022, eac233e63f9db82ba874e3cccafaafab162999e0, 569dd7e5dcffe1e1c6b26ca2cd3be57eb433e082 |
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.