PT-2026-30273 · Sandboxjs+1 · Sandboxjs+1
CVSS v3.1
7.5
Alta
| Vetor | AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
Name of the Vulnerable Software and Affected Versions
SandboxJS versões anteriores a 0.8.36
Description
O parser
@nyariv/sandboxjs contém recursão ilimitada nas funções restOfExp e na cadeia de chamadas lispify/lispifyExpr. Um invasor pode derrubar qualquer processo Node.js que analise entradas não confiáveis fornecendo expressões profundamente aninhadas (por exemplo, ~2000 parênteses aninhados), causando um RangeError: Maximum call stack size exceeded que termina o processo. A causa raiz está em src/parser.ts, especificamente na função restOfExp (linha 443) e nas funções lispify e lispifyExpr. A vulnerabilidade é acionada pela falta de um limite de profundidade nas chamadas recursivas. Todos os métodos de API públicos (Sandbox.parse(), Sandbox.compile(), Sandbox.compileAsync(), Sandbox.compileExpression(), Sandbox.compileExpressionAsync()) são afetados, pois passam a entrada do usuário diretamente para parse() sem validação de entrada ou limitação de profundidade. Um RangeError: Maximum call stack size exceeded no Node.js trava o contexto de execução atual e pode derrubar todo o processo em aplicativos de servidor síncronos. A vulnerabilidade permite a negação de serviço derrubando o processo Node.js host com uma única string de entrada criada.Recommendations
Adicione um parâmetro
depth a restOfExp e lance um ParseError quando uma profundidade máxima for excedida. Da mesma forma, adicione o rastreamento de profundidade a lispify e lispifyExpr.Correção
Uncontrolled Recursion
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Node.Js
Sandboxjs