PT-2026-22841 · Unknown+1 · Underscore.Js+1
CVSS v4.0
8.2
Alta
| Vetor | AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Nome do Software Vulnerável e Versões Afetadas
Underscore.js versões anteriores a 1.13.8
Descrição
As funções
.flatten e .isEqual utilizam recursão sem um limite de profundidade, o que pode levar a um estouro de pilha (stack overflow) e a uma Negação de Serviço (DoS). Isso ocorre quando entradas não confiáveis são usadas para criar uma estrutura de dados recursiva (por exemplo, via JSON.parse) sem um limite de profundidade imposto, e essa estrutura é então passada para as funções afetadas. No caso de .flatten, o problema pode ser explorado se a estrutura de dados consistir em arrays em todos os níveis e nenhum limite de profundidade finito for passado como segundo argumento. No caso de .isEqual, o problema pode ser explorado se duas estruturas de dados distintas enviadas pelo mesmo cliente remoto forem comparadas. As exceções de estouro de pilha resultantes dessas chamadas não são capturadas, podendo causar a interrupção do aplicativo.Recomendações
Atualize o Underscore.js para a versão 1.13.8 ou posterior.
Imponha um limite de profundidade (por exemplo, entre 100 e 1000 níveis) nas estruturas de dados criadas a partir de entradas não confiáveis.
Como solução temporária para
.flatten, passe um segundo argumento que limite a profundidade do achatamento a 1000 ou menos.Exploit
Correção
DoS
Uncontrolled Recursion
Allocation of Resources Without Limits
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
Confluence
Underscore.Js