Quinta-feira, Fevereiro 17, 2005

Esclarecendo os ataques homográficos usando IDNs

No final de janeiro, surgiu uma grande discussão na Web sobre ataques homográficos usando os Internationalized Domain Names (IDN). É um problema gravíssimo e todos os browsers da atualidade são afetados. Após o pânico geral e muita discussão, alguma conclusões foram tiradas. Tentarei explicar em detalhes o que anda ocorrendo.

Internationalized Domain Names - IDN
IDN são domínios que podem conter qualquer caracter Unicode. Assim, é possível ter domínios escritos com acentos ou em idiomas como chinês ou russo e acabar com a limitação de domínios apenas em ASCII. A idéia do IDN surgiu em 1998 e foi sendo desenvolvida por anos até que, em 2003, o IETF oficializou a especificação e o ICANN lançou um guia para implementação de IDNs.

Como os servidores DNS aceitam apenas ASCII, os nomes de domínio internacionais são traduzidos para o IDN usando um código chamado punycode. Por exemplo, para um domínio www.ﺱﺲﺷ.com temos a representação em punycode de ﺱﺲﺷ, que é ie7ccp; um IDN adiciona o prefixo reservado xn-- (ACE prefix), resultando no IDN: www.xn--ie7ccp.com. [Veja um conversor online]

Os browsers baseados em Gecko/KHTML (Mozilla, Firefox, Camino, Konqueror, Safari, OmniWeb, Internet Explorer) e o Opera possuem atualmente suporte à IDNs. No IE, que é anterior ao lançamento da especificação, há um plugin da VeriSign que implementa tudo isso.

Ataques homográficos usando IDN
O problema dos IDN são os caracteres homográficos que são caracteres que são renderizados da mesma forma mas são diferentes. Por exemplo, o caracter U+0430 representa a letra "a" minúscula no alfabeto Cirílico e o caracter U+0061 representa a letra "a" minúscula no alfabeto Latino (usado no inglês, no ASCII e em todos os domínios "normais"). Alguém pode registrar um domínio malicioso usando um a cirílico ao invés do a latino; para o usuário, será exatamente o mesmo endereço e ele poderá ser enganado.

Na última conferência hacker Shmoocon, a vulnerabilidade foi descoberta e divulgada. O caso de exemplo mostra o registro do site paypal.com usando um a cirílico. Neste link está o falso paypal e neste outro, o verdadeiro; clique em ambos (é inofensivo :-) e veja como seu browser renderiza exatamente da mesma forma (tanto na barra de endereços quanto na barra de baixo ao apontar o mouse). Você pode ver outro exemplo aqui, inclusive usando certificados SSL válidos e vários outros exemplos aqui.

A grande questão, que é consenso de todos, é: este não é um bug dos navegadores e sim dos órgãos de registro de domínios. Desde 2002 sabe-se que este tipo de ataque seria possível e as recomendações do ICANN lançadas em 2003 para os órgãos de registro incluíam um alerta e proibiam o registro de domínios homográficos. Porém, o que se vê hoje é que muitas empresas de registro de domínios não seguiram essas precauções e domínios homográficos estão sendo registrados (os domínios no Japão são um raro caso onde foi feita a implementação correta).

O problema é que será muito difícil conseguir que as empresas de registro corrijam o problema e os usuários estão todos desprotegidos. Mas, como disse Asa Dotzler do Mozilla, "nossos usuários estão em risco por causa dessa falha e vamos tomar algumas medidas drásticas (incluindo retirar o IDN do Gecko) para ajudar a defender nossos usuários".

Na verdade não há muito o que se fazer no lado dos navegadores; o erro está nos registros mesmo. Mas algumas discussões tem acontecido para tentar solucionar o problema rapidamente, como a idéia de colocar o punnycode de cada site ao lado do endereço (funcionaria para geeks, mas 99,99% das pessoas levaria um susto). Neste momento, todos os produtos da Mozilla terão o IDN desabilitado até que se chegue a alguma solução plausível. Como disse Gervase Markham:

"Se as pessoas quiserem ver IDN completo e irrestrito de volta no Mozilla e Firefox, o melhor é pressionar os órgãos de registro de domínios mundiais a cumprirem as obrigações com seus clientes - tanto donos de domínio como usuários da Internet - e a implementar a especificação do ICANN."
Outros navegadores deverão tomar providências do mesmo estilo. A Opera, a princípio, disse que não ia fazer nada visto que não é um bug do navegador; mas provavelmente deverão tomar alguma providência concreta em breve.

As discussões continuam e divulgarei possíveis avanços.

Links
Atualização 16/02:
Paul Hoffman postou algumas possíveis soluções. Todas as idéias tentam diferenciar para o usuário os domínios com caracteres IDN (colorindo as letras de outros alfabetos - como o cirílico; colocando um ícone ao lado de sites IDN; mostrar o endereço IDN, em punnycode). Eu já havia comentado que acho isso ineficiente e hoje o Gervase falou: "Nós queremos que os domínios IDN funcionem tão bela e simplesmente como os domínios não-IDN". Definitivamente, não é uma boa idéia diferenciar os domínios para o usuário.

Neste mesmo post, o Gervase comentou algumas soluções como fazer uma lista de TLDs confiáveis (TLDs são as "extensões" dos domínios, como .com ou .uk). Além disso, divulgou um link do seu site sobre pishing scams (esses ataques que tentam enganar o usuário) e possíveis soluções. Nos comentários, há ainda outras discussões interessantes, como a pergunta "porque simplesmente não desabilitar caracteres homográficos à caracteres ASCII?"; simplesmente porque um domínio todo escrito em cirílico, por exemplo, conterá um "a" cirílico e não um "a" latino, e isso não é um ataque. Além disso, é possível domínios IDN homográficos a outros domínios IDN, não necessáriamente é um ataque restrito à domínios ASCII (como o caso do "a" cirílico/latino).

Atualização 17/02:
O Gervase postou hoje sobre a solução encontrada para o Mozilla/Firefox neste momento. Ao invés de desabilitar o suporte à IDN, os navegadores exibirão o punnycode nos links e barra de endereço. É apenas uma decisão de emergência para evitar que os usuários sejam enganados até que se chegue à solução definitiva.

Mas tenho medo que o usuário que está acostumado a abrir seus sites IDN leve um susto ao ver www.xn-- e aí sim ache que está sendo enganado. Não sei o que é pior, desabilitar de vez o IDN ou fazer esse remendo espanta-usuário de mostrar o punnycode.

2 Comments:

At 7:47 AM, Anonymous said...

Gesiel (www.io.eti.br, por que não sou anônimo)

Cara, importantíssima esta "notícia" e vc a cobriu de forma brilhante.
parabens.

 
At 5:24 PM, Ricardo Monteiro said...

Não custa comentar. O primeiro site que reserva domínios IDN no Brasil é http://www.nomer.com.br/idn

Nota: Existem apenas 3.000 nomes reservados, ou seja, ótimos nomes ainda estão livres.

 

Post a Comment

<< Home