Biblioteka vm2 (sandbox dla Node.js) w wersjach przed 3.11.0 zawiera krytyczną podatność umożliwiającą ucieczkę z piaskownicy poprzez funkcję inspect. Atakujący może wykonać dowolne polecenia na systemie hosta, co czyni tę podatność wyjątkowo niebezpieczną dla środowisk korzystających z vm2 do izolacji niezaufanego kodu.
▸ Pokaż oryginał (EN)
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.0, VM2 suffers from a sandbox breakout vulnerability through the inspect function. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This issue has been patched in version 3.11.0.
Podatność wynika z nieprawidłowej implementacji mechanizmu inspect w vm2, który nie zapewnia odpowiedniej izolacji (CWE-94: code injection, CWE-693: niewystarczająca ochrona mechanizmu). Atakujący może spreparować kod wykonywany wewnątrz piaskownicy vm2, który za pośrednictwem funkcji inspect wydostaje się poza jej granice. Po ucieczce z sandboxa możliwe jest wykonanie dowolnych poleceń bezpośrednio na systemie operacyjnym hosta.
Atakujący uzyskuje pełną kontrolę nad systemem hosta — może odczytywać, modyfikować i usuwać pliki, wykonywać dowolne polecenia systemowe oraz potencjalnie przejąć kontrolę nad całą infrastrukturą. Podatność prowadzi do pełnego naruszenia poufności, integralności i dostępności systemu.
Należy zaktualizować bibliotekę vm2 do wersji 3.11.0, w której podatność została naprawiona. Aktualizacja dostępna jest w repozytorium GitHub projektu oraz w rejestrze npm.
Vm2 Project vm2 we wszystkich wersjach poprzedzających 3.11.0
Poprawka została wprowadzona w wersji 3.11.0 i udokumentowana w trzech osobnych commitach: 8d30d93, bdd3d15, fd266d0. Szczegóły dostępne w oficjalnym security advisory GitHub: GHSA-v37h-5mfm-c47c.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HVm2 Project Vm2
APPVm2 Project< 3.11.0
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)