Autenticação comprometida e desserialização insegura
Explore como o gerenciamento fraco de sessões, o uso de credenciais vazadas e as vulnerabilidades de desserialização insegura permitem que invasores sequestrem contas e executem código.
Autenticação comprometida e desserialização insegura é uma aula grátis de Security+ Academy no CoddyKit. Esta é a aula 3 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 Security+ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Security+ Academy inclui 4 aulas no total.
O que é autenticação comprometida?
Autenticação comprometida refere-se a fraquezas na forma como uma aplicação verifica a identidade dos usuários e gerencia sessões. Quando a autenticação está comprometida, os atacantes podem comprometer Passwords, chaves ou tokens de sessão para assumir a identidade de outros usuários. Essa categoria do Top 10 da OWASP abrange uma ampla variedade de falhas: credenciais fracas, gerenciamento inadequado de sessões, MFA ausente e armazenamento inseguro de credenciais.
Preenchimento de credenciais e pulverização de Passwords
O preenchimento de credenciais usa grandes listas de pares de nome de usuário e Password obtidos em violações de dados anteriores e tenta utilizá-los em outros sites, explorando a reutilização de Passwords. A pulverização de Passwords adota a abordagem oposta: tenta um pequeno conjunto de Passwords comuns (por exemplo, Password1!) em muitas contas para evitar os limites de bloqueio de contas. Ambos os ataques têm êxito devido a políticas de Passwords fracas e à ausência de MFA.
# Password spraying concept (defensive awareness)
# Attacker tries 'Password1!' against 10,000 accounts
# rather than trying 10,000 passwords against 1 account
# This avoids triggering lockout policies (e.g., 5 attempts/account)
# Defense: MFA + adaptive authentication + rate limitingGerenciamento fraco de sessões
As sessões conectam usuários autenticados ao estado da aplicação. As falhas de gerenciamento fraco de sessões incluem: valores previsíveis de tokens de sessão (IDs sequenciais que os atacantes podem adivinhar), tokens que nunca expiram, tokens transmitidos por HTTP em vez de HTTPS e falha ao invalidar tokens durante o Logout. Um atacante que obtém um token de sessão válido pode se passar pelo usuário sem conhecer sua Password.
# Signs of weak session management:
# /login response sets:
# Set-Cookie: session=1042 (predictable, sequential)
# Missing: Secure; HttpOnly; SameSite flags
# Missing: session expiry / Max-Age
# Logout does NOT invalidate server-side sessionFixação e sequestro de sessões
A fixação de sessão força a vítima a usar um ID de sessão escolhido pelo atacante. Por exemplo, um atacante envia um link com um cookie de sessão previamente definido; depois que a vítima se autentica, o atacante usa o mesmo ID de sessão para acessar a conta. O sequestro de sessão rouba um token de sessão existente por meio de XSS, interceptação de rede (em conexões não criptografadas) ou cookies roubados. A solução é regenerar os IDs de sessão após o login e usar HTTPS em todos os lugares.
Armazenamento inseguro de Passwords
Armazenar Passwords em texto simples ou com Hash fraco (MD5, SHA-1) é uma falha crítica de autenticação. Quando um banco de dados é violado, Passwords em texto simples e Hashes fracos podem ser usados imediatamente. O armazenamento Seguro de Passwords exige um algoritmo de Hash adaptativo desenvolvido para Passwords: bcrypt, Argon2 ou PBKDF2 com um salt aleatório específico para cada usuário. Esses algoritmos são intencionalmente lentos, tornando a quebra offline computacionalmente dispendiosa.
# Python example — secure password hashing with bcrypt
import bcrypt
# Hash a password (includes random salt automatically)
password = b'UserSuperSecret123'
hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))
# Verify
bcrypt.checkpw(password, hashed) # returns TrueO que é desserialização insegura?
A serialização converte o estado de um objeto em um formato (JSON, XML, binário) para armazenamento ou transmissão. A desserialização reconstrói o objeto a partir desse formato. A desserialização insegura ocorre quando uma aplicação desserializa dados controlados pelo atacante sem validação, permitindo que os atacantes modifiquem objetos serializados para manipular a lógica da aplicação, elevar privilégios ou executar código arbitrário no Server.
Exemplo de ataque de desserialização
Um padrão de ataque comum envolve objetos serializados passados em cookies ou parâmetros de API. Por exemplo, uma aplicação Java que usa ObjectInputStream.readObject() em dados não confiáveis pode desencadear Remote Code Execution (RCE) por meio de cadeias de gadgets em bibliotecas populares (Apache Commons Collections). O atacante cria uma carga serializada Malicious, envia-a à aplicação e o código é executado durante a desserialização, muitas vezes antes que qualquer verificação de autenticação seja realizada.
# Insecure deserializing pattern (Python pickle — dangerous)
import pickle
# Attacker-controlled payload
class Exploit:
def __reduce__(self):
import os
return (os.system, ('id',)) # executes 'id' on server
payload = pickle.dumps(Exploit())
pickle.loads(payload) # RCE! Never deserialize untrusted data with picklePrevenção da desserialização insegura
As defesas contra a desserialização insegura incluem: nunca desserializar dados não confiáveis com formatos perigosos, como a serialização nativa de Java ou o pickle do Python. Prefira formatos que contenham apenas dados (JSON, XML) à serialização binária. Se a desserialização for necessária, implemente verificações de integridade (assinando o objeto serializado com HMAC), use listas de permissões para restringir quais classes podem ser desserializadas e execute o código de desserialização em ambientes isolados e com poucos privilégios.
# Safe approach: sign serialized data before transmitting
import hmac, hashlib, json
def serialize_safe(data, secret):
payload = json.dumps(data) # use JSON, not pickle
sig = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
return payload + '.' + sigAutenticação multifator como controle
A Multi-Factor Authentication (MFA) é o controle individual de maior impacto contra a autenticação comprometida. Mesmo que as credenciais sejam comprometidas por phishing, preenchimento de credenciais ou uma violação de banco de dados, um atacante sem o segundo fator não poderá se autenticar. A Microsoft informa que o MFA bloqueia mais de 99,9% dos ataques automatizados de comprometimento de contas. O MFA deve ser obrigatório para contas privilegiadas e incentivado para todos os usuários.
Account Lockout e limitação de taxa
As políticas de bloqueio de conta desativam temporariamente uma conta após um número definido de tentativas de login malsucedidas, retardando ataques de força bruta. No entanto, os bloqueios podem permitir a negação de serviço contra usuários legítimos — os invasores acionam os bloqueios intencionalmente para impedir o acesso. A limitação de taxa (redução da velocidade das respostas após falhas repetidas usando recuo exponencial) e os desafios de CAPTCHA reduzem o risco de força bruta e de DoS.
Autenticação comprometida no OWASP Top 10
A OWASP lista a autenticação comprometida como um risco crítico, pois as falhas de autenticação são comuns e têm grande impacto. Os principais indicadores de autenticação comprometida incluem: permitir ataques automatizados, como preenchimento de credenciais; permitir ataques de força bruta ou outros ataques automatizados; permitir senhas padrão, fracas ou amplamente conhecidas; usar processos fracos de recuperação de credenciais; usar senhas em texto simples ou com hash fraco; e não implementar autenticação multifator, ou implementá-la de forma ineficaz.
Verificação rápida
Teste sua compreensão dos conceitos de CompTIA Security+ (SY0-701) desta lição.
Recapitulação da lição
Nesta lição, você aprendeu que: a autenticação comprometida inclui sessões fracas, preenchimento de credenciais e armazenamento inseguro de senhas; a desserialização insegura pode levar à execução remota de código por meio de objetos serializados maliciosos; e MFA, hash de senhas com bcrypt, regeneração da sessão após o login e dados serializados assinados são defesas essenciais. A seguir, exploraremos o SDLC seguro, as ferramentas SAST e DAST.
Perguntas Frequentes
A aula “Autenticação comprometida e desserialização insegura” é grátis?
Sim — o texto completo de “Autenticação comprometida e desserialização insegura” é 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 Security+ Academy, atualize para CoddyKit PRO. O curso de Security+ Academy inclui 4 aulas no total.
O que vou aprender em “Autenticação comprometida e desserialização insegura”?
Explore como o gerenciamento fraco de sessões, o uso de credenciais vazadas e as vulnerabilidades de desserialização insegura permitem que invasores sequestrem contas e executem código. Você pratica 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 Security+ Academy?
Nenhuma experiência prévia é necessária. 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 3 de 4.
Quanto tempo leva a aula “Autenticação comprometida e desserialização insegura”?
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 Security+ Academy?
Sim. Cada aula de 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
- Injeção de SQL e injeção de comandos
- Cross-site scripting (XSS) e CSRF
- Autenticação comprometida e desserialização insegura
- SDLC seguro e ferramentas SAST e DAST