Vulnerabilidad en PuTTY que permite recuperar la clave privada de un usuario

PuTTY, un cliente SSH popular en la plataforma Windows, tiene una vulnerabilidad peligrosa (CVE-2024-31497) que permite recrear la clave privada del usuario utilizando el algoritmo ECDSA de curva elíptica NIST P-521 (ecdsa-sha2-nistp521). Para seleccionar una clave privada, basta con analizar aproximadamente 60 firmas digitales generadas por la clave problemática.

La vulnerabilidad aparece a partir de la versión PuTTY 0.68 y también afecta a productos que incluyen versiones vulnerables de PuTTY, por ejemplo, FileZilla (3.24.1 - 3.66.5), WinSCP (5.9.5 - 6.3.2), TortoiseGit (2.4.0.2 - 2.15.0) y TortoiseSVN (1.10.0 - 1.14.6). El problema se solucionó en las actualizaciones de PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 y TortoiseGit 2.15.0.1. Después de instalar la actualización, se recomienda a los usuarios que generen nuevas claves y eliminen las claves públicas antiguas de sus archivos autorizados_keys.

La vulnerabilidad es causada por el descuido de los desarrolladores, quienes utilizaron un vector de inicialización (nonce) basado en una secuencia aleatoria de 521 bits para generar una clave de 512 bits, probablemente creyendo que una entropía de 512 bits sería suficiente y los 9 bits restantes no son de importancia fundamental. Como resultado, en todas las claves privadas creadas en PuTTY utilizando el algoritmo ecdsa-sha2-nistp521, los primeros 9 bits del vector de inicialización siempre tomaron valores cero.

Para ECDSA y DSA, la calidad del generador de números pseudoaleatorios y la cobertura completa del parámetro utilizado en el cálculo del módulo por datos aleatorios es de fundamental importancia, ya que la determinación de incluso unos pocos bits con información sobre el vector de inicialización es suficiente para transportar realizar un ataque para recuperar secuencialmente toda la clave privada. Para recuperar con éxito una clave, basta con tener una clave pública y analizar varias docenas de firmas digitales generadas a partir de la clave problemática en busca de datos conocidos por el atacante. El ataque se reduce a resolver el problema HNP (Problema de los números ocultos).

Las firmas digitales necesarias se pueden obtener, por ejemplo, cuando el usuario se conecta al servidor SSH del atacante o a un servidor Git que utiliza SSH como transporte. Las firmas necesarias para el ataque también se pueden encontrar si la clave se usó para verificar datos arbitrarios, por ejemplo, git commits cuando se usa el agente Pageant SSH para redirigir el tráfico al host del desarrollador. Obtener los datos necesarios para recuperar la clave durante un ataque MITM es imposible, ya que las firmas en SSH no se transmiten en texto claro.

Cabe señalar que en PuTTY se utilizó un uso similar de vectores de inicialización incompletos para otros tipos de curvas elípticas, pero para algoritmos distintos de ECDSA P-521, las fugas de información resultantes no son suficientes para implementar un ataque de recuperación de clave que funcione. Las claves ECDSA de otros tamaños y las claves Ed25519 no son susceptibles de ataque.

Fuente: opennet.ru

Añadir un comentario