Biblioteka SandboxJS przed wersją 0.8.36 pozwala atakującemu na ominięcie mechanizmu izolacji sandbox poprzez nadużycie ścieżki konstruktora. Podatność umożliwia trwałą modyfikację globalnych obiektów hosta, co prowadzi do naruszenia izolacji między instancjami sandbox w tym samym procesie.
▸ Pokaż oryginał (EN)
SandboxJS is a JavaScript sandboxing library. Prior to 0.8.36, SandboxJS blocks direct assignment to global objects (for example Math.random = ...), but this protection can be bypassed through an exposed callable constructor path: this.constructor.call(target, attackerObject). Because this.constructor resolves to the internal SandboxGlobal function and Function.prototype.call is allowed, attacker code can write arbitrary properties into host global objects and persist those mutations across sandbox instances in the same process. This vulnerability is fixed in 0.8.36.
SandboxJS blokuje bezpośrednie przypisanie właściwości do globalnych obiektów (np. Math.random = ...), jednak ochrona ta może zostać ominięta poprzez wywołanie this.constructor.call(target, attackerObject). Ponieważ this.constructor wskazuje na wewnętrzną funkcję SandboxGlobal, a Function.prototype.call jest dozwolone, kod atakującego może zapisywać dowolne właściwości do globalnych obiektów hosta. Mutacje te są trwałe i utrzymują się we wszystkich instancjach sandbox działających w tym samym procesie, co skutecznie łamie granicę izolacji.
Atakujący może trwale modyfikować globalne obiekty środowiska hosta, co prowadzi do naruszenia integralności danych, potencjalnego ujawnienia informacji oraz przejęcia kontroli nad logiką innych instancji sandbox działających w tym samym procesie.
Należy zaktualizować bibliotekę SandboxJS do wersji 0.8.36 lub nowszej, w której podatność została naprawiona. Szczegóły dostępne w referencjach producenta (GitHub Security Advisory GHSA-2gg9-6p7w-6cpj).
Nyariv SandboxJS w wersjach wcześniejszych niż 0.8.36
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:LNyariv Sandboxjs
APPNyariv< 0.8.36
Powiązane podatności
SandboxJS: ucieczka z piaskownicy przez Function.caller i RCE
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ą
Ucieczka z sandboxa w bibliotece SandboxJS poprzez nadpisanie Map.prototype