CVE-2024-35809

Orta

Təsvir

Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: PCI/PM: Drayver silinməzdən əvvəl runtime-idle geri çağırışlarını boşaltın rtsx_pcr PCI drayverində .runtime_idle() geri çağırışı ilə .remove() geri çağırışı arasındakı yarış vəziyyəti (race condition), idarə olunmayan səhifə xətası (page fault) səbəbindən nüvənin çökməsinə [1] gətirib çıxarır. Problem ondadır ki, pm_runtime_get_sync() çağırıldıqdan sonra rtsx_pci_runtime_idle()-in işləməsi gözlənilmir, lakin sonuncu bunu həqiqətən təmin etmir. O, yalnız geri döndükdə suspend və resume geri çağırışlarının işləməyəcəyini təmin edir. Lakin, pm_runtime_get_sync() çağırıldığı zaman artıq bir .runtime_idle() geri çağırışı işləyirsə, sonuncusu cihazın runtime PM statusunun RPM_ACTIVE olduğunu görəcək və əvvəlkinin tamamlanmasını gözləmədən dərhal geri dönəcək. Əslində, o, .runtime_idle()-in tamamlanmasını gözləyə bilməz, çünki bu funksiya həmin geri çağırışdan çağırıla bilər (bunu etmək məntiqli görünməsə də, qəti şəkildə qadağan edilməyib). Beləliklə, ümumiyyətlə, .runtime_idle() geri çağırışını təmin edən hər kəs onu pm_runtime_get_sync()-dən sonra işləyən hər hansı kodla paralel işləməkdən qorumalıdır. [Nəzərə alın ki, .runtime_idle() pm_runtime_get_sync() geri döndükdən sonra başlamayacaq, lakin əgər daha əvvəl başlayıbsa, onda da işləməyə davam edə bilər.] Həmin yarış vəziyyətini həll etməyin bir yolu, .runtime_idle() geri çağırışının həmin anda işləyəcəyi halda onun tamamlanmasını gözləmək üçün pm_runtime_get_sync()-dən sonra (ondan əvvəl yox, çünki runtime PM geri çağırışlarının çağırılmasının qarşısını almaq üçün runtime PM istifadə sayğacının sıfırdan fərqli olması vacibdir) pm_runtime_barrier() funksiyasının çağırılmasıdır. Bunun üçün uyğun yer pci_device_remove() funksiyasıdır; bu funksiya drayveri silməzdən əvvəl pm_runtime_get_sync()-i çağırır, buna görə də ardınca pm_runtime_barrier()-i də çağıra bilər. Bu, sözügedən yarış vəziyyətinin yalnız rtsx_pcr drayverində deyil, .runtime_idle() geri çağırışlarını təmin edən bütün PCI drayverlərində baş verməsinin qarşısını alacaqdır.

CiddilikOrta
CVSS4.7
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc17 may 2024
İlk görülmə17 may 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 6.6.24, 6.7.12, 6.8.3 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernelv < 4.19.312, 4.20 ≤ v < 5.4.274, 5.5 ≤ v < 5.10.215, 5.11 ≤ v < 5.15.154, 5.16 ≤ v < 6.1.84, 6.2 ≤ v < 6.6.24, 6.7 ≤ v < 6.7.12, 6.8 ≤ v < 6.8.34.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 6.6.24, 6.7.12, 6.8.3
debian debian_linux10.0—

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.

Intelligence 360 paketində

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.

CVE-2024-35809 · Linux Kernel · Dark Radar