Así hackean conexiones SSH explotando las vulnerabilidades del protocolo SSH

Los investigadores Fabian Bäumer, Marcus Brinkmann y Jörg Schwenk de la Universidad Ruhr de Bochum han publicado un estudio innovador titulado “Ataque Terrapin: Rompiendo la integridad del canal SSH mediante manipulación de números de secuencia”. El estudio revela una vulnerabilidad significativa en el protocolo Secure Shell (SSH), una piedra angular de la seguridad en Internet, particularmente en el inicio de sesión remoto en terminales y la transferencia de archivos. SSH , desarrollado en 1995, es un protocolo que proporciona acceso seguro a servicios de red y se utiliza ampliamente para tareas administrativas en más de 15 millones de servidores en todo el mundo. Garantiza la confidencialidad e integridad de los mensajes enviados entre un cliente y un servidor, evitando la manipulación, reproducción, inserción, eliminación y reordenación de mensajes.

EL ATAQUE TERRAPIN:

Los investigadores han identificado que el protocolo de paquetes binarios SSH, un componente clave de SSH, ya no es un canal seguro debido a nuevos algoritmos de cifrado y mitigaciones. Esta vulnerabilidad permite ataques de truncamiento de prefijos, donde los paquetes cifrados al comienzo del canal SSH se pueden eliminar sin ser detectados. Romper la integridad del canal SSH se refiere a comprometer la seguridad del canal de comunicación cifrado establecido por SSH. Esto podría implicar ataques que manipulen datos cifrados en tránsito, provocando cambios no autorizados o divulgación de información. Las técnicas pueden incluir la manipulación del número de secuencia o la explotación de vulnerabilidades en los modos de cifrado de SSH. Estas infracciones pueden permitir a los atacantes interceptar, descifrar o alterar datos confidenciales, socavando el objetivo principal de SSH de una comunicación segura, confidencial y protegida de la integridad entre clientes y servidores. Esta es una preocupación de seguridad importante, ya que SSH se usa ampliamente para el acceso remoto seguro y la transferencia de datos. Un análisis de Internet reveló que el 77% de los servidores SSH admiten un modo de cifrado explotable, y el 57% lo incluye como su opción preferida. Esta vulnerabilidad generalizada subraya la naturaleza crítica del Terrapin Attack.

ATAQUE DE MANIPULACIÓN DE NÚMEROS DE SECUENCIA

La manipulación del número de secuencia en el contexto de SSH (Secure Shell) se refiere a un tipo de ataque en el que un intruso interfiere con los números de secuencia en los encabezados de los paquetes utilizados en las comunicaciones SSH. En SSH, a cada paquete se le asigna un número de secuencia para garantizar la integridad de los datos y el orden adecuado de los paquetes. Al manipular estos números, un atacante podría potencialmente reordenar, reproducir o descartar paquetes. Esto puede provocar una variedad de problemas de seguridad, como la alteración de datos no autorizada o la divulgación de información, violando efectivamente la integridad del canal SSH. Este tipo de ataque aprovecha las vulnerabilidades en la forma en que SSH maneja y valida los números de secuencia, lo que potencialmente permite a un atacante interceptar o modificar comunicaciones seguras. Un ejemplo de manipulación de números de secuencia en SSH podría ser el siguiente: supongamos que un atacante puede interceptar paquetes SSH entre un cliente y servidor. Observan que cada paquete tiene un número de secuencia, lo que garantiza que los paquetes se procesen en el orden correcto. El atacante decide entonces manipular estos números. Por ejemplo, podrían aumentar el número de secuencia de un paquete, haciendo que el protocolo SSH crea que algunos paquetes se perdieron en tránsito. Como resultado, el servidor podría solicitar la retransmisión de estos paquetes o podría procesar los paquetes desordenados, lo que provocaría errores o comportamientos inesperados. Esta manipulación podría alterar o comprometer la integridad del canal de comunicación SSH.

