CVE-2023-25136 Vulnerabilidad de memoria de doble liberación de autenticación

El pasado mes de febrero, OpenSSH lanzó la versión 9.2p1 para su producto, que contiene una corrección a la vulnerabilidad de memoria de doble liberación de autenticación con CVE-2023-25136, descubierta en una versión anterior (OpenSSH 9.1). Dicha vulnerabilidad permite ataques de denegación de servicio (DOS) y ejecución remota de código (RCE).

NVD NIST le dio un CVSS de 9.8 y la consideró de baja complejidad de explotación, por su lado, OpenSSH en sus notas de lanzamiento comentó que la vulnerabilidad “no cree que sea explotable, ya que ocurre en el proceso de autorización previa sin privilegios”.

¿Qué es OpenSSH? Herramienta de conectividad para el inicio de sesión remota mediante el protocolo SSH. Desarrollada como una implementación de código abierto y de manera gratuita, compatible con una amplia gama de plataformas, incluidas Linux, Windows y MacOS. Convirtiéndose en una herramienta estándar para el acceso remoto seguro, debido a que proporciona una conexión segura y cifrada entre dos host y transferencia segura de archivos.

La vulnerabilidad CVE-2023-25136 memoria de doble liberación de autenticación, se produce cuando se invoca a la variable free() más de una vez en la misma dirección de memoria como argumento, provocando una pérdida de memoria y corrompiendo la estructura de datos de la administración del programa permitiendo a un usuario malintencionado escribir valores arbitrarios en el espacio de memoria generando una shell interactiva con permisos elevados.

PRUEBA DE CONCEPTO (PoC)

La vulnerabilidad se produce principalmente en la función compat_kex_prosal que realiza el intercambio de claves y el soporte a clientes con versiones anteriores con la bandera SSH_OLD_DHGEX. En este caso free() y el campo kex_algorithms del objeto options, que además regresa el mismo puntero. Después, kex_algorithms devuelve la macro ASSEMBLE para ensamblar una lista de algoritmos que volverá a liberarlo, provocando una doble liberación.

El problema se genera en conexiones SSH entrantes de un cliente de versión antigua, al llamar la función writev(). Por lo que para esta prueba, el cliente qué activa la función compat_kex_prosal en sshd es PuTTY_Release_0.64.

Al generar una conexión remota desde el cliente PuTTY 0.64 al servidor OpenSSH vulnerable nos devuelve el siguiente error:

Este error se genera debido a que los algoritmos de las claves de intercambio del cliente obsoleto no son compatibles con la versión de OpenSSH, por lo que para corregir, editamos el archivo sshd_config agregando la siguiente línea:

Después de reiniciar el servidor SSH y reintentar, devuelve el siguiente error:

Volvemos agregar otra línea de configuración al archivo sshd_config

Después de iniciar sesión, cambiaremos el banner del cliente ssh para que apareciera como un cliente «PuTTY«, lo que obligó a habilitar el bit de compatibilidad «SSH_OLD_DHGEX» en el demonio ssh (sshd):

Esta conexión desencadenó inmediatamente un doble libre en los procesos sshd, generando la siguiente salida.

Si bien, la vulnerabilidad genera una gran preocupación, es difícil desarrollar una explotación de manera remota debido a que la única condición para activarla es conectarse con un cliente antiguo. Aunque dado al proceso al que apunta es hacia una instancia creada para esa conexión, se puede seguir intentando las veces que sean hasta que se bloquee la función ssh principal.

RECOMENDACIONES

Verificar la versión de OpenSSH que se está ejecutando en su equipo. Ejecute el comando ssh -V para comprobar la versión.

Si la versión de OpenSSH es 9.1 o menor, recomendamos a todos nuestros clientes y usuarios actualizar OpenSSH a la última versión con el fin de mitigar posibles riesgos de seguridad.

En conclusión, la importancia de actualizar los sistemas de manera constante ayudará a evitar vulnerabilidades y mejorará la funcionalidad de este. En Global Cybersec contamos con especialistas en seguridad informática certificados, que otorgan soporte y gestión en vulnerabilidades, alineando nuestros servicios a las necesidades del negocio de nuestros clientes. “Impulsamos la conciencia de la importancia de las actualizaciones de seguridad”.

De igual manera, contamos con boletines informativos, blogs y las últimas noticias del mundo de la ciberseguridad con la finalidad de enriquecer a nuestros clientes y brindarles soluciones. 

REFERENCIAS

OpenSSH. (s. f.). https://www.openssh.com/

NLT SECURE. (2023, 10 febrero). Vulnerabilidad en OpenSSH server (sshd) – CVE-2023-25136. https://es.linkedin.com/pulse/vulnerabilidad-en-openssh-server-sshd-cve-2023-25136-nltsecure

Yair Mizrahi, Senior Security Researcher. (2023, 16 marzo). OpenSSH Pre-Auth Double Free CVE-2023-25136 – Writeup and Proof-of-Concept. JFrog. https://jfrog.com/blog/openssh-pre-auth-double-free-cve-2023-25136-writeup-and-proof-of-concept/oss-sec: double-free vulnerability in OpenSSH server 9.1. (s. f.). https://seclists.org/oss-sec/2023/q1/75

Doubly freeing memory | OWASP Foundation. (s. f.). https://owasp.org/www-community/vulnerabilities/Doubly_freeing_memory

Abbasi, S., & Abbasi, S. (2023, 13 febrero). CVE-2023-25136: Pre-Auth Double Free Vulnerability in OpenSSH Server 9.1. Qualys Security Blog. https://blog.qualys.com/vulnerabilities-threat-research/2023/02/03/cve-2023-25136-pre-auth-double-free-vulnerability-in-openssh-server-9-1

Kl, A. (2023, 28 marzo). How to Fix CVE-2023-25136- A Pre-Authentication Double Free Vulnerability in OpenSSH? The Sec Master. https://thesecmaster.com/how-to-fix-cve-2023-25136-a-pre-authentication-double-free-vulnerability-in-openssh/

<em>Isaac González</em>
Isaac González

Líder Blue Team en Global Cybersec