Um grupo de pesquisadores da Universidade da Califórnia em San Diego demonstrou a possibilidade de recriar chaves RSA privadas de servidores SSH, utilizando a análise passiva do tráfego SSH. O ataque pode ser realizado em servidores onde, devido a circunstâncias ou ações de um atacante, ocorrem falhas durante o cálculo da assinatura digital ao estabelecer uma conexão SSH. As falhas podem ser tanto de software (execução incorreta de operações matemáticas, corrupção de memória), quanto de hardware (erros no funcionamento da NVRAM e DRAM ou falhas devido a interrupções de energia).
Uma das opções para induzir falhas pode ser ataques da classe RowHammer, que permitem, entre outras coisas, distorcer o conteúdo de bits de memória específicos por meio de leituras cíclicas intensivas de dados em células de memória adjacentes, seja remotamente ou ao processar código JavaScript no navegador. Outra alternativa para provocar falhas pode ser a exploração de vulnerabilidades que levam a estouros de buffer e corrupção de dados com chaves na memória.
O estudo publicado mostra que, ao usar assinaturas digitais em SSH baseadas no algoritmo RSA, ataques para recriar chaves privadas RSA usando o método Lattice (Fault Attack) são aplicáveis nas ocorrências de falhas de software ou hardware durante o processo de cálculo da assinatura. A essência do método é que, comparando assinaturas digitais RSA corretas e falhadas, é possível determinar o maior divisor comum para um dos números primos usados na formação da chave.
A criptografia RSA baseia-se na operação de exponenciação modular de um grande número. A chave pública contém o módulo e o expoente. O módulo é formado a partir de dois números primos aleatórios, que são conhecidos apenas pelo proprietário da chave privada. O ataque pode ser aplicado a implementações de RSA que utilizam o Teorema Chinês dos Restos e esquemas de preenchimento determinado, como PKCS#1 v1.5.
Para realizar um ataque, é suficiente o monitoramento passivo de conexões legítimas a um servidor SSH até identificar, no tráfego, uma assinatura digital comprometida, que pode ser usada como fonte de informação para recriar a chave RSA privada. Após a recriação da chave RSA do host, o atacante pode, durante um ataque MITM, redirecionar silenciosamente os pedidos para um host falso que se passa por um servidor SSH comprometido e interceptar os dados transmitidos para este. servidor de dados.
Como resultado do estudo de uma coleção de dados de rede interceptados, incluindo aproximadamente 5,2 bilhões de registros relacionados ao uso do protocolo SSH, os pesquisadores identificaram cerca de 3,2 bilhões de chaves de host abertas e assinaturas digitais utilizadas durante a negociação da sessão SSH. Destas, 1,2 bilhão (39,1%) foram geradas usando o algoritmo RSA. Em 593.671 casos (0,048%), a assinatura RSA estava corrompida e não passava na verificação. Para 4.962 assinaturas corrompidas, foi possível aplicar o método de fatorização de Lattice para determinar a chave privada a partir da chave pública conhecida, o que permitiu, em última análise, recriar 189 pares únicos de chaves RSA (em muitos casos, as mesmas chaves e dispositivos falhos foram usados para gerar diferentes assinaturas comprometidas). A recriação das chaves levou cerca de 26 horas de tempo de processamento.

O problema afeta apenas implementações específicas do protocolo SSH, utilizadas principalmente em dispositivos embarcados. Como exemplos de dispositivos com implementações problemáticas do SSH, foram mencionados produtos da Zyxel, Cisco, Mocana e Hillstone Networks. O OpenSSH não está sujeito ao problema, pois utiliza a biblioteca OpenSSL (ou LibreSSL) para gerar chaves, na qual a proteção contra ataques baseados em análise de falhas (Fault Attack) existe desde 2001. Além disso, no OpenSSH, o esquema de assinaturas digitais ssh-rsa (baseado em sha1) foi declarado obsoleto e desativado na versão 8.8 em 2020 (o suporte para os esquemas rsa-sha2-256 e rsa-sha2-512 continua). O ataque pode potencialmente ser aplicável também ao protocolo IPsec, mas os pesquisadores não tiveram dados experimentais suficientes para confirmar tal ataque na prática.
Fonte: opennet.ru
