PT-2026-83506 · Npm · Qs
CVSS v4.0
6.3
Média
| Vetor | AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/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
qs versões 6.14.2 through 6.15.3
Description
Quando a função
qs.parse é utilizada com as opções comma e throwOnLimitExceeded definidas como true, um valor separado por vírgulas atribuído a uma chave de empilhamento de colchetes (ex: a[]=1,2,3,4) é dividido em um array sem ser validado em relação ao arrayLimit. Em contraste, o mesmo valor atribuído a chaves planas, indexadas, aninhadas ou pontuadas dispara corretamente um RangeError. Isso ocorre porque a verificação do arrayLimit em lib/parse.js era aplicada após o valor ser envolvido como um elemento aninhado, e uma tentativa subsequente de corrigir isso usando uma flag isFlatArrayValue não considerou a forma de chave []=. Um invasor não autenticado pode explorar isso fornecendo um único parâmetro a[]= para ignorar os limites configurados e forçar o parser a alocar um array proporcional ao tamanho da requisição, podendo levar ao consumo excessivo de memória.Recommendations
Atualize o qs para a versão 6.16.0.
Como medida paliativa temporária, evite usar a forma de chave
[]= em strings de consulta quando comma e throwOnLimitExceeded estiverem habilitados.Exploit
Correção
Allocation of Resources Without Limits
RCE
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
Qs