CVE-2026-68093
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: KVM: SVM: Hotplug-dan sonra ASID toqquşmasının qarşısını almaq üçün CPU online zamanı asid_generation artırılsın Əgər bir vCPU sonuncu dəfə işlədiyi pCPU hotplug dövründən (online->offline->online) keçərkən planlaşdırılmadan kənarda qalarsa (və ya bloklanarsa) və daha sonra həmin vCPU eyni pCPU-da icranı bərpa edərsə, onun artıq başqa bir vCPU-ya təyin edilmiş ASID ilə işləməsi mümkündür ki, bu da köhnəlmiş TLB tərcümələrinin istifadəsinə səbəb olur. svm_enable_virtualization_cpu() funksiyası hər bir CPU online hadisəsi zamanı, o cümlədən hotplug dövrləri zamanı asid_generation dəyişənini 1-ə sıfırlayır və next_asid dəyişənini max_asid + 1 olaraq təyin edir. next_asid hovuz sərhədindən kənardan başladığı üçün, online hadisəsindən sonra new_asid() funksiyasına edilən ilk çağırış həmişə hovuza geri dönür, asid_generation dəyərini 2-yə artırır və min_asid-dən başlayaraq ASID-lər təyin edir. Hotplug hadisəsindən əvvəl asid_generation=2 və ASID=N dəyərlərinə malik olan, CPU-X-ə bağlanmış fərqli VM-lərdən iki vCPU-nu (vCPU-A) nəzərdən keçirək: 1. CPU-X offline olur və yenidən online olur: asid_generation 1-ə sıfırlanır, next_asid = max_asid + 1. 2. Bir və ya daha çox vCPU CPU-X-ə miqrasiya edir və new_asid() funksiyasını çağırır, hovuzu dövr edərək min_asid-dən başlayan ASID-ləri istifadə edir. Nəticədə, fərqli VM-dən olan vCPU-B-yə asid_generation=2, ASID=N təyin edilir — bu, vCPU-A-nın hotplug-dan əvvəl sahib olduğu ASID ilə eynidir. 3. vCPU-A CPU-X üzərində pre_svm_run() funksiyasına daxil olur: current_vmcb->cpu dəyişmədiy üçün miqrasiya budağı ötürülür. Onun yadda saxlanılmış asid_generation=2 dəyəri sd->asid_generation=2 ilə üst-üstə düşür, buna görə də generasiya yoxlaması səssizcə keçir və vCPU-A ASID=N ilə işləməyə davam edir — bu, elə yeni təyin edilmiş vCPU-B-nin ASID-dir. Fərqli VM-lərdən olan hər iki vCPU indi CPU-X üzərində eyni ASID ilə işləyir, bu da onların NPT TLB yazdılarını paylaşmasına və köhnəlmiş tərcümələrin yaranmasına səbəb olur. Toqquşma KVM daxili xətası (Suberror: 1, emulyasiya uğursuzluğu) kimi özünü göstərir. NPT səhifə xətası (page fault), VM-in fiziki yaddaş diapazonundan xeyli kənarda olan xətalı GPA hesabatı verir — bu, köhnəlmiş TLB tərcümələrinin istifadə edildiyinin əlamətidir. KVM təlimat emulyasiyasına keçid edir, lakin emulyator tərəfindən tətbiq edilməyən FPU/XSave təlimatlarında (XRSTOR, STMXCSR) bu proses uğursuz olur. Bu problem svm_enable_virtualization_cpu() funksiyasında asid_generation dəyərini 1-ə sıfırlamaq əvəzinə onu artırmaqla həll edilir. Modul yükləndikdə asid_generation 0-dan (memset) başlayır və artım nəticəsində 1 olur ki, bu da köhnə davranışla eynidir. Sonrakı hotplug dövrlərində generasiya, vCPU-nun bu CPU-da əvvəllər müşahidə etdiyi hər hansı bir dəyərdən daha irəli gedir, beləliklə pre_svm_run()-dəki generasiya yoxlaması hər hotplug dövründən sonra hər bir vCPU üçün etibarlı şəkildə new_asid() funksiyasını məcburi çağırır.
Necə düzəltmək olar
- Linux Linux2028b81321dc757b6875b99c10d908e349c141e2, 60283726f2845bd78b95efbd0e50b93944780477, 7508916b4b55d6f5ecc68cd09774dabd3a6b4440, 0f33b1c457c2199ed130b92cc2ff363a3f7b9415, 6b542d116acecb83a1ca34e8eace304cff6a4ec9, 25f744ffa0c8e799e06250ce2e618367b166b0d4 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 774c47f1d78e373a6bd2964f4e278d1ce26c21cb ≤ v < 2028b81321dc757b6875b99c10d908e349c141e2, 774c47f1d78e373a6bd2964f4e278d1ce26c21cb ≤ v < 60283726f2845bd78b95efbd0e50b93944780477, 774c47f1d78e373a6bd2964f4e278d1ce26c21cb ≤ v < 7508916b4b55d6f5ecc68cd09774dabd3a6b4440, 774c47f1d78e373a6bd2964f4e278d1ce26c21cb ≤ v < 0f33b1c457c2199ed130b92cc2ff363a3f7b9415, 774c47f1d78e373a6bd2964f4e278d1ce26c21cb ≤ v < 6b542d116acecb83a1ca34e8eace304cff6a4ec9, 774c47f1d78e373a6bd2964f4e278d1ce26c21cb ≤ v < 25f744ffa0c8e799e06250ce2e618367b166b0d4, 2.6.21 | 2028b81321dc757b6875b99c10d908e349c141e2, 60283726f2845bd78b95efbd0e50b93944780477, 7508916b4b55d6f5ecc68cd09774dabd3a6b4440, 0f33b1c457c2199ed130b92cc2ff363a3f7b9415, 6b542d116acecb83a1ca34e8eace304cff6a4ec9, 25f744ffa0c8e799e06250ce2e618367b166b0d4 |
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.