CVE-2021-4440
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: x86/xen: USERGS_SYSRET64 paravirt çağırışını ləğv edin upstream-də commit afd30525a659ac0ae0904f0cb4a2ca75522c3123. USERGS_SYSRET64, SYSRET vasitəsilə sistem çağırışından (syscall) geri dönmək üçün istifadə olunur, lakin təyin edilmiş heç bir sysret PV hiperçağırışı olmadığı üçün Xen PV qonağı hər halda IRET hiperçağırışından istifadə edəcəkdir. Beləliklə, sysret etmək üçün bütün ön şərtləri yoxlayıb, sonra iret etmək üçün stekini yenidən Xen PV üçün dəyişdirmək əvəzinə, başlanğıcdan iret çıxışından istifadə edin. Bu, artıq sysenter compat halı üçün edildiyi kimi, ALTERNATIVE vasitəsilə asanlıqla həyata keçirilə bilər. Qeyd edilməlidir ki, bu, Xen-də istifadəçi rejiminə qayıdarkən bir neçə registrin bərpası ilə bağlı optimallaşdırmanı ləğv edir, lakin görünür ki, nüvədə qazanılan təlimatlar bu azalmanı tam kompensasiya edir (bu yam tətbiq edildikdə Xen PV qonağında nüvənin qurulması bir qədər daha sürətli oldu). Eyni zamanda köhnəlmiş sysret32 qalıqlarını silin. [ pawan: Brad Spengler və Salvatore Bonaccorso <[email protected]> 5.10 backport commit edc702b4a820 ("x86/entry_64: Add VERW just before userspace transition") ilə bağlı problemi bildiriblər. CONFIG_PARAVIRT_XXL=y olduqda, USERGS_SYSRET64 çalışma zamanı aşağıdakı şəkildə yamalandığı üçün syscall_return_via_sysret yolunda CLEAR_CPU_BUFFERS icra edilmir: .cpu_usergs_sysret64 = { 0x0f, 0x01, 0xf8, 0x48, 0x0f, 0x07 }, // swapgs; sysretq burada CLEAR_CPU_BUFFERS çatışmır. Məlum olur ki, USERGS_SYSRET64-ün ləğvi kodu sadələşdirir və CLEAR_CPU_BUFFERS-in syscall_return_via_sysret yoluna açıq şəkildə əlavə edilməsinə imkan verir. Aşağıda CONFIG_PARAVIRT_XXL=y və bu yam tətbiq edildikdəki vəziyyət göstərilib: syscall_return_via_sysret: ... <+342>: swapgs <+345>: xchg %ax,%ax <+347>: verw -0x1a2(%rip) <------ <+354>: sysretq ]
Necə düzəltmək olar
- linux linux_kernel5.10.218 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.10.215 ≤ v < 5.10.218 | 5.10.218 |
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.