SandboxJS — это библиотека песочницы JavaScript. До версии 0.8.35 таймеры SandboxJS имели обход квоты выполнения. Глобальное состояние тика («currentTicks.current») является общим для всех песочниц.
Обработчики строк таймера компилируются во время выполнения с использованием этого глобального состояния тика, а не объекта тика песочницы планирования. В сценариях с многопользовательской/параллельной песочницей другая песочница может перезаписать currentTicks.current между планированием и выполнением, в результате чего обратный вызов таймера будет выполняться в соответствии с тиковым бюджетом другой песочницы и обходить квоту выполнения/сторожевой таймер исходной песочницы. Версия 0.8.35 устраняет эту проблему.
Показать оригинальное описание (EN)
SandboxJS is a JavaScript sandboxing library. Prior to 0.8.35, SandboxJS timers have an execution-quota bypass. A global tick state (`currentTicks.current`) is shared between sandboxes. Timer string handlers are compiled at execution time using that global tick state rather than the scheduling sandbox's tick object. In multi-tenant / concurrent sandbox scenarios, another sandbox can overwrite `currentTicks.current` between scheduling and execution, causing the timer callback to run under a different sandbox's tick budget and bypass the original sandbox's execution quota/watchdog. Version 0.8.35 fixes this issue.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Nyariv Sandboxjs
cpe:2.3:a:nyariv:sandboxjs:*:*:*:*:*:node.js:*:*
|
— |
0.8.35
|