CVE-2026-23361
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: PCI: dwc: ep: ATU girişini ləğv etməzdən əvvəl MSI-X yazma əməliyyatını təmizləyin (flush) Endpoint drayverləri, writel() vasitəsilə host-a MSI-X kəsilməsi göndərmək üçün dw_pcie_ep_raise_msix_irq() funksiyasından istifadə edir ki, bu da PCI posted write tranzaksiyasını yaradır. Posted write-lar üçün tamamlanma (completion) olmadığına görə, writel() PCI yazma əməliyyatı başa çatmamış geri dönə bilər. dw_pcie_ep_raise_msix_irq() həmçinin PCI yazma əməliyyatı üçün istifadə olunan çıxan ATU girişini də ləğv edir (unmap), buna görə də yazma və ləğv etmə prosesləri arasında yarış (race condition) yaranır. Əgər PCI yazma əməliyyatı ATU ləğvi ilə olan yarışda uduzarsa, yazma əməliyyatı host yaddaşını korlaya və ya IOMMU xətalarına səbəb ola bilər, məsələn, nvmet-pci-epf ilə daha böyük növbə dərinliyində fio işlədildikdə aşağıdakılar baş verir: arm-smmu-v3 fc900000.iommu: 0x0000010000000010 arm-smmu-v3 fc900000.iommu: 0x0000020000000000 arm-smmu-v3 fc900000.iommu: 0x000000090000f040 arm-smmu-v3 fc900000.iommu: 0x0000000000000000 arm-smmu-v3 fc900000.iommu: event: F_TRANSLATION client: 0000:01:00.0 sid: 0x100 ssid: 0x0 iova: 0x90000f040 ipa: 0x0 arm-smmu-v3 fc900000.iommu: unpriv data write s1 "Input address caused fault" stag: 0x0 ATU girişi ləğv edilməzdən əvvəl yazma əməliyyatının təyinat yerinə çatdığından əmin olmaq üçün eyni ünvanın readl() əməliyyatını yerinə yetirməklə yazmanı təmizləyin. Eyni problem 8719c64e76bf ("PCI: dwc: ep: Cache MSI outbound iATU mapping") commit-ində dw_pcie_ep_raise_msi_irq() üçün həll edilmişdi, lakin orada problem yalnız MSI üçün ayrılmış çıxan iATU vasitəsilə həll olunmuşdu. Bunu MSI-X üçün edə bilmərik, çünki hər bir vektor fərqli msg_addr-a malik ola bilər və vektor maskalandığı zaman msg_addr dəyişilə bilər. [bhelgaas: commit log]
Necə düzəltmək olar
- linux linux_kernel6.12.77, 6.18.17, 6.19.7 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 | 4.19.1 ≤ v < 6.12.77, 6.13 ≤ v < 6.18.17, 6.19 ≤ v < 6.19.7, 4.19, 7.0 | 6.12.77, 6.18.17, 6.19.7 |
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.