CVE-2025-38062
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: genirq/msi: iommu_cookie əvəzinə IOMMU IOVA birbaşa msi_desc daxilində saxlanılır MSI mesaj ünvanları üçün IOMMU tərcüməsi zamanla ayrılmış iki mərhələli proses idi: 1) iommu_dma_prepare_msi(): MSI kəsilməsi ayrıldıqda, IOVA ünvanını ehtiva edən cookie göstəricisi MSI deskriptorunda saxlanılır. 2) iommu_dma_compose_msi_msg(): bu cookie göstəricisindən tərcümə edilmiş mesaj ünvanını hesablamaq üçün istifadə olunur. Bu, iki mərhələ arasında etibarlı qalmalı olan cookie-də saxlanılan göstəricinin ömrü ilə bağlı daxili problem yaradır. Lakin, irq səviyyəsində bu ömrü qorumağa kömək edən heç bir kilidləmə (locking) mexanizmi yoxdur. Hazırda bu, MSI kəsilmələri proqramlaşdırılarkən iommu domeninin dəyişdirilmədiyi fərziyyəsi altında işləyir. Bu, nüvədəki normal DMA API istifadəçiləri üçün doğrudur, çünki iommu domeni drayver yoxlanılmazdan (probed) əvvəl qoşulur və drayver qoşulu olduğu müddətdə dəyişdirilə bilməz. Klassik VFIO type1 də VFIO işləyərkən iommu domeninin dəyişdirilməsinin qarşısını alırdı, çünki o, başladqdan sonra "konteyner"in dəyişdirilməsini dəstəkləmir. Lakin, iommufd bunu təkmilləşdirmişdir ki, VFIO əməliyyatı zamanı iommu domeni dəyişdirilə bilsin. Bu, potensial olaraq istifadəçi sahəsinə (userspace) VFIO_DEVICE_ATTACH_IOMMUFD_PT (hansı ki, iommu_attach_group() funksiyasını çağırır) və VFIO_DEVICE_SET_IRQS (hansı ki, iommu_dma_compose_msi_msg() funksiyasına müraciət edir) arasında yarış vəziyyəti (race condition) yaratmağa imkan verir. Bu, həm cookie göstəricisinin, həm də MSI tərcümə yolunda iommu_get_domain_for_dev() funksiyasına edilən kilidlənməmiş çağırışın UAF (Use-After-Free) xətasına səbəb ola bilər. Cookie göstəricisini silərək MSI cookie UAF problemi həll edilir. Tərcümə edilmiş IOVA ünvanı artıq iommu_dma_prepare_msi() zamanı məlum olur və dəyişə bilməz. Beləliklə, o, sadəcə tam ədəd kimi MSI deskriptorunda saxlanıla bilər. iommu_get_domain_for_dev() ilə bağlı digər UAF problemi, IOMMU qrup muteksindən istifadə etməklə "iommu: Make iommu_dma_prepare_msi() into a generic operation" yamasında (patch) həll ediləcəkdir.
Necə düzəltmək olar
- linux linux_kernel6.1.141, 6.6.93, 6.12.31, 6.14.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 | 5.2 ≤ v < 6.1.141, 6.2 ≤ v < 6.6.93, 6.7 ≤ v < 6.12.31, 6.13 ≤ v < 6.14.9 | 6.1.141, 6.6.93, 6.12.31, 6.14.9 |
| debian debian_linux | 11.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.
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.