SandboxJS is a JavaScript sandboxing library. Versions prior to 0.8.26 have a sandbox escape vulnerability due to `AsyncFunction` not bei…
SandboxJS is a JavaScript sandboxing library. Versions prior to 0.8.26 have a sandbox escape vulnerability due to `AsyncFunction` not being isolated in `SandboxFunction`. The library attempts to sandbox code execution by replacing the global `Function` constructor with a safe, sandboxed version (`SandboxFunction`). This is handled in `utils.ts` by mapping `Function` to `sandboxFunction` within a map used for lookups. However, before version 0.8.26, the library did not include mappings for `AsyncFunction`, `GeneratorFunction`, and `AsyncGeneratorFunction`. These constructors are not global properties but can be accessed via the `.constructor` property of an instance (e.g., `(async () => {}).constructor`). In `executor.ts`, property access is handled. When code running inside the sandbox accesses `.constructor` on an async function (which the sandbox allows creating), the `executor` retrieves the property value. Since `AsyncFunction` was not in the safe-replacement map, the `executor` returns the actual native host `AsyncFunction` constructor. Constructors for functions in JavaScript (like `Function`, `AsyncFunction`) create functions that execute in the global scope. By obtaining the host `AsyncFunction` constructor, an attacker can create a new async function that executes entirely outside the sandbox context, bypassing all restrictions and gaining full access to the host environment (Remote Code Execution). Version 0.8.26 patches this vulnerability.
Продукт формирует полностью или частично сегмент кода на основе входных данных от вышестоящего компонента, однако не нейтрализует или некорректно нейтрализует специальные элементы, способные изменить синтаксис или поведение предполагаемого сегмента кода.
https://cwe.mitre.org/data/definitions/94.html →Открыть в коллекции CWE →Данная атака эксплуатирует доверие системы к файлам конфигурации и ресурсов. Когда исполняемый файл загружает ресурс (например, файл изображения или файл конфигурации), злоумышленник модифицирует файл таким образом, чтобы либо непосредственно выполнить вредоносный код, либо манипулировать целевым процессом (например, сервером приложений), заставляя его выполнять действия на основе вредоносных параметров конфигурации. По мере того как системы всё активнее интегрируют ресурсы из локальных и удалённых источников, вероятность осуществления данной атаки возрастает.
https://capec.mitre.org/data/definitions/35.html →Открыть в коллекции CAPEC →Данная атака направлена на переменные, управляемые пользователем (DEBUG=1, PHP Globals и т. д.). Злоумышленник может переопределять переменные, используя переменные запроса, предоставляемые пользователем и применяемые непосредственно на сервере приложений без какой-либо санитизации данных. В крайних случаях злоумышленник может изменять переменные, управляющие бизнес-логикой приложения. Например, в языках наподобие PHP ряд неудачно заданных конфигураций по умолчанию может позволить пользователю переопределять переменные.
https://capec.mitre.org/data/definitions/77.html →Открыть в коллекции CAPEC →Злоумышленник эксплуатирует слабость в проверке входных данных на стороне цели, чтобы внедрить новый код в выполняемый в данный момент. Этот шаблон отличается от включения кода тем, что включение кода предполагает добавление или замену ссылки на файл с кодом, который впоследствии загружается целью и используется как часть кода некоторого приложения.
https://capec.mitre.org/data/definitions/242.html →Открыть в коллекции CAPEC →| Продукт | Вендор | Статус |
|---|---|---|
| sandboxjs | * | Отслеживается |