Biblioteka SandboxJS do izolacji kodu JavaScript zawiera krytyczną podatność umożliwiającą ucieczkę z sandboxa (sandbox escape). Błąd pozwala niezaufanemu kodowi JavaScript na przełamanie izolacji i uzyskanie pełnego dostępu do środowiska hosta.
▸ Pokaż oryginał (EN)
SandboxJS is a JavaScript sandboxing library. Prior to 0.8.29, as Map is in SAFE_PROTOYPES, it's prototype can be obtained via Map.prototype. By overwriting Map.prototype.has the sandbox can be escaped. This vulnerability is fixed in 0.8.29.
Podatność wynika z faktu, że typ Map jest uwzględniony na liście SAFE_PROTOTYPES, co sprawia, iż jego prototyp jest dostępny przez Map.prototype wewnątrz sandboxa. Atakujący może nadpisać metodę Map.prototype.has własną implementacją, co prowadzi do przełamania mechanizmów izolacji sandboxa. Umożliwia to wykonanie dowolnego kodu JavaScript poza kontrolowanym środowiskiem.
Atakujący może uciec z izolowanego środowiska sandboxa i wykonać dowolny kod (RCE) w kontekście aplikacji hosta, uzyskując potencjalnie pełną kontrolę nad systemem — w tym poufność, integralność oraz dostępność danych (CWE-94: Code Injection).
Należy zaktualizować bibliotekę SandboxJS do wersji 0.8.29 lub nowszej, w której podatność została naprawiona. Poprawka dostępna jest w repozytorium GitHub projektu (commit 67cb186c41c78c51464f70405504e8ef0a6e43c3).
Biblioteka Nyariv SandboxJS w wersjach wcześniejszych niż 0.8.29.
Podatność zgłoszona i naprawiona w ramach GitHub Security Advisory GHSA-66h4-qj4x-38xp. Poprawka dostępna od wersji 0.8.29.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HNyariv Sandboxjs
APPNyariv< 0.8.29
Powiązane podatności
SandboxJS: ucieczka z piaskownicy przez Function.caller i RCE
SandboxJS: obejście ochrony sandbox przez ścieżkę konstruktora
Ucieczka z sandbox w bibliotece Nyariv SandboxJS (RCE)
SandboxJS: ucieczka z sandboxu i prototype pollution umożliwiająca RCE
Ucieczka z sandboxa w SandboxJS — wykonanie kodu poza piaskownicą