Terrapin: A Vulnerabilidade que Compromete a Segurança das Conexões SSH

Conteúdo:

O que é OpenSSH?

O OpenSSH é um dos softwares mais populares e amplamente utilizados para estabelecer conexões seguras entre sistemas remotos usando o protocolo SSH. No entanto, recentemente, pesquisadores acadêmicos descobriram uma nova vulnerabilidade que pode comprometer a integridade e a segurança das conexões SSH quando certos modos de criptografia são usados. Essa vulnerabilidade foi batizada de Terrapin e recebeu o identificador CVE-2023-48795. Neste artigo, vamos explicar como funciona o ataque Terrapin, quais são os seus impactos e como se proteger dele.

Quem Descobriu a Falha Terrapin?

A falha Terrapin foi descoberta por uma equipe de pesquisadores acadêmicos da Universidade de Bochum, na Alemanha. Eles batizaram essa vulnerabilidade de Terrapin, que é o nome de uma espécie de tartaruga que vive em água salgada. Os pesquisadores publicaram os detalhes técnicos da falha em um artigo científico  e também desenvolveram um programa que pode ser usado para verificar se um cliente ou servidor SSH é vulnerável ao ataque Terrapin. Eles também notificaram os desenvolvedores do OpenSSH e de outras implementações SSH sobre a falha e sugeriram possíveis soluções para corrigi-la. Os pesquisadores afirmam que a falha Terrapin é uma das mais graves já encontradas no protocolo SSH e que afeta milhões de conexões SSH em todo o mundo.

Como funciona o Ataque?

O ataque Terrapin só funciona se a conexão SSH usar um dos seguintes modos de criptografia: ChaCha20-Poly1305 ou CBC com Encrypt-then-MAC. Esses modos de criptografia foram introduzidos pelo OpenSSH há mais de 10 anos e são amplamente adotados por diversas implementações SSH. No entanto, esses modos de criptografia têm uma vulnerabilidade que permite que o invasor altere os números de sequência das mensagens sem quebrar o MAC. Isso significa que o invasor pode modificar as mensagens sem que o cliente ou o servidor detectem a alteração.

Quais os Perigos?

O impacto do ataque Terrapin depende dos dados que são trocados nas mensagens de handshake entre o cliente e o servidor SSH. Dependendo dos dados, o invasor pode conseguir realizar diferentes tipos de ataques, como:

  • Downgrade do algoritmo de chave pública usado para autenticação do usuário. O invasor pode fazer com que o cliente e o servidor usem um algoritmo de chave pública mais fraco ou menos seguro do que o originalmente escolhido.
  • Desativação das defesas contra ataques de temporização de pressionamento de tecla no OpenSSH 9.5. O invasor pode fazer com que o cliente e o servidor desabilitem o recurso de padding que foi introduzido pelo OpenSSH 9.5 para prevenir ataques de temporização de pressionamento de tecla. Esse tipo de ataque consiste em medir o tempo que leva para o servidor SSH responder a cada pressionamento de tecla do cliente, para inferir a senha do usuário. Sem o padding, o invasor pode realizar esse ataque com mais facilidade.
  • Remoção ou modificação de mensagens trocadas pelo canal de comunicação. O invasor pode fazer com que o cliente e o servidor percam ou alterem algumas mensagens que são enviadas ou recebidas pelo canal SSH. Isso pode causar erros, inconsistências ou violações de integridade nos dados. Por exemplo, o invasor pode remover ou modificar comandos, arquivos, configurações ou outros tipos de informação que são transmitidos pelo SSH.

Como se Proteger do Ataque Terrapin?

A melhor forma de se proteger do ataque Terrapin é atualizar o OpenSSH para a versão 9.6 ou superior, que implementa uma contramedida chamada de troca estrita de chaves. Essa contramedida consiste em verificar se todas as mensagens de handshake foram trocadas corretamente entre o cliente e o servidor, antes de iniciar o canal de comunicação. Se alguma mensagem for omitida ou repetida, a conexão é encerrada imediatamente. Isso impede que o invasor manipule os números de sequência das mensagens e rebaixe ou desabilite os recursos de segurança da conexão.

Outra forma de se proteger do ataque Terrapin é evitar usar os modos de criptografia vulneráveis, como ChaCha20-Poly1305 ou CBC com Encrypt-then-MAC. Em vez disso, é recomendado usar modos de criptografia mais seguros e resistentes a ataques, como AES-GCM ou AES-CTR com EtM. Esses modos de criptografia não permitem que o invasor altere os números de sequência das mensagens sem quebrar o MAC. Isso significa que o cliente e o servidor podem detectar e rejeitar as mensagens modificadas pelo invasor.

Protegendo Servidores SSH

