Conteúdo:
- O que é OpenSSH?
- Quem Descobriu a Falha Terrapin?
- Como funciona o Ataque?
- Quais os Perigos?
- Como se Proteger do Ataque Terrapin?
- Protegendo Servidores SSH
- Protegendo Clientes SSH
- Ferramenta para checar a vulnerabilidade
- Conclusão
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.