Komponent varstored stosu Xapi, obsługujący zmienne UEFI dla maszyn wirtualnych, zawiera błąd typu TOCTOU (Time-of-Check Time-of-Use) wynikający z niewystarczających barier kompilatora. Podatność pozwala złośliwej maszynie wirtualnej na przejęcie kontroli nad indeksem tablicy skoku (jump table), co może prowadzić do wykonania dowolnego kodu z uprawnieniami varstored.
▸ Pokaż oryginał (EN)
varstored is a component of the Xapi toolstack handling UEFI Variables for a VM. It has a communication path with OVMF inside the VM involving mapping a buffer prepared by OVMF. Within varstored, there were insufficient compiler barriers, creating TOCTOU issues with data in the shared buffer. The exact vulnerable behaviour depends on the code generated by the compiler. In a build of varstored using default settings, the attacker can control an index used in a jump table.
Varstored komunikuje się z OVMF działającym wewnątrz maszyny wirtualnej poprzez wspólny bufor pamięci przygotowywany przez OVMF. Ze względu na brak wystarczających barier kompilatora, dane w tym buforze mogą zostać zmodyfikowane przez atakującego pomiędzy ich odczytem a użyciem (klasyczny błąd TOCTOU — CWE-367). W domyślnej konfiguracji kompilacji atakujący może przez to kontrolować indeks używany do wyszukiwania wpisu w tablicy skoku, co umożliwia przekierowanie przepływu wykonania programu.
Atakujący z dostępem do maszyny wirtualnej może przejąć kontrolę nad procesem varstored działającym na hoście, potencjalnie uzyskując możliwość wykonania dowolnego kodu (RCE) z uprawnieniami tego procesu oraz naruszenia poufności, integralności i dostępności zarówno systemu hosta, jak i innych maszyn wirtualnych.
Należy zastosować patche dostępne u producenta zgodnie z referencjami — patrz advisory XSA-478 dostępne pod adresem https://xenbits.xen.org/xsa/advisory-478.html.
Systemy wykorzystujące varstored jako część stosu Xapi (środowisko Xen) z OVMF obsługującym zmienne UEFI dla maszyn wirtualnych; szczegółowe wersje wskazane w referencjach producenta (XSA-478).
Podatność opisana w Xen Security Advisory XSA-478. Dokładne skutki podatności zależą od kodu wygenerowanego przez kompilator — w domyślnej konfiguracji kompilacji możliwa jest kontrola indeksu tablicy skoku.
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X