O melhor pedaço da Maçã.

Problema crítico de segurança do DNS e a falta de resposta da Apple

Colaboração especial por Ricardo Rocha.

Publicidade

Há duas semanas, foi divulgada uma falha crítica de segurança no serviço de DNS que, sem ser alarmista, tem o potencial de colocar em risco cada usuário da internet. Desta vez, a falha não foi descoberta nesse ou naquele produto ou sistema operacional: é o próprio protocolo de DNS que possui uma falha e que afeta todo cliente e servidor de DNS, em qualquer sistema operacional.

A solução temporária para o problema foi modificar softwares de maneira a tornar a exploração da falha mais difícil. Para entender o problema, é necessário entender o que é e como funciona o serviço de DNS. Se você já sabe o que é o DNS, pule os primeiros parágrafos deste artigo.

O DNS (Domain Name Server) é um serviço que converte (ou resolve) nomes de máquinas em endereços IP. Por exemplo, quando digitamos no navegador o endereço http://www.macmagazine.com.br, a primeira tarefa que ele executa é solicitar a conversão deste nome para o respectivo endereço IP (no caso, 72.47.239.48). Sem este endereço IP, o navegador ou qualquer software que acessa a internet não pode fazer nada.

A conversão é solicitada ao cliente de DNS local da máquina, que repassa o pedido ao servidor de DNS para o qual a máquina está configurada. O endereço do servidor de DNS é configurado na máquina no mesmo momento em que a estação obtém um endereço IP (além de outras informações) do provedor, considerando um acesso residencial tradicional. Para saber o servidor de DNS no Mac OS X, basta vá nas Preferências do Sistema » Rede » Avançado e clique na aba DNS.

A internet mantém servidores de DNS distribuídos, responsáveis por fazer esses mapeamentos de nomes em endereços. Cada domínio ou sub-domínio na internet mantém o seu próprio servidor e ela mantém um conjunto de servidores-raízes, responsáveis por fazer a primeira resolução de domínios. Uma resolução deve passar por todos os servidores, desde o de nível mais alto, até o mais específico.

Publicidade

Para simplificar a discussão: quando um servidor recebe a resposta de uma resolução de nome, para manter as próximas resoluções mais eficientes, ele mantém por um tempo na memória (cache) o endereço IP obtido. Assim, na próxima resolução basta acessar a memória, ao invés de repassar novamente o pedido aos vários servidores de DNS. O servidor de DNS do provedor de acesso para o qual nossa máquina está configurada mantém na memória cache os IP de todas as resoluções solicitadas pelos clientes do provedor.

Publicidade

A própria máquina cliente mantém um cache local das resoluções efetuadas, de maneira a solicitar ao servidor apenas quando precisa resolver um nome diferente. No Mac OS X, você pode verificar as entradas que estão no cache local digitando o seguinte comando no Terminal:

dscacheutil -cachedump -entries host

Não é difícil perceber que o funcionamento do DNS é crítico para a internet. Só para você ter uma idéia, no recente apagão da Telefônica, houve relatos de usuários que conseguiram acessar a internet normalmente apenas modificando o endereço do servidor de DNS para um servidor externo à rede da Telefônica.

Há uma técnica conhecida há anos para enganar servidores de DNS conhecida por “envenenamento de cache”. Nesta técnica, um usuário mal intencionado envia uma resposta a um pedido de resolução de nome para um servidor de DNS antes do servidor correto, enganando quem fez o pedido que coloca a resposta no seu cache. Por exemplo, o usuário mal intencionado poderia colocar o endereço de uma máquina que ele controla como resultado da resolução do endereço de um banco. Neste caso, quem está acessando o banco não teria idéia de que está acessando uma outra máquina. Não é difícil perceber o tamanho do estrago que isso pode causar!

O que há de novidade nisso tudo é que um pesquisador chamado Dan Kaminsky descobriu que, devido a uma falha no protocolo de DNS, é possível realizar o envenenamento de cache em poucos segundos em virtualmente qualquer servidor de DNS, como o BIND (usado no Mac OS X).

Essa descoberta foi alarmante, sendo discutida secretamente entre as várias empresas que produziam servidores e clientes de DNS. Depois de seis meses, essas empresas lançaram patches ao mesmo tempo para todos os seus produtos, em uma iniciativa conjunta inédita, até então. Só foi aí que o problema se tornou público, embora ninguém tivesse revelado como explorar a falha (e enganar os servidores). O segredo durou 13 dias: a informação apareceu em um blog e na última quinta (dia 24) já havia pelo menos duas ferramentas cracker prontas para explorar a falha.

E qual a relação disso tudo com a Apple?, você me pergunta.

Apesar dos seis meses em que as empresas — incluindo a Apple — conheciam a falha, do lançamento no dia 08 de julho de uma correção em conjunto de todos as empresas e de já existirem, desde o último dia 24, ferramentas prontas para explorá-la, até agora a Apple não lançou uma correção para o Mac OS X! E o pior de tudo: o BIND já foi corrigido desde o dia 08, também. Todas as versões do Mac OS X estão vulneráveis, embora os alvos mais interessantes para os crackers sejam os servidores baseados em Mac OS X.

Enquanto a Apple não solta uma atualização, não há muito o que fazer nas máquinas clientes Mac OS X. Entretanto, é necessário garantir que o servidor de DNS para o qual a máquina está configurada não é um servidor Mac OS X Server. Se for este o caso, pode-se configurar a máquina para utilizar outro servidor de DNS primário, sendo uma opção segura os servidores do OpenDNS. Os IPs do OpenDNS são 208.67.222.222 e 208.67.220.220.

Para quem possui máquinas Mac OS X Server e que atuam como servidores de DNS de algum domínio, então é necessário urgentemente instalar uma versão mais recente do BIND (9.0.5-P1). Este processo terá que ser manual, talvez envolva a compilação do código fonte do BIND e irá sobrescrever a configuração padrão do SO. Portanto, cuidado! Para quem usa o Mac Ports, a instalação se torna bem mais fácil e a versão mais recente do BIND já está disponível.

Agora, nem tudo são flores para quem não usa Mac OS X. De nada adianta ter o SO atualizado e com o problema corrigido se o servidor de DNS do seu provedor de acesso ou domínio não instalou a atualização. E, pelos comentários recentes, a taxa de atualização dos servidores tem sido mais lenta do que esperado. Em caso de dúvida, pode-se utilizar também o OpenDNS.

Uma discussão aprofundada sobre este problema e a falta de resposta da Apple pode ser encontrada aqui. Minha última recomendação é torcer para que a Apple faça o dever de casa e lance uma atualização ainda nesta semana! Run, Forrest, run!

Ver comentários do post

Compartilhe este artigo
URL compartilhável
Post Ant.

Pixar libera primeiro teaser de 45 segundos da sua próxima grande produção: “Up”

Próx. Post

Mac é Pop no seriado gay “Queer as Folk”

Posts Relacionados