Biblioteka vm2 dla Node.js w wersjach przed 3.11.2 zawiera podatność umożliwiającą ucieczkę z sandboxu i wykonanie dowolnego kodu na systemie hosta. Błąd jest krytyczny, ponieważ nie wymaga uwierzytelnienia ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.2, the new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This vulnerability is fixed in 3.11.2.
Metoda neutralizeArraySpeciesBatch operuje na obiektach z zewnętrznego kontekstu, jednak może być wywołana przez getter zdefiniowany na prototypie tablicy po stronie hosta. Poprzez ten mechanizm obiekty z nieprawidłowego kontekstu (strony hosta) są ujawniane wewnątrz sandboxu. Atakujący może w ten sposób uzyskać dostęp do obiektów hosta, w tym do obiektu Function, co pozwala na skonstruowanie kodu wykonującego się poza sandboxem.
Atakujący może całkowicie uciec z izolowanego środowiska vm2 i wykonać dowolne polecenia na systemie hosta, co prowadzi do pełnego przejęcia kontroli nad serwerem.
Należy zaktualizować bibliotekę vm2 do wersji 3.11.2, w której podatność została naprawiona.
vm2 w wersjach przed 3.11.2 (biblioteka sandbox/VM dla Node.js, projekt patriksimek/vm2)
Podatność zgłoszona i udokumentowana w ramach GitHub Security Advisory GHSA-9qj6-qjgg-37qq. Poprawka dostępna w wersji 3.11.2.
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.2
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)