Skip to content

Segurança: atualiza fast-xml-parser de 4.5.3 para 5.9.3#25

Open
jcmelati wants to merge 1 commit into
lucashpmelo:mainfrom
deliveryalliance:chore/fxp-v5-upstream
Open

Segurança: atualiza fast-xml-parser de 4.5.3 para 5.9.3#25
jcmelati wants to merge 1 commit into
lucashpmelo:mainfrom
deliveryalliance:chore/fxp-v5-upstream

Conversation

@jcmelati

Copy link
Copy Markdown

Contexto

O fast-xml-parser@4.5.3 é vulnerável a três falhas críticas de expansão de entidades em DOCTYPE, ainda em aberto no npm audit:

Advisory Resumo Corrigido na
GHSA-jmr7-xgp7-cmfj DoS por expansão de entidade em DOCTYPE (sem limite) 5.3.6
GHSA-m7jm-9gc2-mpf2 Bypass de codificação via injeção de regex em nomes de entidade 5.3.5
GHSA-8gc5-j5rx-235r Expansão de entidade numérica ignora os limites (correção incompleta de CVE-2026-26278) 5.5.6

A correção da série 4.x não cobre estas falhas, então o caminho é a v5.

Mudança

  • package.json: fast-xml-parser 4.5.35.9.3 (e versão 0.14.130.14.14).
  • src/util/xml.js: inalterado. A v5.0.0 foi um release de empacotamento (ESM/CJS dual) sem mudança de API; as correções dos CVEs são endurecimento padrão (limites de expansão de entidade + validação de DOCTYPE). A biblioteca não define nenhuma opção de entidade, então herda os padrões seguros automaticamente. O require('fast-xml-parser') continua retornando { XMLBuilder, XMLParser } no build CJS.

Por que é seguro (comportamento idêntico)

Rodei um teste de paridade lado a lado (4.5.3 vs 5.9.3) com exatamente as opções do XMLParser desta lib (parseTagValue:false, parseAttributeValue:false, textNodeName:'value', attributeNamePrefix:'@_', etc.). A saída foi byte-a-byte idêntica em todos os casos:

  • && e demais entidades predefinidas decodificam igual;
  • caracteres acentuados UTF-8 literais passam intactos;
  • NSU com zeros à esquerda (000000000000001) permanece string (sem numericização).

Testes

Adicionei test/helpers.test.js — testes golden orientados a fixtures que exercitam os helpers sensíveis a versão (DistribuicaoHelper.montarResponse e RecepcaoHelper.montarResponse), e não apenas Xml.xmlToJson:

  • cStat 138 com um e com dois docZip (coerção single→array e o caminho de array), com docZip realmente compactado em gzip para exercitar Gzip.unzip + o parse interno;
  • cStat 137 (nada novo) → docZip vazio;
  • RecepcaoEvento cStat 135 (registrado) e 573 (duplicidade), incluindo o caminho de múltiplos retEvento;
  • sentinela <error> de transporte.

npm run build permanece reproduzível e os testes de parser (test/xml.test.js) seguem verdes.


🤖 Generated with Claude Code

Corrige as falhas criticas de expansao de entidades em DOCTYPE presentes
no fast-xml-parser 4.5.3 (GHSA-jmr7-xgp7-cmfj, GHSA-m7jm-9gc2-mpf2 e
GHSA-8gc5-j5rx-235r). A correcao vem do endurecimento padrao da v5; a
biblioteca nao define nenhuma opcao de entidade, entao herda os padroes
seguros sem mudanca de comportamento.

- package.json: fast-xml-parser 4.5.3 -> 5.9.3, versao 0.14.13 -> 0.14.14
- src/util/xml.js: inalterado — todas as opcoes de XMLParser/XMLBuilder
  mantem o mesmo padrao na v5 (saida verificada byte-a-byte identica
  entre 4.5.3 e 5.9.3)
- test/helpers.test.js: testes golden, orientados a fixtures, para os
  helpers montarResponse sensiveis a versao (cStat 138 unico/array, 137,
  RecepcaoEvento 135/573) com docZip realmente compactado em gzip

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant