Proteja seu BIND9 do problema de DNS Cache Poisoning

De gutocarvalho.net

Recentemente foi descoberta uma vulnerabilidade do protocolo DNS e o BIND9 é vulnerável a ela.

Conteúdo

[editar] instrodução a DNS

O procotocolo DNS ou Domain Name System, traduzindo, Sistema de Nome de Domínios, é um protocolo crítico para a infra-estrutura da internet, através dele é possível trazudir endereços legíveis para nós seres-humanos em endereços ip, como por exemplo o host linux-foundation.org é traduzido para o endereço IP (internet protocolo) 140.211.169.101. Os sistemas da internet entedem o que é 140.211.169.101, sabem como encontrar este endereço, sabem se comunicar com este endereço, buscar e enviar informações para o computador que utiliza este endereço, mas sem o DNS estes sistemas não saberiam como se comunicar com o host "linux-foundation.org". A internet como é hoje depende de forma crítica do bom funcionamento dos sistemas DNS, veja é possível acessar um site, seja FTP (File Transfer Protocolo) ou HTTP (Hypertext Transfer Protocolo), porém no dia a dia seria impraticável decorar endereços IP, lembrando que estes são divididos em 4 octetos, sendo 4 grupos de 8 bits, totalizando de 32 bits. O DNS é o protocolo que facilitou o uso da internet.

A tradução do nome linux-foundation.com é chamada de resolução de DNS, quando digitamos no navegador ou no cliente de ftp um endereço DNS, tal qual www.linuxfoundation.org ou ftp.linux-foundation.org, internamente estes programas solicitam uma resolução de DNS a um serviço de DNS. Aliás podemos dizer que qualquer programa que funcione na internet utiliza a resolução de DNS para funcionar, seja um cliente de e-mail, seja um cliente de mensagens instatâneas como o jabber por exemplo. Falando em jabber, quando você entra com seu usuário e senha e clica em "conectar/entrar" o cliente do jabber tentará se conectar no servidor jabber.org, para isto precisará fazer a resolução de DNS, para tudo utiliza-se a resolução de DNS.

[editar] Como funciona o DNS quando eu digito www.linux-foundation.org?

1. Primeiro o seu navegador pergunta para o servidor de DNS configurado no computador que ele está hospedado.

2. O servidor de DNS do seu provedor vai perguntar para um cara chamado ROOT-Server quem é www.linux-foundation.org

3. O ROOT Server responsável pela área vai dizer que não sabe quem é esse cara, mas ele sabe quem sabe e vai te mandar perguntar pelo servidor DNS responsável pelo domínio .ORG

4. O servidor de DNS do seu provedor vai perguntar então para o servidor de DNS do domínio .ORG

5. O servidor de DNS do domínio .ORG vai dizer que não sabe quem é (www).linux-foundation.org, mas sabe sabe e vai te mandar perguntar para o servidor do domínio (linux-foundation).org quem é o tal do (www).

6. O servidor de DNS do seu provedor vai perguntar então para o servidor de DNS linux-foundation.org e ele vai dizer que sabe, e que o endereço ip do servidor é 140.211.169.101.

7. O servidor de DNs do seu provedor vai responder a pesquisa feita pelo navegador, e a partir deste momento a conexão com o site será iniciada.

Este procedimento é chamado de pesquisa recursiva, a estrutura de DNS está dentro de uma árvore, veja o exemplo abaixo

  • root
    • br
      • org
        • onid
          • www
          • ftp
    • com
        • linux
            • www
            • ftp
    • org
      • linux*foundation
        • www
        • ftp
    • net
      • gutocarvalo
        • www
        • ftp
    • uk
      • co
        • bbc
          • www
          • ftp

Veja que nesta árvore exemplo temos os domínios e subdomínios...

  • .br
  • .org.br
  • .onid.org.br
  • www.onid.org.br
  • ftp.onid.org.br


  • .br
  • .com.br
  • .noticiaslinux.com.br
  • www.noticiaslinux.com.br
  • ftp.noticiaslinux.com.br


  • .com
  • .linux.com
  • www.linux.com
  • ftp.linux.com


  • .net
  • .gutocarvalho.net
  • www.gutocarvalho.net
  • ftp.gutocarvalho.net


  • .org
  • .linux-foundation.org
  • www.linux-foundation.org
  • ftp.linux-foundation.org


  • .uk
  • .co.uk
  • .bb.co.uk
  • www.bbc.co.uk
  • ftp.bbc.co.uk


Existem 13 servidores de DNS principais, chamados de RootServers, eles são responsáveis por informar que é responsável por cada ramo desta ávore, em nosso caso, o registro.br é responsável pelo ramo .br , para quem não sabe o registro.br é um entidade do CGI.BR, antigamente quem cuidava deste ramo era a fapesp.

[editar] O que é Cache?

Na atual estrutura de DNS existem um recurso chamado cache, o que é...

[editar] Explicação da Falha

Sobre a falha...

[editar] Referências

Sobre o problema

Fixes para bind9

Exploits para bind

Ferramentas pessoais