La manipulación del número de secuencia en SSH se puede explotar de varias maneras. Un atacante podría:

  1. Reordenar paquetes : al alterar los números de secuencia, un atacante puede cambiar el orden en el que se procesan los paquetes. Esto podría dañar los datos o interrumpir la comunicación normal.
  2. Inyección de paquetes : la manipulación de números de secuencia podría permitir a un atacante inyectar paquetes maliciosos en el flujo de comunicación.
  3. Secuestro de sesión : al predecir o influir en los números de secuencia, un atacante podría apoderarse de una sesión SSH existente y obtener acceso no autorizado.
  4. Denegación de servicio (DoS) : la interrupción de la secuencia de paquetes podría provocar la terminación de la sesión o el agotamiento de los recursos, lo que provocaría una denegación de servicio.

Cada uno de estos métodos podría comprometer la confidencialidad, integridad y disponibilidad de los datos en una sesión SSH.

ATAQUE DE TRUNCAMIENTO DE PREFIJOS AL BPP

Un ataque de truncamiento de prefijo en el protocolo de paquetes binarios (BPP) en SSH implica que un atacante manipule paquetes SSH cifrados. El atacante puede eliminar algunos paquetes cifrados al inicio de un canal SSH, lo que puede provocar una mala interpretación o manipulación de los datos restantes. Este ataque tiene como objetivo la forma en que SSH maneja el procesamiento de paquetes y puede potencialmente comprometer la integridad y confidencialidad de los datos. La eficacia de un ataque de este tipo depende de los modos de cifrado específicos y del manejo de los números de secuencia y la integridad de los paquetes por parte de la implementación SSH. Un ejemplo de un ataque de truncamiento de prefijo en el protocolo de paquetes binarios (BPP) en SSH podría involucrar a un atacante que intercepta paquetes SSH y elimina la porción inicial de los datos de un paquete antes de que llegue al destino. Por ejemplo, supongamos que una sesión SSH está transfiriendo un archivo confidencial. El atacante podría truncar el comienzo de un paquete, alterando su contenido. Cuando este paquete modificado se procesa en el extremo receptor, debido a datos faltantes o alterados, podría provocar resultados incorrectos o inesperados, como corrupción de archivos o ejecución de comandos no deseados. Este ataque aprovecha las vulnerabilidades en la forma en que SSH procesa y valida la integridad de los paquetes.

Un atacante puede aprovechar un ataque de truncamiento de prefijo en el protocolo de paquetes binarios (BPP) en SSH para interrumpir el flujo de comunicación normal. Al truncar el comienzo de un paquete SSH cifrado, el atacante hace que el contenido restante del paquete se malinterprete en el extremo receptor. Esto puede provocar varios problemas, como ejecución incorrecta de comandos, corrupción de datos o incluso la creación de vulnerabilidades que el atacante puede explotar aún más para obtener acceso o información no autorizados. Este tipo de ataque tiene como objetivo la integridad y confiabilidad de la transmisión de datos en sesiones SSH.

ANÁLISIS DE MODOS DE CIFRADO

El análisis de los modos de cifrado en el contexto de SSH normalmente implica evaluar cómo los diferentes algoritmos y métodos criptográficos protegen la confidencialidad e integridad de los datos. Esto incluye evaluar la vulnerabilidad de cada modo a varios tipos de ataques, como la manipulación del número de secuencia o los ataques de truncamiento de prefijos. El análisis podría categorizar los modos de cifrado en función de su resistencia a estos ataques, identificando cuáles son más seguros y cuáles podrían tener vulnerabilidades potenciales. Comprender las fortalezas y debilidades de cada modo de cifrado es crucial para mantener la seguridad y confiabilidad de las comunicaciones SSH. En el contexto de los modos de cifrado SSH, se pueden clasificar según su vulnerabilidad a ciertos tipos de ataques:

  1. No vulnerable : los modos de cifrado de esta categoría se consideran seguros contra vectores de ataque conocidos, como la manipulación de números de secuencia o el truncamiento de prefijos. Mantienen la integridad y confidencialidad de los datos de manera efectiva.
  2. Vulnerable y perfectamente explotable : estos son modos que no sólo tienen vulnerabilidades sino que también pueden ser plenamente explotados por los atacantes. Esto significa que un atacante puede manipular o descifrar datos de forma fiable.
  3. Vulnerable pero no explotable : aquí, los modos de cifrado tienen vulnerabilidades teóricas, pero debido a diversas limitaciones (como la complejidad computacional o el incumplimiento de condiciones específicas), estas vulnerabilidades no se pueden explotar en la práctica.
  4. Vulnerable y probabilísticamente explotable : estos modos son vulnerables y la explotación es posible, pero depende de ciertos factores probabilísticos. Significa que un atacante tiene posibilidades de éxito, que no están garantizadas.

