JWT — Vulnerabilidades em JSON Web Tokens
JWTs mal implementados permitem falsificação de tokens sem a chave secreta. Veja algorithm confusion (RS256→HS256), none algorithm e weak secrets com exemplos.
O Que É JWT
JSON Web Tokens (JWT) são amplamente usados para autenticação em APIs REST, mas implementações incorretas criam vulnerabilidades críticas. As principais: (1) None Algorithm — aceitar alg:none sem assinatura; (2) Algorithm Confusion — forçar mudança de RS256 para HS256 usando a chave pública como secret; (3) Weak Secret — força bruta com wordlists; (4) kid Injection — parâmetro kid usado em query SQL sem sanitização.
Exemplo Real de Ataque
# None Algorithm Attack
# Header original: {"alg":"HS256","typ":"JWT"}
# Payload: {"sub":"user123","role":"user"}
# Forjado: {"alg":"none","typ":"JWT"}
# Payload: {"sub":"admin","role":"administrator"}
# Token: eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJhZG1pbiIsInJvbGUiOiJhZG1pbmlzdHJhdG9yIn0.
GET /api/v1/admin/users
Authorization: Bearer eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZG1pbiJ9.
HTTP/1.1 200 OK ← Servidor aceita token sem assinatura!Impacto no Negócio e Compliance
Impersonação de qualquer usuário (incluindo admins) sem credenciais. Em SaaS B2B, equivale a acesso irrestrito a todos os tenants. Para fintechs: acesso a contas bancárias, transferências, dados de cartão. Um JWT comprometido invalida toda a camada de autenticação da aplicação.
Como Remediar
// ❌ INSEGURO — aceita qualquer algoritmo do header
jwt.verify(token, secret);
// ✅ SEGURO — fixe o algoritmo explicitamente
jwt.verify(token, secret, { algorithms: ['HS256'] });
// ✅ RS256: use chave privada para assinar, NUNCA exponha
const token = jwt.sign(payload, privateKey, { algorithm: 'RS256' });
// Verifique com chave pública, algorithm fixado
jwt.verify(token, publicKey, { algorithms: ['RS256'] });
// ✅ Rejeite explicitamente 'none'
if (header.alg === 'none') throw new Error('Algorithm none não permitido');Como a Veyronn Detecta Esta Vulnerabilidade
Testamos todos os vetores de JWT: algorithm confusion, none algorithm, weak secrets via wordlists customizadas, kid injection SQL/directory traversal, e JWK confusion. Validamos server-side de forma sistemática.
Vulnerabilidades Relacionadas
Pronto para Contratar seu Próximo Pentest?
Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.
