Ataques e falhas no SSL

Apesar de ser amplamente utilizado, o SSL apresenta algumas falhas e vulnerabilidades notáveis. Um dos principais ataques relacionados ao SSL é o chamado man-in-the-middle, onde um atacante se coloca em meio a uma comunicação com o intuito de aproveitar-se de dados trocados. Uma outra falha é heartbleed, que é um bug na principal biblioteca utilizada para implementação de SSL, a OpenSSL. As principais falhas no SSL serão citadas e explicadas nas próximas subseções.

Man-In-The-Middle

Como já dito, esse ataque se baseia em interceptar uma comunicação entre duas entidades quaisquer com o intuito de simular a autenticidade e integridade das mensagens trocadas, ou seja, as entidades envolvidas na comunicação não saberão que há uma interceptação e acreditarão que estão numa comunicação direta. O MITM é considerado como uma forma de roubo de sessão onde o interceptador divide a conexão TCP entre as duas partes em duas, uma entre ele e uma parte, e a outra entre ele e a outra parte. Para conseguir tal façanha, o atacante precisará fazer coisas como:

  • Roubar a chave de um servidor de forma a ser capaz de descriptografar a chave pública que o cliente possui. O cliente nunca saberá distinguir entre a autenticidade do atacante e a do servidor original.
  • Roubar a chave de uma Certification Authority. Dessa maneira o atacante será capaz de assinar falsos certificados digitais induzindo o cliente a acreditar que a chave pública que lhe foi passada é autêntica.
  • Injetar uma falsa Certification Authority entre as CA’s acreditadas pelo cliente. Assim, o atacante será capaz de fazer com que o cliente acredite na chave pública enviada, pois o cliente acredita naquela CA.
Heartbleed

A mais famosa biblioteca criptográfica, a OpenSSL, é utilizada amplamente por grandes empresas para proteger informações sensíveis de usuários, como nomes, senhas, números de cartão de crédito, etc. Uma falha presente em uma das versões mais recentes dessa biblioteca permite a um atacante obter acesso a memória do sistema, comprometendo as chaves privadas utlizadas por servidores. Esta ameaça se aproveita principalmente de servidores, porém qualquer aplicação rodando uma versão comprometida do OpenSSL e conectado a internet está passível de ataques. Em geral, ocorrem bugs em vários softwares e eles são corrigidos com o tempo, mas nesse caso o problema foi pior pois este bug envolvia informação sensível demais e esteve presente por tempo demais. Como as chaves privadas são capazes de descriptografar mensagens também do passado, é possível que muita informação já tenha sido vazada até a data em que o bug foi descoberto e consertado.

POODLE Attack

Apesar de estarmos na versão TLS 1.2 e em breve na TLS 1.3, ainda há um grande legado de servidores passíveis de utilizar o SSL 3.0 por questões de interoperabilidade, sendo esta a versão mais antiga possível para uso já que o versões anteriores a essa foram banidas. Apesar da necessidade de compatibilidade, o SSL 3.0 é um protocolo antigo e repleto de falhas conhecidas, ou seja, há várias maneiras de atacantes explorarem essas falhas para ações de má fé. Sabendo das falhas, a maioria dos servidores optam por utilizar versões TLS 1.0 ou mais recentes por questões de segurança, mas ainda capazes de fazer um downgrade para o SSL 3.0 caso necessário. Então, um atacante a fim de fazer um ataque do tipo MITM teria como opção tentar fazer com que um conexão entre duas partes resolvesse fazer o downgrade para o SSL 3.0, com o intuito de tirar proveito desta situação.

Em Setembro de 2014 um trio do time de segurança da Google descobriu uma vulnerabilidade no SSL 3.0, que foi chamada de POODLE Attack. A falha esta justamente no fato de que as conexões poderiam optar pelo uso do SSL 3.0 por uma questão de interoperabilidade. Neste ataque, o atacante se coloca em meio a conexão entre cliente e servidor no momento em que ocorre o processo de handshake, se aproveitando do fato de que caso uma tentativa de handshake do cliente com o servidor falhe, uma nova negociação tentada com o cliente sugerindo versões mais antigas de SSL, sendo ela possivelmente a versão 3.0. O atacante tenta guia-los até que seja decidido o uso do SSL 3.0 e então aproveita-se das falhas do mesmo.

A sigla POODLE significa Padding Oracle On Downgrade Legacy Encryption, que se refere a um ataque cujo atacante força a escolha por uma tecnologia mais obsoleta e se aproveitam do padding de mensagens criptografadas para fazer o ataque padding oracle, o qual o atacante faz requisições a um dito “oráculo” que fornece informações sobre o padding de uma mensagem estar correto ou não. No caso do SSL 3.0 eram necessários somente 256 tentativas para desvendar 1 byte da mensagem criptografada. Após a divulgação dessa falha a maioria dos navegadores mais conhecidos retiraram totalmente sua compatibilidade com o SSL 3.0 e servidores implementaram medidas para evitar o downgrade e possivelmente nunca o fazê-lo.