Sequestro de DNS

De juliano.info

Sempre tive o costume de usar os meus próprios servidores DNS recursivos, por várias razões: maior confiança (sou eu que administro), maior disponibilidade (o provedor já apresentou inúmeros problemas com seus servidores DNS) e também porque eu hospedo um domínio de uso pessoal para a minha rede local.

Em casa, utilizamos uma conexão de banda larga fornecida pelo provedor Speedy da Telefônica. A rede é compartilhada por um roteador caseiro, os outros computadores da casa utilizam as configurações do próprio roteador para navegação, ou seja, o DNS é direcionado para o roteador, que por sua vez redireciona para o provedor.

No começo desse ano (2008), por uma razão qualquer eu estava acessando a Internet pelo computador de minha mãe, quando digitei um endereço errado e para minha grande surpresa fui redirecionado para uma página do provedor.

Página apresentada para um endereço de domínio inexistente.

No exato momento tive a sensação de presenciar algo moralmente errado e altamente danoso. Para o usuário comum, pode parecer muito prestativo da parte do provedor fornecer sugestões de busca quando o objeto procurado não é encontrado... só que não é. Esse "serviço" deforma o funcionamento da Internet de uma forma que beira a um crime.

Tabela de conteúdo

A história do Site Finder se repete

Em 2003, a VeriSign, que possui um extenso controle sobre a raiz do sistema de nomes de domínio, implementou o polêmico Site Finder, que possuía um funcionamento parecido, e propósitos muito semelhantes. Basicamente, a VeriSign redirecionava para si mesma requisições para domínios inexistentes sob os TLDs .com e .net, aonde o visitante era apresentado aos produtos e serviços da VeriSign e seus parceiros. O sistema gerou uma avalanche de controvérsias ([1], [2]), e não durou três semanas no ar: após uma dura repressão da ICANN o serviço foi desativado ([3]).

Apesar de toda a controvérsia, alguns provedores gostaram dessa estúpida idéia e resolveram adotar: Earthlink, Charter, RoadRunner/TimeWarner, Rogers Cable e Cablevision. Fabricantes também não ficaram de fora: Microsoft e D-Link também queriam fazer dinheiro com erros de digitação dos usuários de Internet.

A Telefônica trouxe para o Brasil essa "brilhante" inovação. Logo que a Telefônica implantou esse sistema, algumas pessoas notaram, mas aparentemente ninguém deu a importância devida, provavelmente por não entender suas implicações. Ontem, meu colega Marcelo reportou que a Oi/Velox agora também está alterando e redirecionando as consultas DNS.

Como o serviço funciona

Resumidamente, o sistema de nomes de domínio (DNS, ou Domain Name System) é um catálogo hierárquico de nomes e endereços IP. A cada nome de domínio, o sistema associa um conjunto de endereços IP para o qual um agente de usuário (navegador, leitor de e-mails, mensageiro instantâneo...) deve chamar para estabelecer uma conexão. O DNS também possui outras capacidades e funções, que não são relevantes neste momento.

Quando um agente de usuário faz uma requisição por um nome de domínio que não existe, o servidor DNS recursivo deve responder com uma mensagem de domínio inexistente (NXDOMAIN, non-existent domain), e o agente, por sua vez, informa ao usuário que o domínio não existe. Esta é uma requisição típica para um domínio inexistente (aqui estou usando asdf.juliano.info):

~% dig asdf.juliano.info.

; <<>> DiG 9.5.0-P2 <<>> asdf.juliano.info.
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 55464
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;asdf.juliano.info.             IN      A

;; AUTHORITY SECTION:
juliano.info.           10800   IN      SOA     ns1.linode.com. admin.juliano.info.
                                                2008081605 7200 3600 1209600 86400

A resposta fornecida pelo servidor DNS recursivo, como mostrada acima, fornece diversas informações importantes ao agente. Primeiro, a resposta NXDOMAIN diz claramente que o nome de domínio solicitado não existe. Essa é a informação mais importante, que é o que o agente precisa para informar ao usuário que o endereço digitado está incorreto. Em seguida, a resposta indica exatamente qual foi o domínio de nível superior que tem a autoridade sobre a informação de que o nome não existe. Nesse caso, a informação de que asdf.juliano.info não existe foi fornecida com autoridade pelo domínio juliano.info (seguido de diversas outras informações sobre o mesmo, como servidor mestre, contato de administrador, número serial, etc).

A consulta para o mesmo nome de domínio inexistente através do DNS recursivo da Telefônica é bem diferente:

~% dig @200.204.0.10 asdf.juliano.info.

; <<>> DiG 9.5.0-P2 <<>> @200.204.0.10 asdf.juliano.info.
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31958
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;asdf.juliano.info.             IN      A

;; ANSWER SECTION:
asdf.juliano.info.      60      IN      A       208.70.188.17

A resposta fornecida pelo DNS recursivo da Telefônica indica que a resolução se sucedeu, mesmo sem a autoridade, e informa um endereço IP (208.70.188.17) de um servidor que está sob seu controle. Quando um usuário acessa tal nome de domínio através de um navegador web, esse servidor recebe a requisição do usuário, e o redireciona para a página citada acima.

