Ataques a tokens e reforço de segurança
Defenda fluxos de autenticação contra abusos.
Ataques a tokens e reforço de segurança é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.
Tokens como credenciais
Na autenticação moderna, tokens são credenciais. Quem possui um token de portador válido é tratado como a parte autenticada até que ele expire ou seja revogado.
- Isso faz com que o roubo de tokens equivalha ao roubo de credenciais.
- O fortalecimento concentra-se em limitar o tempo de vida dos tokens, vinculá-los a um portador e permitir uma revogação rápida.
Esta lição aborda ataques contra tokens de OAuth/OIDC/SAML e os controles de defesa que os neutralizam.
Confusão de algoritmo do JWT
Um ataque clássico contra JWT explora o cabeçalho alg.
- alg: none, se aceito, permite que um atacante falsifique tokens sem assinatura.
- Confusão entre RS256 e HS256: o atacante assina novamente um token usando a chave pública RSA como segredo HMAC.
Defesa: fixe o algoritmo esperado no servidor e nunca permita que o token determine qual caminho de verificação será executado.
Vulnerable: verify(token, key) // alg taken from header
Hardened: verify(token, key, { algorithms: ["RS256"] })
// reject alg:none, reject HS* when RS* expectedRoubo de tokens por XSS e registros
A forma mais comum de comprometer um token é simplesmente roubá-lo.
- XSS lê tokens de
localStorageou da memória. - Tokens em URLs vazam pelo histórico do navegador, pelos cabeçalhos de referência e pelos registros do servidor.
- Registro detalhado dos cabeçalhos
Authorization.
Prefira cookies httpOnly, Secure e SameSite para sessões do navegador e remova tokens dos registros e das URLs.
Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax
// keeps JS (and thus XSS) from reading the tokenAtaques de repetição
Um ataque de repetição reutiliza um token válido capturado para agir como a vítima.
- Pode ser mitigado por expirações curtas,
noncede uso único (OIDC) e rastreamento do ID da asserção (SAML). - TLS impede a captura passiva na rede.
- Tokens vinculados ao remetente impedem a reutilização mesmo quando são roubados.
Replay defenses:
short exp + nonce/jti uniqueness
TLS everywhere
sender-constrained tokens (mTLS / DPoP)Tokens vinculados ao remetente
Tokens de portador podem ser usados por qualquer pessoa que os possua. Tokens vinculados ao remetente associam um token à chave de um cliente específico.
- Tokens vinculados a mTLS (RFC 8705) associam o token ao certificado TLS do cliente.
- DPoP (RFC 9449) associa o token a uma chave de prova de posse que o cliente usa para assinar cada solicitação.
Assim, um token roubado é inútil sem a chave privada correspondente.
DPoP: each request carries a signed proof JWT
DPoP: <proof-jwt signed with client private key>
Authorization: DPoP <access_token>Tempos de vida curtos e rotação de tokens de atualização
Limite o período em que qualquer token roubado pode ser útil.
- Mantenha os tokens de acesso com curta duração (minutos).
- Use a rotação de tokens de atualização: cada atualização emite um novo token de atualização e invalida o anterior.
- Detecte a reutilização de um token de atualização rotacionado como sinal de roubo e revogue toda a cadeia.
On /token refresh:
issue new RT, invalidate old RT
if old RT presented again -> breach -> revoke familyRevogação e introspecção de tokens
JWTs autocontidos são válidos até expirarem, o que dificulta a revogação. Disponibilize mecanismos para interromper rapidamente o acesso.
- O ponto de revogação (RFC 7009) invalida tokens de atualização e de acesso.
- A introspecção (RFC 7662) permite que um servidor de recursos verifique o status de um token em tempo real.
- Mantenha uma lista de bloqueio por
jtipara revogações críticas.
POST /introspect token=...
-> { "active": true, "sub": "...", "scope": "read" }
POST /revoke token=...Aplicação de público-alvo e escopo
Um token válido não é automaticamente autorizado para sua API. Garanta a finalidade correta.
- Verifique aud para que um token emitido para outro serviço não possa ser repetido contra o seu.
- Aplique o escopo por ponto de acesso; não presuma que um token válido implique acesso total.
- Valide iss para bloquear tokens de emissores não confiáveis.
Isso impede a reutilização de tokens entre serviços e o abuso do agente confuso.
Ataques de confusão e entre provedores
Quando um cliente é compatível com vários provedores de identidade, ataques de confusão podem induzi-lo a enviar um código ou token emitido por um provedor de identidade para um ponto de acesso diferente, escolhido pelo atacante.
- O cliente perde o controle de qual AS originou uma resposta.
- Defesa: vincule as respostas ao emissor usando o parâmetro
iss(RFC 9207) e validestatepor provedor.
/authorize ... &state=<provider-bound>
callback must include &iss=<expected-AS>
client verifies iss matches the AS it started withArmazenamento e transporte seguros
O local e a forma como os tokens são armazenados determinam sua exposição.
- Sessões do navegador: cookies httpOnly, Secure e SameSite; evite
localStorage. - Dispositivos móveis: chaveiro/armazenamento de chaves do OS; nunca use arquivos em texto simples.
- Servidores: gerenciador de segredos, criptografia em repouso e privilégio mínimo com escopo limitado.
- Sempre use TLS em trânsito; nunca incorpore tokens em cadeias de consulta.
Lista de verificação para fortalecer tokens
Reúna os controles em uma linha de base operacional.
- Fixe os algoritmos; rejeite
alg: nonee ataques de confusão. - Valide iss, aud, exp, assinatura, nonce/estado.
- Use TTL curto para tokens de acesso, além de rotação de tokens de atualização com detecção de reutilização.
- Prefira tokens vinculados ao remetente (DPoP/mTLS) para APIs de alto valor.
- Ofereça revogação e introspecção.
- Armazene com segurança; mantenha os tokens fora das URLs e dos registros.
Hardening baseline:
[ ] alg pinned, none rejected
[ ] iss/aud/exp/sig/nonce validated
[ ] short TTL + RT rotation + reuse detection
[ ] DPoP/mTLS for sensitive scopes
[ ] revoke + introspect availableVerificação rápida: neutralizando tokens roubados
Escolha o controle que melhor limita os danos causados pelo próprio roubo de tokens.
Recapitulação: ataques contra tokens e fortalecimento
Principais conclusões:
- Tokens são credenciais; o roubo equivale à tomada de controle da conta.
- Proteja JWTs fixando os algoritmos e validando iss, aud, exp, assinatura, nonce.
- Limite a exposição com tempos de vida curtos e rotação de tokens de atualização com detecção de reutilização.
- Tokens vinculados ao remetente (DPoP/mTLS) neutralizam tokens de portador roubados.
- Ofereça revogação e introspecção e mantenha os tokens fora das URLs, dos registros e do localStorage.
Perguntas Frequentes
A aula “Ataques a tokens e reforço de segurança” é grátis?
Sim — o texto completo de “Ataques a tokens e reforço de segurança” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.
O que vou aprender em “Ataques a tokens e reforço de segurança”?
Defenda fluxos de autenticação contra abusos. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cyber Security Academy?
Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Ataques a tokens e reforço de segurança”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cyber Security Academy?
Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fluxos do OAuth 2.0
- OpenID Connect (OIDC)
- SAML e federação
- Ataques a tokens e reforço de segurança