Cada categoría refleja el nivel de riesgo de seguridad y el potencial de compromiso de datos en las comunicaciones SSH.

ROMPIENDO LA NEGOCIACIÓN DE LA EXTENSIÓN SSH

Un “ataque de ruptura de negociación de extensión SSH” tiene como objetivo el proceso de negociación de extensión en SSH. Este proceso permite a los clientes y servidores SSH acordar características o capacidades adicionales después de que se establece la conexión inicial. En este tipo de ataque, un adversario manipula esta fase de negociación para degradar o desactivar ciertas características de seguridad. Por ejemplo, el atacante podría intervenir en esta fase para impedir el uso de algoritmos o extensiones más seguros, lo que obligaría a la sesión SSH a utilizar opciones menos seguras. Esto puede abrir la puerta a más vulnerabilidades y exploits, comprometiendo la seguridad de la sesión SSH. Un ejemplo de un ataque de ruptura de negociación de extensión SSH podría ser cuando un atacante, ubicado entre el cliente SSH y el servidor (man-in-the-middle), intercepta los mensajes de negociación de extensión. Supongamos que el cliente admite una extensión de cifrado avanzada y segura y que el servidor es compatible con ella. El atacante podría alterar o bloquear estos mensajes de negociación para que ambas partes recurran a un método de cifrado predeterminado menos seguro. El atacante podría aprovechar este estado de seguridad degradado para comprometer los datos transmitidos en la sesión SSH.

ATAQUE DE DEGRADACIÓN DE EXTENSIÓN

Un ataque de degradación de extensión en SSH implica que un atacante degrada deliberadamente la sesión SSH para utilizar extensiones o algoritmos menos seguros. Por ejemplo, durante el protocolo de enlace SSH, si tanto el cliente como el servidor admiten una extensión de alta seguridad, el atacante, a través de una posición de intermediario, podría interceptar y alterar estos mensajes de negociación. El cliente y el servidor, creyendo que el otro no admite la opción de alta seguridad, recurrirían a una opción predeterminada menos segura. Esta degradación deja la sesión SSH vulnerable a mayores ataques que no serían posibles con extensiones más seguras. Un ejemplo de un ataque de degradación de extensión: imagine que un cliente y un servidor SSH admiten un algoritmo de cifrado de alta seguridad. Un atacante, que puede interceptar la comunicación, altera los mensajes de protocolo de enlace para indicar falsamente que el algoritmo de alta seguridad no es compatible ni con el cliente ni con el servidor. En consecuencia, tanto el cliente como el servidor utilizan de forma predeterminada un método de cifrado menos seguro. Esta degradación hace que la sesión SSH sea vulnerable a otros tipos de ataques, como escuchas o manipulación de datos, lo que no sería tan factible con un cifrado más seguro.

ATAQUE DE NEGOCIACIÓN DE EXTENSIÓN FALSO

Un ataque de negociación de extensiones fraudulentas en SSH implica que un atacante introduce o negocia extensiones maliciosas o no compatibles durante el establecimiento de la sesión SSH. Por ejemplo, un atacante podría interceptar el proceso de protocolo de enlace SSH e insertar una negociación para una extensión que el servidor en realidad no admite o que introduce una vulnerabilidad. Esto puede provocar diversos problemas de seguridad, como acceso no autorizado o compromiso de datos, especialmente si el servidor o el cliente no valida adecuadamente las extensiones que se están negociando. Un ejemplo de un ataque de negociación de extensiones no autorizadas en SSH podría ser cuando un atacante manipula el proceso de negociación de extensiones SSH para introducir una extensión no autorizada. Por ejemplo, durante el establecimiento de una sesión SSH, el atacante, posicionado como intermediario, inyecta un mensaje que sugiere el uso de una extensión personalizada e insegura. El cliente o servidor, al no verificar adecuadamente la legitimidad de esta extensión, la acepta. Esto podría permitir al atacante eludir ciertos mecanismos de seguridad o explotar vulnerabilidades introducidas por la extensión no autorizada, comprometiendo la seguridad de la sesión SSH.

