Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-21717 — Prova de conceito para CVE-2026-21717, uma vulnerabilidade de colisão de hash de strings no V8 do Node.js que causa negação de serviço por meio de payloads JSON elaborados. | Kitploit
Ferramentas/GitHubGitHub/open-flaw/cve-2026-21717
Análise de VulnerabilidadesExploraçãoAprendizado e Educação
GitHubopen-flaw/cve-2026-21717

CVE-2026-21717

Prova de conceito para CVE-2026-21717, uma vulnerabilidade de colisão de hash de strings no V8 do Node.js que causa negação de serviço por meio de payloads JSON elaborados.

Ver Repositório
1há 5 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-21717

Vulnerabilidade de Colisão Previsível no Hash de Strings do V8 do Node.js que Leva a Negação de Serviço

Visão Geral

Uma vulnerabilidade crítica no mecanismo de hash de strings do V8 permite que atacantes causem degradação severa de desempenho em aplicações Node.js. Strings semelhantes a inteiros são transformadas em hash para seu valor numérico, tornando colisões de hash trivialmente previsíveis. Ao criar entrada maliciosa que causa muitas colisões na tabela interna de strings do V8, um atacante pode degradar significativamente o desempenho ou causar uma negação de serviço.

Detalhes da Vulnerabilidade

  • ID CVE: CVE-2026-21717
  • Severidade: Alta
  • Vetor de Ataque: Rede
  • Complexidade do Ataque: Baixa
  • Impacto: Negação de Serviço (DoS)

Descrição Técnica

A vulnerabilidade decorre do processo de internalização de strings do V8. Quando ocorre o parsing de JSON, strings curtas são automaticamente internalizadas em uma tabela de hash. Strings semelhantes a inteiros colidem de forma previsível porque são transformadas em hash para seus valores numéricos, permitindo que atacantes forcem cadeias de sondagem quadrática que degradam severamente o desempenho.

Componentes Afetados

O gatilho mais comum é qualquer endpoint que chame em entrada controlada pelo atacante, pois o parsing de JSON internaliza automaticamente strings curtas na tabela de hash afetada.

JSON.parse()

Prova de Conceito

Este repositório contém uma prova de conceito demonstrando a vulnerabilidade:

Pré-requisitos

root@kitploit:~
# Use a versão do Node.js afetada pela CVE-2026-21717
nvm use
npm install

Executando o PoC

root@kitploit:~
node poc.js

Comportamento Esperado

O PoC cria um payload com:

  • Uma cadeia de sondagem quadrática de ~130 mil strings
  • Valores alvo repetidos forçando buscas através da cadeia
  • Resulta em ~44+ segundos de tempo de CPU para uma única operação JSON.parse()

Fluxo do Ataque

  1. Atacante cria um payload JSON adversário contendo strings semelhantes a inteiros projetadas para colidir
  2. Cliente envia o JSON malicioso ao servidor
  3. Servidor chama JSON.parse() na entrada não confiável
  4. Mecanismo V8 internaliza strings na tabela de hash, acionando colisões
  5. Resultado Consumo extremo de CPU e degradação de desempenho

Mitigação

Ações Recomendadas

  1. Atualize o Node.js para uma versão corrigida que resolva esta vulnerabilidade
  2. Validação de Entrada: Limite o tamanho e a complexidade dos payloads JSON
  3. Limitação de Taxa: Implemente limitação de taxa em endpoints que aceitam entrada JSON
  4. Tempos Limite: Defina tempos limite razoáveis para operações de parsing JSON
  5. Monitoramento de Recursos: Monitore o uso de CPU para picos anormais

Mitigações em Nível de Código

root@kitploit:~
// Limite o tamanho do payload
app.use(express.json({ limit: '100kb' }));

// Adicione tempo limite para o parsing
const parseWithTimeout = (str, timeout = 1000) => {
  return Promise.race([
    Promise.resolve(JSON.parse(str)),
    new Promise((_, reject) => 
      setTimeout(() => reject(new Error('Parse timeout')), timeout)
    )
  ]);
};

Referências

  • Detalhes do CVE
  • Blog de Segurança do Node.js

Aviso Legal

Este repositório é apenas para fins educacionais e de pesquisa. Não use este código para fins maliciosos ou contra sistemas que você não possui ou para os quais não tem permissão explícita para testar.

Baixar ferramenta