Biblioteka vm2 (sandbox dla Node.js) w wersjach przed 3.11.4 zawiera podatność umożliwiającą ucieczkę z izolowanego środowiska i wykonanie dowolnego kodu na hoście. Otrzymała maksymalną ocenę CVSS 10.0, co czyni ją podatnością krytyczną wymagającą natychmiastowej reakcji.
▸ Pokaż oryginał (EN)
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, by combining Buffer.call.call({}.__lookupGetter__, Buffer, "__proto__"), Buffer.call.call({}.__lookupSetter__, Buffer, "__proto__"), and Node.js's ERR_INVALID_ARG_TYPE Error, the host's TypeError constructor can be obtained, which allows the escape from the sandbox. This allows attackers to run arbitrary code. This issue has been patched in version 3.11.4.
Atakujący może połączyć wywołania Buffer.call.call({}.__lookupGetter__, Buffer, "__proto__") oraz Buffer.call.call({}.__lookupSetter__, Buffer, "__proto__") w połączeniu z obsługą błędu ERR_INVALID_ARG_TYPE generowanego przez Node.js. Dzięki temu możliwe jest uzyskanie dostępu do konstruktora TypeError hosta, który znajduje się poza granicą sandboxa. Przejęcie tego obiektu przełamuje izolację środowiska vm2, umożliwiając wykonanie kodu poza kontrolowaną przestrzenią (CWE-913: niedostateczna kontrola zarządzania zasobami dynamicznie zarządzanego kodu).
Atakujący uzyskuje możliwość wykonania dowolnego kodu na serwerze hosta (RCE), z pominięciem mechanizmów izolacji sandboxa — co może prowadzić do pełnego przejęcia kontroli nad systemem, wycieku danych oraz naruszenia integralności i dostępności aplikacji.
Należy natychmiast zaktualizować bibliotekę vm2 do wersji 3.11.4 lub nowszej, w której problem został naprawiony. Patch dostępny jest w repozytorium GitHub projektu (commit 27c525f4615e2b983f122e2bed327d810126f5c8) oraz w oficjalnym wydaniu v3.11.4.
Biblioteka vm2 w wersjach przed 3.11.4 (dotyczy wszystkich aplikacji Node.js korzystających z vm2 jako mechanizmu sandboxowania).
Podatność zgłoszona i naprawiona w ramach oficjalnego security advisory projektu vm2 (GHSA-v6mx-mf47-r5wg). Warto odnotować, że projekt vm2 był wcześniej wielokrotnie dotknięty podobnymi podatnościami sandbox escape — organizacje powinny rozważyć migrację do alternatywnych rozwiązań izolacji kodu, jeśli vm2 jest elementem krytycznej infrastruktury.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H