Biblioteka vm2 do wersji 3.11.4 posiada niekompletną listę blokowanych modułów Node.js w komponencie NodeVM, co umożliwia kod uruchomiony w środowisku sandbox na ucieczkę do procesu hosta. Podatność otrzymała maksymalny wynik CVSS 10.0, co świadczy o jej krytycznym charakterze.
▸ Pokaż oryginał (EN)
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, NodeVM blocks several dangerous Node.js builtins such as module, worker_threads, cluster, vm, repl, and inspector. However, the denylist misses process and inspector/promises. Both can be used from sandboxed code to reach host-side execution primitives. This allows sandboxed code to bypass the intended builtin restrictions and execute code in the host process. This issue has been patched in version 3.11.4.
NodeVM blokuje szereg niebezpiecznych wbudowanych modułów Node.js (m.in. module, worker_threads, cluster, vm, repl, inspector), jednak lista blokad pomija moduły process oraz inspector/promises. Atakujący może skorzystać z tych pominiętych modułów wewnątrz sandbox, aby uzyskać dostęp do prymitywów wykonywania kodu po stronie hosta. W efekcie izolacja zapewniana przez sandbox jest całkowicie przełamana bez żadnych specjalnych uprawnień po stronie napastnika.
Atakujący może wykonać dowolny kod w procesie hosta (RCE), całkowicie omijając mechanizmy izolacji sandbox, co prowadzi do pełnego przejęcia kontroli nad systemem, ujawnienia danych oraz ich modyfikacji.
Należy zaktualizować bibliotekę vm2 do wersji 3.11.4, która zawiera poprawkę eliminującą lukę w liście blokowanych modułów. Szczegóły dostępne w oficjalnym security advisory oraz wydaniu v3.11.4 na GitHub.
Biblioteka vm2 w wersjach przed 3.11.4 (środowisko Node.js).
Podatność została zgłoszona i załatana w projekcie open source vm2 (GitHub: patriksimek/vm2). Poprawka dostępna w commicie a1ed47a98d1cc36cb48c0d566d55889688e0b59b oraz w wydaniu v3.11.4.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H