CVE-2026-90429
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: iommu/tegra241-cmdqv: Xəta ISR-ni VINTF (de)init ilə sinxronlaşdırın İstifadəçi VINTF-i destroy geri çağırma funksiyasından və alloc idarəçisindəki init-uğursuzluq geri qaytarma prosesindən işləyən tegra241_cmdqv_deinit_vintf() tərəfindən sökülür. Bu, cmdqv->vintfs[] slotunu təmizləyir və iommufd nüvəsinin onu azad etməsinə şərait yaradır, lakin bunu xəta kəsilməsi (interrupt) ilə sinxronlaşdıran heç bir mexanizm yoxdur: tegra241_cmdqv_isr() cmdqv->vintfs[idx]-i oxuyur və vintf-ə müraciət edir. Eyni vaxtda baş verən xəta ISR-in slotu təmizlənmə anında oxumasına (NULL deref) və ya azad olunmaq üzrə olan vintf-dən istifadə etməsinə (use-after-free) səbəb ola bilər. deinit_vintf() həmçinin slotu təmizləməzdən əvvəl idx-i IDA-ya qaytarır, buna görə də eyni vaxtda idx-i yenidən istifadə edən create prosesi yeni vintf-ini slota yerləşdirə bilər, lakin bu sökülmə prosesi köhnəlmiş NULL yazılması ilə onu yenidən silə bilər. Digər tərəfdən, tegra241_cmdqv_init_vintf() sadə bir store əməliyyatı ilə cmdqv->vintfs[] slotuna yeni vintf yerləşdirir və ISR dərhal vintf->base kimi dərc edilmiş vintf sahələrinə müraciət edir. Zəif sıralı (weakly-ordered) CPU-larda sadə store əməliyyatı ardıcıllığı təmin etmir və yenidən istifadə edilən idx-də köhnəlmiş VINTF_ERR_MAP biti ISR-in vintf-i onun sahələri təyin edilməmişdən və ya tegra241_vintf_hw_init() işə düşməmişdən əvvəl seçməsinə səbəb ola bilər. cmdqv->vintfs[0] slotu tegra241_cmdqv_init_structures() ilk dəfə VINTF0 yaratmayana qədər NULL olaraq qalır, buna görə də slot 0 oxunması üçün də eyni NULL yoxlaması lazımdır. Hər bir slotu smp_store_release() ilə dərc edin və ISR-də hər bir slotu NULL yoxlaması altında smp_load_acquire() ilə oxuyun ki, ISR həmişə tam qurulmuş vintf və ya NULL görsün. Həmçinin deinit_vintf()-in slotu təmizləməsini və idx-i IDA-ya qaytarmazdan əvvəl synchronize_irq() funksiyasını çağırmasını təmin edin ki, heç bir vintf işlək idarəçi altında azad edilməsin və yenidən istifadə edilən idx pozulmasın.
Necə düzəltmək olar
- Linux Linuxbcb82407633c3008362ad927699d985ee4981557, f3ef4abc271a1d3d7b6715879e149c286dc8aae7, a491be376abd1c80a314cdd658632c85cd660b73 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 4dc0d12474f9d4833c3dd96b73d61e406d3f5dc7 ≤ v < bcb82407633c3008362ad927699d985ee4981557, 4dc0d12474f9d4833c3dd96b73d61e406d3f5dc7 ≤ v < f3ef4abc271a1d3d7b6715879e149c286dc8aae7, 4dc0d12474f9d4833c3dd96b73d61e406d3f5dc7 ≤ v < a491be376abd1c80a314cdd658632c85cd660b73, 6.17 | bcb82407633c3008362ad927699d985ee4981557, f3ef4abc271a1d3d7b6715879e149c286dc8aae7, a491be376abd1c80a314cdd658632c85cd660b73 |
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.