W bibliotece vm2 (wersje do 3.9.15) istnieje podatność w logice sanityzacji wyjątków transformatora kodu źródłowego, pozwalająca na ucieczkę z piaskownicy. Atakujący może uzyskać prawa do wykonania dowolnego kodu w kontekście hosta — bez żadnego uwierzytelnienia.
▸ Pokaż oryginał (EN)
There exists a vulnerability in source code transformer (exception sanitization logic) of vm2 for versions up to 3.9.15, allowing attackers to bypass `handleException()` and leak unsanitized host exceptions which can be used to escape the sandbox and run arbitrary code in host context. A threat actor can bypass the sandbox protections to gain remote code execution rights on the host running the sandbox. This vulnerability was patched in the release of version `3.9.16` of `vm2`.
Podatność tkwi w mechanizmie obsługi wyjątków (exception sanitization logic) w transformatorze kodu źródłowego vm2. Funkcja `handleException()` może zostać ominięta, co skutkuje wyciekiem niesanityzowanych wyjątków hosta do kontekstu piaskownicy. Atakujący może następnie wykorzystać te wyjątki do przełamania izolacji piaskownicy i wykonania arbitralnego kodu bezpośrednio na hoście uruchamiającym vm2.
Atakujący może całkowicie przełamać izolację piaskownicy vm2 i wykonać dowolny kod (RCE) w kontekście hosta, co może prowadzić do pełnego przejęcia systemu, ujawnienia danych oraz naruszenia integralności i dostępności usług.
Należy niezwłocznie zaktualizować vm2 do wersji 3.9.16, w której podatność została załatana. Patch dostępny jest w oficjalnym repozytorium projektu oraz opisany w security advisory GHSA-xj72-wvfv-8985.
vm2 w wersjach do 3.9.15 włącznie (Vm2 Project)
Dostępny jest publiczny proof-of-concept exploitu (gist.github.com/leesh3288/f05730165799bf56d70391f3d9ea187c). Mimo oceny CVSS 9.8 (CRITICAL) podatność nie figuruje w katalogu CISA KEV. Ze względu na publiczny exploit i krytyczny wynik CVSS zaleca się pilne wdrożenie aktualizacji.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HVm2 Project Vm2
APPVm2 Project< 3.9.16
Powiązane podatności
vm2: mutacja prototypów hosta z poziomu sandbox (prototype pollution)
vm2 (Node.js): ucieczka z sandbox przez BaseHandler.getPrototypeOf (RCE)
Ucieczka z sandboxa w bibliotece vm2 dla Node.js (RCE)
vm2: ominięcie listy dozwolonych modułów i RCE przez builtin 'module'
vm2 (Node.js): ucieczka z sandbox przez zagnieżdżony NodeVM (RCE)