Spoofing de DNS e envenenamento de cache: como funcionam e o que os impede

O spoofing de DNS não exige interceção de tráfego real. Exige adivinhar corretamente e chegar primeiro — a cache de um resolvedor aceita a resposta que chegar antes da genuína.

O que é o spoofing de DNS

O spoofing de DNS falsifica uma resposta DNS para que um resolvedor coloque em cache e sirva um endereço IP escolhido pelo atacante em vez do real. Uma vez em cache, uma resposta falsificada é recebida por todos os clientes que usam esse resolvedor até a TTL expirar — sem necessidade de mais ações por parte do atacante.

O problema de estar fora do caminho

Um atacante que não está no caminho de rede entre o resolvedor e o verdadeiro servidor autoritativo não pode simplesmente ler ou editar o tráfego genuíno. Em vez disso, a resposta falsificada tem de ser adivinhada e entregue antes de a resposta autoritativa real chegar — uma corrida, não uma interceção.

O que tem de ser adivinhado

Um resolvedor identifica uma resposta válida por um ID de transação de 16 bits e a porta de origem UDP de onde a consulta foi enviada. O ataque Kaminsky de 2008 mostrou como transformar um único palpite de baixa probabilidade num ataque prático: enganar um resolvedor para procurar muitos subdomínios diferentes e inexistentes do mesmo domínio dá a um atacante muitas corridas independentes para ganhar o mesmo espaço de cache, já que qualquer falsificação bem-sucedida envenena os registos do domínio pai.

O impacto de um envenenamento bem-sucedido

Uma vez envenenado, o resolvedor redireciona silenciosamente todos os clientes que o consultam — para um site de phishing, um ponto de injeção de anúncios, o que quer que o atacante tenha escolhido — sem tocar em nenhum dos sistemas das vítimas, durante todo o tempo em que durar a TTL do registo falsificado.

Por que o DNSSEC impede isto

Um resolvedor que valida verifica uma cadeia de assinaturas criptográficas até uma raiz de confiança antes de aceitar uma resposta. Um atacante que ganhe a corrida de adivinhação continua sem ter a chave privada de assinatura da zona, pelo que a resposta falsificada não pode produzir uma assinatura válida — adivinhar corretamente o ID de transação e a porta deixa de ter importância assim que é a própria validação a verificar a autenticidade.

Verifique o DNSSEC de um domínio