Podatność w podsystemie KVM jądra Linux na architekturze arm64 polega na braku pobrania blokady SRCU (kvm->srcu) przed przejściem tablic stron w funkcjach __kvm_at_s12() i __kvm_find_s1_desc_level(). Może to prowadzić do wyścigu danych (race condition) przy zmianach w strukturach memslot, co stanowi zagrożenie dla stabilności i izolacji maszyn wirtualnych.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Take the SRCU lock for page table walks in fault injection and AT emulation walk_s1() and kvm_walk_nested_s2() expect to be called while holding kvm->srcu to guard against memslot changes. While this is generally the case, __kvm_at_s12() and __kvm_find_s1_desc_level() call into the respective walkers without taking kvm->srcu. Fix by acquiring kvm->srcu prior to the table walk in both instances.
Funkcje walk_s1() oraz kvm_walk_nested_s2() wymagają, aby wywołujący trzymał blokadę kvm->srcu, która chroni przed równoczesnymi zmianami w strukturach memslot. Funkcje __kvm_at_s12() (emulacja instrukcji AT) oraz __kvm_find_s1_desc_level() (wstrzykiwanie wyjątków page fault) wywoływały te procedury przechodzenia tablic stron bez uprzedniego pobrania wspomnianej blokady. Brak synchronizacji typu SRCU (Sleepable RCU) powoduje podatność na wyścig danych (CWE-662, CWE-820), w wyniku którego operacje na tabelach stron mogą dotyczyć niespójnych lub zmodyfikowanych danych memslot. Poprawka polega na pobraniu blokady kvm->srcu bezpośrednio przed wykonaniem przejścia tablic stron w obu miejscach.
Lokalny użytkownik posiadający dostęp do maszyny wirtualnej (np. proces gościa lub uprzywilejowany użytkownik gościa) może potencjalnie doprowadzić do nieuprawnionego ujawnienia danych (C:H), ich modyfikacji (I:H) lub zakłócenia dostępności systemu hosta (A:H), w tym przejścia granicy izolacji hiperwizora (Scope:Changed).
Należy zastosować patche dostępne u producenta zgodnie z referencjami — poprawki zostały opublikowane w repozytorium linux-stable (commity: 97706097f9b8, ec42b4ed1b07, f2ca45b50d42). Zalecana aktualizacja jądra do wersji zawierającej wymienione poprawki.
Jądro Linux z włączoną obsługą KVM na architekturze arm64; konkretne wersje wskazane w referencjach producenta (commity dostępne w repozytorium stable kernel).
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HLinux Kernel
OSLinux7.16.12 – 6.18.36 (bez)6.19 – 7.0.13 (bez)
Powiązane podatności
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
RCE przez YAML deserialization w IBM Aspera Faspex
RCE w VMware Workspace ONE Access i Identity Manager poprzez server-side template injection
Command Injection w VMware Workspace One Access i Identity Manager