Biblioteka SandboxJS do wersji 0.8.29 zawiera krytyczną podatność pozwalającą na ucieczkę z piaskownicy JavaScript i wykonanie dowolnego kodu po stronie hosta. Błąd wynika z braku owijania wartości zwracanych przez funkcje, co umożliwia atakującemu uzyskanie dostępu do konstruktora Function hosta.
▸ Pokaż oryginał (EN)
SandboxJS is a JavaScript sandboxing library. Prior to 0.8.29, The return values of functions aren't wrapped. Object.values/Object.entries can be used to get an Array containing the host's Function constructor, by using Array.prototype.at you can obtain the hosts Function constructor, which can be used to execute arbitrary code outside of the sandbox. This vulnerability is fixed in 0.8.29.
Wartości zwracane przez funkcje wewnątrz sandboxa nie są owijane (wrapped) do bezpiecznych odpowiedników. Atakujący może użyć metod Object.values lub Object.entries, aby uzyskać tablicę zawierającą konstruktor Function hosta. Następnie, korzystając z metody Array.prototype.at, możliwe jest wydobycie tego konstruktora i użycie go do zbudowania oraz wywołania dowolnego kodu JavaScript poza kontrolowanym środowiskiem piaskownicy. Jest to klasyczny scenariusz injection (CWE-74) prowadzący do pełnego RCE po stronie hosta.
Atakujący może wykonać dowolny kod JavaScript poza piaskownicą, w kontekście procesu hosta, co skutkuje pełnym przejęciem kontroli nad aplikacją, wyciekiem danych oraz potencjalnym naruszeniem integralności i dostępności systemu.
Należy zaktualizować SandboxJS do wersji 0.8.29 lub nowszej. Poprawka dostępna jest w repozytorium producenta (commit 67cb186c41c78c51464f70405504e8ef0a6e43c3). Do czasu aktualizacji należy unikać przekazywania niezaufanych danych wejściowych do środowiska SandboxJS.
Biblioteka Nyariv SandboxJS we wszystkich wersjach przed 0.8.29
Podatność została naprawiona w wersji 0.8.29. Szczegóły techniczne opublikowano w ramach GitHub Security Advisory GHSA-58jh-xv4v-pcx4.
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
SandboxJS — ucieczka z sandbox przez shadowing hasOwnProperty