quarta-feira, 31 de dezembro de 2008

Os ataques aos certificados SSL

Bom, já tem muito tempo que não blogo. Estava meio sem assunto e sem tempo cuidando de algo que será assunto aqui em breve (evento do OWASP).

O assunto de hoje é o ataque da turma do prof. Lenstra, que conseguiu subverter a infra-estrutura de chaves pública (PKI) usada pelos browsers para sites com SSL (veja no site: http://www.win.tue.nl/hashclash/rogue-ca/). Vamos começar pelo resultado do ataque: eles conseguiram criar uma autoridade certificadora (AC) falsa capaz de emitir certificados que são aceitos pelos principais browsers (leia-se IE e firefox). Com isso, eles agora são capazes de gerar certificados (que são aceitos como válidos) para qualquer site que queiram.

Com o certificado falso, é possível montar um ataque contra um site legítimo de e-banking ou e-commerce. Vamos supor que o Banco do Sapão (BdS) é uma instituição bancária respeitada e reconhecida e que tem um site de e-banking no endereço www.bds.com.br. Tendo em mãos a AC falsa, vários ataques são possíveis:
  1. subverter o DNS do cliente para que acesse www.bds.com.br em um endereço IP designado pelo atacante. Antes, os ataques de DNS eram contidos porque o browser iria reclamar do certificado usado pelo sevidor web. Com a AC falsa, o site falso agora pode usar um certificado que será aceito pelo browser sem reclamar.
  2. Usar falhas na aplicação (cross-site scripting, redirects, etc) para fazer o cliente acessar o site falso. Assim como no caso anterior, essa possibilidade já existia, mas o uso de certificados falsos faz com que o browser não avise ao usuário que tem alguma coisa estranha acontecendo, facilitando (e muito) o ataque.
  3. Fazer phishing para um site que pareça real. E que ficará mais "real" ainda já que terá um certificado "válido".
Existem outras possibilidades de ataque, mas essas me parecem as mais importantes.

Mas como isso é possível? Bom, tudo começa quando, em 2004, um grupo de pesquisadores chineses liderados pela profa. Xiaoyun Wang apresentou uma evolução dos ataques de Antoine Joux para geração de colisões no MD5. O grande avanço dos chineses foi conseguir gerar colisões no MD5 completo (com todos os rounds), tornado o ataque praticável com os recursos computacionais disponíveis atualmente.

Depois de divulgar este ataque e as colisões MD5 geradas, a profa. Wang, dentre outras coisas, participou de um projeto com o prof. Lenstra onde eles conseguiram gerar certificados com chaves diferentes. Este primeiro resultado tinha apenas a chave diferente, os demais dados do certificado eram iguais. Depois a equipe do prof. Lenstra conseguiu gerar certificados para identidades diferentes, mas sob condições controladas (era uma AC interna, o que ajuda a saber e definir como são gerados todos os campos do certificado).

O trabalho apresentado no CCC é uma evolução disso tudo, em que o resultado agora foi gerar um par de certificados assinados por uma AC comercial. Os certificados são gerados de forma coordenada para que a assinatura RSA usando MD5 como hash seja igual para ambos. O primeiro é comprado de uma AC comercial a partir de chaves e identidades cuidadosamente escolhidas. O segundo é o certificado falso, para o qual é copiada a assinatura presente no primeiro.

Para tornar o ataque mais inteligente, os pesquisadores fizeram de forma que o segundo certificado seja um certificado de um AC, ou seja, os browsers aceitam certificados assinados por ele. Assim, os atacantes podem criar quantos certificados quiserem a partir de um único certificado falso.

Algumas pessoas e instituições estão minimizando a importância deste ataque, como a fundação Mozzila e a Microsoft. O principal argumento é que poucas ACs usam MD5 e que o ataque foi específico a uma AC (que usa números de série sequenciais). O problema é que se uma única AC estiver vulnerável, o ataque é possível e pode afetar todos os usuários da Internet. Neste caso dependemos de todas as ACs estarem vigilantes para podermos confiar na PKI usada pelos browsers. E todos sabemos que muitas empresas só estão preocupadas em seu faturamento, ainda mais em tempos de crise. Não creio que haverá tanta boa vontade por parte das ACs em mudar softwares e processos, a menos que haja um pressão econônica grande. Só que com os grandes players falando que o problema é bobagem, muito da possibilidade de pressão se perde.

O ataque também depende de um grande poder computacional: é verdade, mas com as estimativas de milhões arrecadados com fraudes a sites bancários, será que é muito caro comprar 200 Playstation (coisa de 70 mil dólares)? Por fim, o ataque depende de conhecimento de criptografia. Bom, vamos lembrar que tem gente mal intencionada em todos os níveis de escolaridade e conhecimento e que as máfias internacionais podem também usar chantagem ou extorsão como forma de obter o conhecimento necessário.

Em suma, é um novo ataque que põe em cheque um dos pilares da segurança de sites de comércio eletrônico e internet banking. O ataque é de difícil implementação, mas depende apenas de uma AC vulnerável, conhecimento criptográfico e poder computacional. Nada impossível de acontecer, embora a tendência dos fabricantes de browser venha sendo negar o problema.

Me parece que há uma guerra de informações: estão querendo abafar o caso pra não prejudicar os números dos sites de e-commerce ou e-banking. Em tempos de crise econômica, quem é que vai querer que o público saiba que os hackers tem uma ferramenta tão poderosa nas mãos?

Update: A AC atacada no artigo original corrigiu o problema: https://blogs.verisign.com/ssl-blog/2008/12/on_md5_vulnerabilities_and_mit.php