Implicaciones en el mundo real: el estudio demuestra varias aplicaciones prácticas de este ataque. Puede interrumpir por completo la negociación de extensiones SSH, permitiendo a los atacantes degradar los algoritmos de clave pública para la autenticación de usuarios o desactivar las contramedidas contra los ataques de sincronización de pulsaciones de teclas introducidos en OpenSSH 9.5. También se identificó una falla de implementación en AsyncSSH que, combinada con el truncamiento de prefijos, permite a los atacantes redirigir el inicio de sesión de la víctima a un shell controlado por el atacante.

ATAQUE DE SESIÓN FALSO

Un ataque de sesión fraudulenta en SSH se refiere a una situación en la que un atacante inicia una sesión SSH no autorizada explotando vulnerabilidades en el servidor o cliente SSH. Por ejemplo, el atacante podría explotar una falla en el proceso de autenticación del servidor, lo que le permitiría establecer una sesión sin las credenciales adecuadas. Esto podría permitir al atacante obtener acceso no autorizado al sistema, ejecutar comandos o acceder a datos confidenciales, todo ello apareciendo como un usuario legítimo. Este tipo de ataque representa una amenaza importante para la seguridad de los sistemas basados ​​en SSH. Un ejemplo de un ataque de sesión fraudulento en SSH podría implicar que un atacante aproveche una vulnerabilidad en la configuración del servidor SSH. Supongamos que un servidor está configurado para permitir la autenticación basada en contraseña y tiene una contraseña débil o predeterminada. Un atacante podría utilizar esto para obtener acceso probando repetidamente contraseñas comunes hasta que lo consiga. Una vez que obtienen acceso, establecen una sesión SSH no autorizada, lo que les permite ejecutar comandos, acceder a datos confidenciales o incluso crear puertas traseras para acceso futuro, todo mientras aparecen como un usuario legítimo en la red.

MITIGACIÓN:

El estudio identifica dos causas principales de estos ataques: el protocolo de enlace SSH que admite mensajes opcionales no autenticados y la falla al restablecer los números de secuencia de los mensajes cuando el cifrado está habilitado. Los investigadores proponen cambios efectivos y compatibles con versiones anteriores de SSH para mitigar estos ataques.

Los investigadores sugieren las siguientes contramedidas para abordar las vulnerabilidades en SSH:

  1. Aleatorización de números de secuencia : implemente la aleatorización de números de secuencia al inicio de cada nueva conexión SSH. Esto hace que a un atacante le resulte más difícil predecir o manipular números de secuencia.
  2. Campo de longitud cifrado : cifra el campo de longitud de los paquetes SSH. Esto evita que un atacante infiera la longitud de la carga útil, lo cual es crucial para ciertos tipos de ataques.
  3. Procesamiento de paquetes en tiempo constante : procese todos los paquetes en tiempo constante para evitar la fuga de información del canal lateral, que puede usarse en ciertos vectores de ataque.
  4. Eliminar algoritmos MAC vulnerables : suspenda el uso de algoritmos MAC que sean vulnerables a ataques de truncamiento, como HMAC-MD5-96 y HMAC-SHA1-96.
  5. Cambio de clave después de la pérdida de paquetes : activa un proceso de cambio de clave si se detecta pérdida de paquetes, lo que podría ser indicativo de manipulación o de un ataque activo.
  6. Limitar la frecuencia de cambio de claves : implemente límites en la frecuencia de cambio de claves para evitar ataques de denegación de servicio dirigidos al proceso de cambio de claves.
  7. Comportamiento mejorado del cliente y del servidor : los clientes y servidores deberían ser más sólidos en el manejo de errores y anomalías durante las fases de conexión y protocolo de enlace SSH.

Estas contramedidas tienen como objetivo mejorar la seguridad y la integridad de las comunicaciones SSH abordando las vulnerabilidades específicas y los vectores de ataque identificados en la investigación. El ataque Terrapin representa un desafío importante para la seguridad de SSH, un protocolo que ha seguido siendo relevante durante más de 25 años sin un rediseño importante. Este descubrimiento exige atención y acción inmediata por parte de organizaciones e individuos que confían en SSH para comunicaciones seguras.