CVE-2025-40048
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: uio_hv_generic: İnterrupt mask-ın idarə olunmasını istifadəçi sahəsinə (userspace) həvalə edin uio_hv_generic drayverində interrupt mask-ın standart olaraq təyin edilməsi məntiqi silinsin, çünki interrupt mask dəyəri tamamilə istifadəçi sahəsi tərəfindən idarə olunmalıdır. Əgər mask biti drayver tərəfindən, eyni zamanda istifadəçi rejiminin ring üzərində əməliyyat apardığı vaxt dəyişdirilərsə, mask biti təmizlənməli olduğu halda təyin edilə bilər və istifadəçi rejimi drayveri bir interrupt-u qaçıracaq ki, bu da sistemin donmasına (hang) səbəb olacaqdır. Məsələn - drayver daxil olan ring buffer interrupt mask-ını 1-ə təyin etdikdə, host UIO VMBus kanalı üzərindən qonağa (guest) interrupt göndərmir. Lakin mask-ın təyin edilməsi host-un daxil olan ring buffer-ə mesaj yerləşdirməsinə mane olmur. Tutaq ki, belə baş verir: host ring buffer-ə mesaj yerləşdirir, lakin interrupt göndərmir. Sonradan, qonaqdakı istifadəçi sahəsi kodu daxil olan ring buffer interrupt mask-ını 0-a təyin edərək "Mən interrupt-lara hazıram" bildirir. Daha sonra istifadəçi sahəsi kodu interrupt gözləmək üçün pread() funksiyasını çağırır. Bu zaman iki haldan biri baş verir: * Host heç vaxt digər mesajı göndərmir. Beləliklə, pread() sonsuz müddət gözləyir. * Host digər mesajı göndərir. Lakin ring buffer-də artıq mesaj olduğu üçün o, interrupt yaratmır. Bu düzgün davranışdır, çünki host yalnız daxil olan ring buffer boş haldan boş olmayan hala keçdikdə interrupt göndərməlidir. Boş olmayan ring buffer-ə əlavə mesajın əlavə edilməsi qonaqda interrupt yaratmamalıdır. Qonaq pread()-də gözlədiyi və ring buffer-dən mesajları çıxarmadığı üçün pread() sonsuz müddət gözləyir. Əgər interrupt mask-ının 0-a təyin edilməsini gecikdirsək, bunu hv_fcopy_uio_daemon-da asanlıqla təkrar etmək olar. Eynilə, əgər hv_uio_channel_cb() interrupt_mask-ı 1-ə təyin edirsə, yarış şəraiti (race condition) yaranır. İstifadəçi sahəsi daxil olan ring buffer-i boşaltdıqdan sonra, lakin hələ interrupt_mask-ı 0-a təyin etməmişdən əvvəl, host ring buffer-ə başqa bir mesaj yerləşdirə bilər, lakin interrupt göndərməzdi. Beləliklə, növbəti pread() donardı. Bunları, interrupt_mask-ın dəyişdirildiyi bütün nümunələri silərək düzəldin, lakin istifadəçi sahəsinin /dev/uioX faylına 0/1 yazmaqla interrupt mask-ı idarə etməsini təmin etmək üçün set_event() funksiyasındakı hissəni dəyişməzdən saxlayın.
Necə düzəltmək olar
- Linux Linux540aac117eaea5723cef5e4cbf3035c4ac654d92, 65d40acd911c7011745cbbd2aaac34eb5266d11e, a44f61f878f32071d6378e8dd7c2d47f9490c8f7, 01ce972e6f9974a7c76943bcb7e93746917db83a, 2af39ab5e6dc46b835a52e80a22d0cad430985e3, 37bd91f22794dc05436130d6983302cb90ecfe7e, e29587c07537929684faa365027f4b0d87521e1b, b15b7d2a1b09ef5428a8db260251897405a19496 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < 540aac117eaea5723cef5e4cbf3035c4ac654d92, 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < 65d40acd911c7011745cbbd2aaac34eb5266d11e, 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < a44f61f878f32071d6378e8dd7c2d47f9490c8f7, 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < 01ce972e6f9974a7c76943bcb7e93746917db83a, 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < 2af39ab5e6dc46b835a52e80a22d0cad430985e3, 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < 37bd91f22794dc05436130d6983302cb90ecfe7e, 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < e29587c07537929684faa365027f4b0d87521e1b, 95096f2fbd10186d3e78a328b327afc71428f65f ≤ v < b15b7d2a1b09ef5428a8db260251897405a19496, 4.10 | 540aac117eaea5723cef5e4cbf3035c4ac654d92, 65d40acd911c7011745cbbd2aaac34eb5266d11e, a44f61f878f32071d6378e8dd7c2d47f9490c8f7, 01ce972e6f9974a7c76943bcb7e93746917db83a, 2af39ab5e6dc46b835a52e80a22d0cad430985e3, 37bd91f22794dc05436130d6983302cb90ecfe7e, e29587c07537929684faa365027f4b0d87521e1b, b15b7d2a1b09ef5428a8db260251897405a19496 |
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.