CVE-2026-68329
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: iommu/amd: iommu_completion_wait() funksiyasında erkən geri dönmək əvəzinə tamamlanmanı gözləyin need_sync həmin IOMMU-nun arxasındakı bütün domenlər və cihazlar tərəfindən paylaşılmış hər bir IOMMU üçün təyin edilmiş bayraqdır. Bu bayraq, sync == true ilə komanda növbəyə alındıqda təyin edilir və tamamlanma-gözləmə (CWAIT) komandası növbəyə alındıqda sıfırlanır. Lakin, sıfırlanmış need_sync yalnız müvafiq CWAIT-in növbəyə alındığını bildirir, əvvəlki bütün növbəyə alınmış komandaların aparat təminatında faktiki olaraq tamamlandığını yox. iommu_completion_wait() funksiyası need_sync dəyişənini kilidsiz oxuyurdu və o, false olduqda erkən geri dönürdü. Bu, çox nüvəli (multi-CPU) ssenaridə "əvvəlki bütün növbəyə alınmış komandalar tamamlanana qədər blokla" şərtini pozur: CPU2: inv-B növbəyə salınır => need_sync = true CPU1: CWAIT(N) növbəyə salınır; need_sync = false; sonra wait_on_sem(N) CPU2: need_sync == false oxunur => 0 qaytarılır (gözləmə baş vermir!) CPU2 heç bir ardıcıllıq nömrəsini gözləmədən geri döner, halbuki onun inv-B əməliyyatı hələ tamamlanmamış ola bilər (inv-B-dən sonra növbəyə salınan CWAIT(N) hələ siqnal verməyib). Daha sonra CPU2, məsələn, səhifə cədvəli səhifələrini azad etməyə davam edir, bu zaman IOMMU hələ də köhnəlmiş tərcümələri izləyə bilir ki, bu da use-after-free pəncərəsi açır. Bu, bayrağın mənası baxımından məntiqi yarışdır (logical race), yaddaş görünürlüyü problemi deyil, buna görə də yalnız baryerlər kömək etmir. Artıq CWAIT komandalarının qarşısını alma optimallaşdırmasını itirmədən bunu düzəltmək üçün: need_sync yoxlanılmazdan əvvəl iommu->lock götürülür və o, false olduqda erkən geri dönmək əvəzinə son təyin edilmiş ardıcıllıq nömrəsi (cmd_sem_val) gözlənilir. need_sync == false olması sonuncu CWAIT-dən sonra heç bir sync komandasının növbəyə alınmadığına işarə etdiyindən, həmin CWAIT hələ tamamlanmamış hər bir komandadan sonra FIFO sırasına düzülür, beləliklə, onun ardıcıllıq nömrəsini gözləmək bütün əvvəlki komandaların (ola bilsin ki, digər CPU tərəfindən növbəyə salınıb) tamamlandığını təmin edir. Gözlənilən işlərin olduğu ümumi yol dəyişməz qalır və əlavə aparat komandası göndərilmir.
Necə düzəltmək olar
- Linux Linux82c9a749d44efaaa1a1c781f8a6cf1747718f228, ab7faf5a172ebfdc423ebb3eea4d472740de82f9, 93494bd446396c257fb589f59894577e96e406e2, d053eb7e09e10cbdca3fca8b35c1017d438091b2, 02f8cefa2ad95ea3754f0cfd6fbae7f866202ccb, 1e75a8255f11c81fb07e81e5029cfd75804350a0 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 815b33fdc279d34ab40a8bfe1866623a4cc5669b ≤ v < 82c9a749d44efaaa1a1c781f8a6cf1747718f228, 815b33fdc279d34ab40a8bfe1866623a4cc5669b ≤ v < ab7faf5a172ebfdc423ebb3eea4d472740de82f9, 815b33fdc279d34ab40a8bfe1866623a4cc5669b ≤ v < 93494bd446396c257fb589f59894577e96e406e2, 815b33fdc279d34ab40a8bfe1866623a4cc5669b ≤ v < d053eb7e09e10cbdca3fca8b35c1017d438091b2, 815b33fdc279d34ab40a8bfe1866623a4cc5669b ≤ v < 02f8cefa2ad95ea3754f0cfd6fbae7f866202ccb, 815b33fdc279d34ab40a8bfe1866623a4cc5669b ≤ v < 1e75a8255f11c81fb07e81e5029cfd75804350a0, 3.0 | 82c9a749d44efaaa1a1c781f8a6cf1747718f228, ab7faf5a172ebfdc423ebb3eea4d472740de82f9, 93494bd446396c257fb589f59894577e96e406e2, d053eb7e09e10cbdca3fca8b35c1017d438091b2, 02f8cefa2ad95ea3754f0cfd6fbae7f866202ccb, 1e75a8255f11c81fb07e81e5029cfd75804350a0 |
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.