Os problemas causados

Esse comportamento apresenta diversas implicações sérias:

Fere os padrões da Internet

A primeira grande implicação é que esse comportamento fere as especificações de como a Internet deve funcionar. Quando um nome de domínio que não existe é solicitado, o sistema DEVE retornar o erro NXDOMAIN, para que o agente de usuário possa tratar o erro apropriadamente. Diversos sistemas dependem deste comportamento.

Por exemplo, um firewall pode consultar um determinado nome de domínio para abrir uma exceção para uma restrição de acesso a um serviço sensível à segurança. Se o nome existir, o firewall abre a exceção para aquele IP; caso contrário, o firewall não abre exceções. Com a alteração, a segurança de tal sistema hipotético é comprometida, pois o firewall é enganado e abre uma exceção para um endereço IP que o administrador não autorizou.

Interceptação e ludíbrio

Com esse sistema, o provedor intercepta um protocolo de comunicação entre duas partes (cliente e servidor), e insere uma informação falsa que ludibria o usuário e personifica ilegalmente o real detentor do domínio. Nesse caso, o domínio juliano.info pertence a mim, está registrado em meu nome e eu sou a única pessoa que pode determinar o seu conteúdo. Eu não autorizo a Telefônica, ou qualquer outro provedor, a enganar meus visitantes informando um endereço IP que eu não especifiquei para um subdomínio do meu domínio.

Experiência do usuário

O sistema é tão idiota que ele trata a Internet como se fosse formada exclusivamente por HTTP; em outras palavras, é como se a única razão para resolver um nome de domínio fosse acessar uma página Web hospedada em tal domínio. O sistema ignora totalmente todos os outros protocolos, como HTTPS, FTP, IRC, e-mail, mensageiros instantâneos, etc...

O servidor cujo endereço é falsamente informado nas requisições responde a apenas conexões na porta 80 (HTTP), o que significa que se o usuário tentar acessar um sítio FTP ou HTTPS com o endereço errado, o navegador ficará aguardando durante um longo tempo pela conexão, que nunca será estabelecida, até ocorrer um timeout. O usuário, por sua vez, será informado erroneamente que o "servidor não está respondendo", fazendo-o acreditar que é um problema no servidor e provavelmente nem perceber que o endereço que ele acabou de digitar está incorreto.

Violação de privacidade e segurança

O cenário ainda é mais assustador. Se por qualquer razão o servidor DNS original encontrar uma falha temporária e não responder, no mesmo intervalo de tempo em que o usuário preenche um formulário Web com informações particulares (identificação pessoal, senha, e-mail, números bancários, etc) e submete, o servidor falso do provedor irá receber tais informações. Mesmo que o servidor não faça nada com tais informações e as descarte, só o fato de tais informações serem transmitidas para o destino errado é muito grave.

Muitos outros cenários podem ser imaginados. Nada garante que tal servidor não irá aproveitar de sua posição estratégica e privilegiada nesse sistema para interceptar outras conexões, especialmente transmissões sensíveis à segurança, como SSH, e-mails, etc.

O sistema de nomes de domínio é uma peça extremamente crítica para o funcionamento da Internet. Diversos pontos críticos da segurança da Internet dependem do DNS. Isso pôde ser observado recentemente com a recente descoberta vulnerabilidade do DNS, ainda sem solução real.

O DNS não é uma peça para se brincar dessa forma, muita coisa está em jogo. Já foi mostrado que esse sistema é uma vulnerabilidade criada pelo provedor.

Marketing abusivo e questões éticas

Outra questão, agora ética, é que o "serviço" não é oferecido aos usuários, ele é imposto. A página do serviço mostra uma opção para "desativar as sugestões de links", mas essa opção meramente ajusta um cookie HTTP que suprime a exibição das propagandas. O sistema continua ativo, interceptando as consultas DNS, ferindo os padrões da Internet, dificultando a experiência do usuário e violando sua privacidade e segurança.

Nesse ponto nós observamos o marketing abusivo, que não tem limites para atingir seus objetivos, preferindo destruir padrões estabelecidos há décadas, os quais inúmeros sistema dependem para funcionar corretamente, correndo o risco de causar sérios desastres de segurança, simplesmente para vender sua propaganda. Pior ainda é o fato do sistema ser imposto aos usuários que pagam para ter uma conexão de banda-larga. O usuário paga por um serviço defeituoso de propósito, apenas para ser abordado com propagandas. O provedor faz o "serviço" parecer muito bom ao usuário, mas este é, na verdade, o último beneficiado nessa estória.

Conclusão

Falta uma maior repercussão por parte dos usuários sobre esse "serviço" que os provedores estão adotando. Provavelmente devido ao desconhecimento técnico, os usuários ignoram os reais danos causados pela imposição de tal sistema sobre sua utilização da Internet.

Eu não fui capaz de encontrar qualquer outra postagem séria apontando e criticando esse "serviço" imposto pelos provedores brasileiros além da do Marcelo, apontado acima. É preciso chamar a atenção dos usuários, profissionais de segurança e agências regulamentadoras.

Visualizações