CVE-2026-89930
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
KVM: nVMX: Obsługa lokalnego opróżniania TLB w przypadku nieudanego zagnieżdżenia VM-Enter
KVM obsługuje lokalne opróżnianie TLB na „pełnych” zagnieżdżonych wyjściach VM (przez
__nested_vmx_vmexit()), ale nie w przypadku niepowodzenia zagnieżdżonego wejścia VM (np. z powodu
nieudane sprawdzenie VMCS w trybie zagnieżdżonym_vmx_enter_non_root_mode()).
Możliwe jest jednak, że KVM umieścił w kolejce opróżnienia TLB, co jest konieczne
wykonane, nawet jeśli zagnieżdżone VM-Enter nie powiodło się. Na przykład
jeśli VPID jest wyłączony dla L2 (poprzez zagnieżdżoną_vmx_transition_tlb_flush() lub jeśli
poprzez listy ładunkowe MSR, jak mówi SDM:
Jeśli jakikolwiek MSR jest ładowany w sposób, który będzie architektonicznie
wymagają opróżnienia TLB, TLB są aktualizowane w taki sposób, że po wejściu na maszynę wirtualną,
procesor logiczny nie będzie korzystał z żadnych tłumaczeń, które były wcześniej buforowane
przejście.
SDM nie jest jasne, kiedy powinno nastąpić przepłukanie TLB i czy
żaden nieudany wpis maszyny wirtualnej nie spowodowałby opróżnienia TLB, więc bezpieczniej jest zawsze
w tym przypadku wykonaj kolor TLB.
Mówiąc dokładniej, KVM aktualizuje również ostatni identyfikator VPID L1 używany dla L2
zagnieżdżona_vmx_transition_tlb_flush() (tj. last_vpid), nawet jeśli wpis VM
ostatecznie kończy się niepowodzeniem. Przy obecnym kodzie KVM może przegapić kolor TLB, jeśli
L1 zmienia identyfikator VPID L2, następnie wprowadza nieudany wpis do maszyny wirtualnej, po którym następuje a
udany, ponieważ nieudany wpis maszyny wirtualnej zaktualizuje last_vpid, ale nie
faktycznie opróżnij TLB. Obsługa lokalnego opróżniania TLB w przypadku nieudanych wpisów maszyny wirtualnej
upewnia się, że TLB jest zawsze opróżniany podczas aktualizacji last_vpid.
>_ Referencje
- https://git.kernel.org/stable/c/05a0b701d1089fb57beeb8982f23c3bbafe0fa8b
- https://git.kernel.org/stable/c/1025b938dc439b75c720a568a855a13eeb245686
- https://git.kernel.org/stable/c/312cdb6d8940827dea63a7a52fb714a5049f06d1
- https://git.kernel.org/stable/c/62c3ee4c9f0e2efef5157358b3549e50ede96d73
- https://git.kernel.org/stable/c/c0c66cd575e31218da6a7d104c6ef80b0830b60c
- https://git.kernel.org/stable/c/c43563e7518e65ec6ccaa6a65f84c5af5ca5d379
- https://git.kernel.org/stable/c/f74fccdf4f7fb0780cd84944108d35f3d9dc46a7
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org