CVE-2026-64363
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: HID: appleir: remove() funksiyasında gözləyən key_up_timer üzrə UAF xətasının düzəldilməsi appleir_remove() funksiyası timer_delete_sync()-dən əvvəl hid_hw_stop() funksiyasını işə salır. hid_hw_stop() funksiyası hid_disconnect() -> hidinput_disconnect() -> input_unregister_device() vasitəsilə HID giriş cihazını sinxron şəkildə qeydiyyatdan çıxarır ki, bu da istifadəçi sahəsində heç bir tutacaq (handle) onu açıq saxlamadıqda sonuncu istinadı silir və altda yatan input_dev obyektini azad edir. key_up_tick() funksiyası appleir->input_dev dəyərini oxuyur və onun üzərində input_report_key() / input_sync() çağırır. Timer hər bir keydown və key-repeat hesabatında appleir_raw_event() tərəfindən HZ/8 (~125 ms) vaxtaşırımı ilə qurulur. Əgər cihaz ayrılmamış qısa müddət əvvəl düymə sıxılıbsa, timer hid_hw_stop() input_dev obyektini azad etdikdən sonra, lakin sökülmə prosesi tamamlanmadan aktivləşə bilər. Sadə ardıcıllığın dəyişdirilməsi kifayət deyil. Timer boşaltma prosesinin birinci yerləşdirilməsi belə elə bir pəncərə saxlayır ki, hid_hw_stop() zamanı işləyən USB URB tamamlanması (raw_event) mod_timer() funksiyasını çağıra və timeri yenidən qura bilər, bu isə daha sonra hidinput_disconnect() input_dev obyektini azad etdikdən sonra aktivləşir. Eyni URB-tamamlanma pəncərəsi raw_event() funksiyasının birbaşa key_up(), key_down() və battery_flat() funksiyalarına çatmasına imkan verir ki, bunların hamısı appleir->input_dev obyektinə istinad edir. Mövcud spinlock tərəfindən idarə olunan struct appleir strukturuna 'removing' bayrağı əlavə edildi. appleir_remove() kilid altında bu bayrağı təyin edir və sonra timer_shutdown_sync() ilə timeri söndürür; bu həm yolda olan bütün geri çağırışları (callback) boşaldır, həm də gələcək mod_timer() çağırışlarını qalıcı olaraq deaktiv edir. appleir_raw_event() və key_up_tick() funksiyaları bayraq təyin edildikdə prosesi erkən dayandırır, beləliklə, remove() sökülməyə başladıqdan sonra heç bir yol timeri qura, işlədə və ya appleir->input_dev obyektinə istinad edə bilməz. appleir_raw_event() funksiyasının keyrepeat və flatbattery budaqları əvvəllər spinlock-u saxlamadan giriş təbəqəsini çağırırdı; indi bayraq yoxlamasının dəqiq olması üçün kilid götürülür. Bu, eyni zamanda keyrepeat budağındakı appleir->current_key üzərində mövcud olan oxuma tərəfli yarış (race condition) problemini də həll edir. Bu xəta strukturlu olaraq 4db2af929279 ("HID: appletb-kbd: fix UAF in inactivity-timer cleanup path") commit-inin analoqudur və drayver təqdim edildiyi vaxtdan bəri mövcuddur.
Necə düzəltmək olar
- linux linux_kernel5.10.261, 5.15.212, 6.1.178, 6.6.145, 6.12.97, 6.18.39, 7.1.4 və ya daha yeni versiya
- git.kernel.org/stable/c/05e3decc55d1deca9410e0eb36466651fcbe57a5
- git.kernel.org/stable/c/3755f6e25776b8b12ddf062f9b573f05090e4034
- git.kernel.org/stable/c/37a52c61d4f78153c38ae1f7491dfcc8ac828dcf
- git.kernel.org/stable/c/3d30a0bb0e79621ae921b487835c56198adfafa3
- git.kernel.org/stable/c/6b0838e86da88b1d3bff86f19761ff25af73eaca
- git.kernel.org/stable/c/75fe87e19d8aff81eb2c64d15d244ab8da4de945
- git.kernel.org/stable/c/89ef67359672bf4cd6921524e39f61648fe38c0f
- git.kernel.org/stable/c/b363d964ca829c1761c9f04188dfa28f90b0f2d4
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 3.10 ≤ v < 5.10.261, 5.11 ≤ v < 5.15.212, 5.16 ≤ v < 6.1.178, 6.2 ≤ v < 6.6.145, 6.7 ≤ v < 6.12.97, 6.13 ≤ v < 6.18.39, 6.19 ≤ v < 7.1.4, 7.2 | 5.10.261, 5.15.212, 6.1.178, 6.6.145, 6.12.97, 6.18.39, 7.1.4 |
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.