TL;DR
Błąd w funkcji pgshift_level_to_ttl() w podsystemie KVM dla ARM64 zamieniał specjalną wartość S1_MMU_DISABLED (-127) w zero przez nieuważne rzutowanie na typ u8. Zero w strukturach KVM oznacza nieznany rozmiar bloku pamięci, więc cache procesora nie był poprawnie czyszczony - a to otwiera drogę do odczytu i zapisu w obszarach pamięci hosta, które powinny być już zwolnione.
Warunkiem ataku jest włączona wirtualizacja zagnieżdżona (na ARM64 domyślnie wyłączona) oraz dostęp do /dev/kvm, więc realne pole ataku jest węższe niż nagłówek sugeruje. Mimo to skutki są poważne: wyciek danych z pamięci jądra, potencjalne wykonanie kodu na hoście i ślady praktycznie niewidoczne dla hypervisora. Łatka trafiła już do jądra Linuksa w commicie 8053393680d4.
Na portalu openwall.com badacz bezpieczeństwa Hyunwoo Kim opublikował wpis zawierający szczegóły krytycznej podatności w podsystemie KVM (Kernel-based Virtual Machine) dla architek...
Czytaj cały wpis u źródła