Pakiet vm2 przed wersją 3.9.10 zawiera krytyczną podatność umożliwiającą wykonanie dowolnego kodu (Arbitrary Code Execution) na hoście. Błąd pozwala atakującemu na ucieczkę z izolowanego środowiska sandbox i uzyskanie dostępu do obiektu hosta.
▸ Pokaż oryginał (EN)
The package vm2 before 3.9.10 are vulnerable to Arbitrary Code Execution due to the usage of prototype lookup for the WeakMap.prototype.set method. Exploiting this vulnerability leads to access to a host object and a sandbox compromise.
Podatność wynika z nieprawidłowego mechanizmu wyszukiwania prototypów (prototype lookup) stosowanego dla metody WeakMap.prototype.set. Atakujący może wykorzystać ten błąd do manipulacji łańcuchem prototypów w sposób umożliwiający wyjście poza granice sandboxa. W efekcie możliwe jest uzyskanie dostępu do natywnych obiektów hosta, co całkowicie kompromituje izolację zapewnianą przez vm2.
Atakujący może wykonać dowolny kod po stronie hosta (RCE) oraz w pełni przejąć kontrolę nad środowiskiem uruchomieniowym, omijając mechanizmy izolacji sandboxa zapewniane przez bibliotekę vm2.
Należy zaktualizować pakiet vm2 do wersji 3.9.10 lub nowszej. Poprawka została wprowadzona w pull request #445 (commit 3a9876482be487b78a90ac459675da7f83f46d69) w repozytorium GitHub projektu.
Pakiet vm2 (Vm2 Project) we wszystkich wersjach przed 3.9.10
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.10
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)