Vulnerabilidade no PuTTY que permite a recuperação da chave privada de um usuário

PuTTY, um cliente SSH popular na plataforma Windows, tem uma vulnerabilidade perigosa (CVE-2024-31497) que permite que a chave privada do usuário seja recriada usando o algoritmo NIST P-521 Elliptic Curve ECDSA (ecdsa-sha2-nistp521). Para selecionar uma chave privada, basta analisar aproximadamente 60 assinaturas digitais geradas pela chave problemática.

A vulnerabilidade aparece a partir da versão PuTTY 0.68 e também afeta produtos que incluem versões vulneráveis ​​do PuTTY, por exemplo, FileZilla (3.24.1 - 3.66.5), WinSCP (5.9.5 - 6.3.2), TortoiseGit (2.4.0.2 - 2.15.0) e TortoiseSVN (1.10.0 - 1.14.6). O problema foi corrigido nas atualizações PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 e TortoiseGit 2.15.0.1. Depois de instalar a atualização, os usuários são aconselhados a gerar novas chaves e remover chaves públicas antigas de seus arquivos autorizados_keys.

A vulnerabilidade é causada pelo descuido dos desenvolvedores, que utilizaram um vetor de inicialização (nonce) baseado em uma sequência aleatória de 521 bits para gerar uma chave de 512 bits, provavelmente acreditando que a entropia de 512 bits seria suficiente e os 9 bits restantes não são de fundamental importância. Como resultado, em todas as chaves privadas criadas no PuTTY usando o algoritmo ecdsa-sha2-nistp521, os primeiros 9 bits do vetor de inicialização sempre assumiram valores zero.

Para ECDSA e DSA, a qualidade do gerador de números pseudoaleatórios e a cobertura completa do parâmetro utilizado no cálculo do módulo por dados aleatórios é de fundamental importância, pois a determinação de até mesmo alguns bits com informações sobre o vetor de inicialização é suficiente para transportar realizar um ataque para recuperar sequencialmente toda a chave privada. Para recuperar uma chave com sucesso, basta ter uma chave pública e analisar várias dezenas de assinaturas digitais geradas a partir da chave problemática para dados conhecidos do invasor. O ataque se resume a resolver o problema do HNP (Hidden Number Problem).

As assinaturas digitais necessárias podem ser obtidas, por exemplo, quando o usuário se conecta ao servidor SSH do invasor ou a um servidor Git que utiliza SSH como transporte. As assinaturas necessárias para o ataque também podem ser descobertas se a chave foi usada para verificar dados arbitrários, por exemplo, git commits ao usar o agente Pageant SSH para redirecionar o tráfego para o host do desenvolvedor. A obtenção dos dados necessários para recuperar a chave durante um ataque MITM é impossível, uma vez que as assinaturas em SSH não são transmitidas em texto não criptografado.

Observa-se que o uso semelhante de vetores de inicialização incompletos foi usado no PuTTY para outros tipos de curvas elípticas, mas para algoritmos diferentes do ECDSA P-521, os vazamentos de informações resultantes não são suficientes para implementar um ataque de recuperação de chave funcional. Chaves ECDSA de outros tamanhos e chaves Ed25519 não são suscetíveis a ataques.

Fonte: opennet.ru

Adicionar um comentário