Entendendo o ataque SMACK/FREAK

por | mar 13, 2015 | Dicas de Segurança | 0 Comentários

Em outubro de 2014 foi encontrada uma vulnerabilidade no SSL, que poderia ser explorada com o ataque POODLE. Não demorou muito para que outra vulnerabilidade séria no SSL/TLS fosse encontrada, que pode ser explorada com os ataques SMACK e FREAK.

Nos últimos dias, surgiram detalhes de um novo ataque contra implementações do protocolo TLS. Em um artigo a ser apresentado no simpósio IEEE Security & Privacy 2015, pesquisadores descrevem como um atacante consegue quebrar a confidencialidade de conexões TLS explorando falhas na forma em que são implementadas por conhecidas bibliotecas criptográficas como OpenSSL, JSSE e CyaSSL.

TLS

O TLS é um protocolo de comunicação segura, sucessor do SSL, cujo objetivo é fornecer autenticação e confidencialidade em conexões da internet, sendo utilizado por navegadores para se acessar websites de forma segura. Ele é um protocolo bastante complexo por ter sido criado de forma ad hoc e ter evoluído remediando, de tempos em tempos, as falhas encontradas em versões anteriores do protocolo. Tal complexidade invariavelmente leva à dificuldades de implementação, e foi exatamente este problema que foi explorado no trabalho de pesquisadores do INRIA, Microsoft Research e IMDEA.

SMACK

Denominado “SMACK: State Machine Attacks on TLS” (Ataques de Máquina de Estado no TLS), o ataque explora falhas em implementações do TLS, ao manipular os múltiplos estados que uma conexão percorre ao ser estabelecida. O estabelecimento de uma conexão TLS requer uma troca de mensagens entre servidor e cliente, e cada troca de mensagens altera o estado de cada ponto da conexão. Se não houver um controle de quais mensagens podem ser aceitas em cada estado, pode haver uma quebra das garantias de segurança na conexão, o que foi identificado pelos pesquisadores numa série de diferentes ataques.

Na execução dos ataques, supõe­se que o atacante está mediando todas as comunicações entre o cliente e servidor (man­in­the­middle attack), o que é bastante factível para um atacante determinado ou com grandes recursos. No ataque mais simples, quando um cliente envia uma requisição ao um site seguro, o atacante imediatamente se passa pelo servidor e envia uma mensagem artificial ao cliente indicando a finalização do processo de estabelecimento da conexão segura. Tal mensagem é incorretamente aceita, e o cliente passa a se comunicar com o servidor sem utilizar criptografia, pois o processo de estabelecimento de chaves foi pulado.

Esta falha estava presente no JSSE (a implementação padrão do TLS da plataforma Java) e na biblioteca CyaSSL. Isto é, por muitos anos, toda comunicação segura utilizando tais bibliotecas podia ser facilmente quebrada por um atacante ativo.

FREAK

Uma versão mais complexa do ataque afeta o OpenSSL (uma popular biblioteca criptográfica, utilizada no Android por exemplo) e o SecureTransport (a implementação utilizada pelo OS X) e foi chamada de “FREAK: Factoring RSA Export Keys” (Fatorando Chaves de Exportação RSA). O FREAK se baseia na suíte criptográfica RSA_EXPORT, inserida no SSL/TLS por exigência da legislação americana que, antes de 2000, considerava software criptográfico como munição de guerra e limitava sua exportação.

O RSA_EXPORT é uma suíte que (por legislação) pode ser exportada por utilizar chaves RSA efêmeras de tamanho reduzido (512 bits), que poderiam eventualmente ser quebradas por agências de inteligência americanas, se necessário. Após o fim das restrições de exportação, a suíte RSA_EXPORT continuou sendo suportada por questões de compatibilidade, mas era raramente utilizada visto que o TLS permite a seleção de uma lista de preferência de suítes e o RSA_EXPORT raramente está perto do topo.

Porém, os pesquisadores foram capazes de explorar as falhas nas implementações do TLS da seguinte forma:

  • O cliente inicia uma conexão TLS
  • O atacante altera a mensagem de forma a solicitar o uso de RSA_EXPORT para o servidor
  • O servidor retorna uma mensagem especificando uma troca de chaves efêmera com uma chave pública RSA de tamanho reduzido (512 bits)
  • O cliente aceita utilizar esse algoritmo (mas não deveria)

O cliente não pediu que o RSA 512 bits fosse utilizado, portanto ele deveria rejeitar a conexão. Contudo, pela falha de implementação, a mensagem é aceita e o cliente utiliza tal chave de tamanho reduzido para estabelecer o canal de comunicação. Se essa chave for quebrada, pode­se quebrar a segurança

no canal.

Com a tecnologia atual, é possível quebrar uma chave RSA de 512 bits em menos de 12 horas por US$ 100. Além disso muitos servidores, por questões de desempenho, geram uma única chave efêmera para uso com RSA_EXPORT que é reutilizada em todas as conexões com a suíte, fazendo com que a espera de 12 horas não seja problema. Assim, é possível quebrar a segurança de conexões TLS entre clientes afetados e qualquer servidor que suporte RSA_EXPORT. Ironicamente, este era o caso dos websites da própria NSA e FBI.

O que fazer como cliente

Atualizar navegadores e programas clientes. Atualizações estão disponíveis ou serão disponibilizadas para os navegadores afetados. É possível testar se o seu é vulnerável visitando

https://freakattack.com/

O que fazer como desenvolvedor

Atualizar bibliotecas utilizadas por servidores. Atualizações estão disponíveis ou serão disponibilizadas para as bibliotecas afetadas. Adicionalmente, é aconselhável desabilitar a suíte RSA_EXPORT em todos os servidores TLS.

Referências
http://smacktls.com/
http://blog.cryptographyengineering.com/2015/03/attack­of­week­freak­or­factoring­nsa.html

Conrado Gouvêa

Conrado Gouvêa

Desenvolvedor de soluções criptográficas.

Doutor em Ciência da Computação pela Unicamp na implementação eficiente de criptografia.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

CONTACT US

CONTACT US


Rua Maria Tereza Dias da Silva, 270
Cidade Universitária, Campinas-SP - Brasil
CEP 13083-820

fale.conosco@kryptus.com
Tel/Fax +55 (19) 3112 5000

© 2018 - Kryptus | Shaping Trusted Bonds - All rights reserved. - Developed by DDID