Servidores modernos, como Ubuntu, Debian, Red Hat, Rocky, Oracle, já possuem o comando “update-crypto-policies”, que permite gerenciar as políticas criptográficas disponíveis para os vários back-ends, como as bibliotecas SSL/TLS. O comando “update-crypto-policies” é usado para definir a política padrão para as conexões SSH, que será seguida por esses back-ends, a menos que o usuário da aplicação os configure de forma diferente. O comando a seguir altera a política para se proteger do ataque Terrapin.

update-crypto-policies --set DEFAULT:TERRAPIN

Em servidores mais antigos, pode-se alterar o arquivo /etc/ssh/sshd_config

adicionando no fim do arquivo:

Match All
Ciphers [email protected]

Essa linha do sshd_config é usada para configurar os algoritmos de criptografia que são permitidos para as conexões SSH no servidor. O comando “Match All” significa que a configuração se aplica a todas as conexões, independentemente do usuário, endereço ou porta. O comando “Ciphers [email protected]” significa que o único algoritmo de criptografia aceito é o AES256-GCM, que é um modo de criptografia seguro e resistente a ataques, definido pelo OpenSSH.

Depois de alterar o arquivo /etc/ssh/sshd_config, é necessário reiniciar o servidor SSH para aplicar as mudanças.

Protegendo Clientes SSH

Adicione a seguintes linha no fim do arquivo /etc/ssh/ssh_config

Ciphers [email protected]

Para prevenir o problema do ataque Terrapin no Windows, uma opção é usar o cliente SSH Bitvise, que é uma ferramenta gratuita de gestão de arquivos SSH com recursos avançados de segurança. Diferentemente do famoso Putty, o cliente SSH Bitvise suporta modos de criptografia seguros e resistentes a ataques, como AES-GCM, que impedem que o invasor manipule os números de sequência das mensagens. Você pode baixar o cliente SSH Bitvise neste link e seguir as instruções de instalação e configuração. Com o cliente SSH Bitvise, você pode estabelecer conexões seguras sem se expor ao ataque Terrapin.

Ferramenta para checar a vulnerabilidade

O scanner de vulnerabilidade Terrapin foi desenvolvido por pesquisadores da Universidade de Bochum, na Alemanha, e está disponível no GitHub. Para baixar e instalar o scanner de vulnerabilidade Terrapin no Linux, você pode seguir os passos abaixo:

Certifique-se de que você tem o Go instalado no seu sistema. Você pode verificar isso digitando go version no terminal.

go install github.com/RUB-NDS/Terrapin-Scanner@latest
  • Isso vai baixar, compilar e instalar o programa no seu sistema. O binário compilado vai ficar disponível em $GOBIN/Terrapin-Scanner. Se a variável de ambiente GOBIN não estiver definida, o Go vai usar $GOPATH/bin ou $HOME/go/bin, dependendo se a variável de ambiente GOPATH estiver definida ou não.
  • Para usar o scanner de vulnerabilidade Terrapin, você pode digitar o seguinte comando no terminal:
./Terrapin-Scanner --connect <host>:<port>
Para usar as versões já compiladas dos releases do GitHub do scanner de vulnerabilidade Terrapin, você pode seguir os passos abaixo:
  • Acesse a página do projeto no GitHub e clique na aba Releases.
  • Escolha a versão que você deseja baixar e clique no link do arquivo binário correspondente ao seu sistema operacional. Por exemplo, se você usa Linux, você pode clicar em Terrapin-Scanner-linux-amd64.
  • Salve o arquivo na pasta que você preferir e dê permissão de execução para ele. Por exemplo, se você salvou o arquivo na pasta Downloads, você pode digitar o seguinte comando no terminal:
chmod +x ~/Downloads/Terrapin-Scanner-linux-amd64

Para usar o scanner de vulnerabilidade Terrapin, você pode digitar o seguinte comando no terminal:

./Terrapin-Scanner --connect <host>:<port>
  • Isso vai escanear o servidor SSH disponível no host e na porta especificados. Se a porta não for especificada, o programa vai usar a porta 22 por padrão. O programa vai mostrar se o servidor é vulnerável ou não ao ataque Terrapin, e quais são os modos de criptografia suportados pelo servidor.
  • Para escanear um cliente SSH, você pode digitar o seguinte comando no terminal:
./Terrapin-Scanner --listen <address>:<port>

Isso vai fazer o programa escutar as conexões SSH na interface e na porta especificadas. Se a interface não for especificada, o programa vai usar 127.0.0.1 por padrão. Depois de executar o comando, você vai precisar conectar com o seu cliente SSH na porta especificada. O programa vai mostrar se o cliente é vulnerável ou não ao ataque Terrapin, e quais são os modos de criptografia suportados pelo cliente.

Conclusão

O OpenSSH é uma ferramenta amplamente usada para estabelecer conexões seguras entre sistemas remotos usando o protocolo SSH.

Essa é uma das piores falhas já encontradas no protocolo SSH e coloca em risco um dos softwares mais confiáveis no mundo da segurança e criptografia.

Deixe um comentário