Limites de Expansão de Entidade Ignorados Quando Definidos como Zero Devido à Avaliação Falsy do JavaScript no fast-xml-parser
Plataforma
nodejs
Componente
fast-xml-parser
Corrigido em
5.5.7
## Sumário O `DocTypeReader` no fast-xml-parser usa verificações truthy do JavaScript para avaliar os limites de configuração `maxEntityCount` e `maxEntitySize`. Quando um desenvolvedor define explicitamente qualquer um dos limites para `0` — com a intenção de proibir todas as entidades ou restringir o tamanho da entidade a zero bytes — a natureza falsy de `0` no JavaScript faz com que as condições de proteção entrem em curto-circuito, ignorando completamente os limites. Um invasor que pode fornecer entrada XML para tal aplicação pode acionar a expansão ilimitada de entidades, levando ao esgotamento da memória e à negação de serviço (Denial of Service). ## Detalhes O `OptionsBuilder.js` preserva corretamente um valor de `0` fornecido pelo usuário usando o operador de coalescência nula (`??`): ```js // src/xmlparser/OptionsBuilder.js:111 maxEntityCount: value.maxEntityCount ?? 100, // src/xmlparser/OptionsBuilder.js:107 maxEntitySize: value.maxEntitySize ?? 10000, ``` No entanto, `DocTypeReader.js` usa a avaliação truthy para verificar esses limites. Como `0` é falsy no JavaScript, a expressão de proteção inteira entra em curto-circuito para `false`, e o limite nunca é aplicado: ```js // src/xmlparser/DocTypeReader.js:30-32 if (this.options.enabled !== false && this.options.maxEntityCount && // ← 0 é falsy, ignora
Como corrigir
Nenhum patch oficial disponível. Procure alternativas ou monitore atualizações.
Monitore suas dependências automaticamente
Receba alertas quando novas vulnerabilidades afetarem seus projetos.
Começar grátis