Ya está disponible una prueba de concepto pública para CVE-2026-55200, una vulnerabilidad crítica en libssh2 que permite que un servidor SSH malicioso o comprometido provoque una corrupción de memoria en el cliente que se conecta, con posible ejecución de código. No se requieren credenciales ni interacción del usuario. El fallo afecta a todas las versiones hasta la 1.11.1 inclusive y tiene una puntuación CVSS 4.0 de 9.2.
libssh2 es una biblioteca SSH de lado cliente, no un servidor. Esta distinción es importante. Está integrada en curl, Git, PHP, agentes de respaldo, actualizadores de firmware y muchos otros dispositivos. Cualquier software que la enlace y se conecte a un punto final SSH no confiable es un objetivo potencial. Muchas de esas copias están enlazadas estáticamente, por lo que una actualización del paquete de la distribución no las afectará y es posible que ni siquiera se sepa que están allí.
Cómo funciona el fallo
El fallo se encuentra en la función ssh2_transport_read() en transport.c, que analiza los paquetes SSH entrantes durante el handshake. Lee el campo packet_length controlado por el atacante y solo rechaza valores por debajo de 1, sin imponer un límite superior. El cálculo del tamaño suma packet_length a un par de valores pequeños usando aritmética de 32 bits, por lo que una longitud de 0xffffffff se envuelve a un número muy pequeño. libssh2 asigna un búfer con ese tamaño pequeño, pero luego escribe el paquete completo de gran tamaño en él, provocando una escritura fuera de los límites en el montón. La corrección agrega la verificación faltante, rechazando cualquier packet_length superior a LIBSSH2_PACKET_MAXPAYLOAD antes de realizar los cálculos.
No es la primera vez que libssh2 tropieza con algo similar. En 2019, lanzó la versión 1.8.1 para corregir un lote de nueve fallos encabezados por CVE-2019-3855, un desbordamiento de enteros casi idéntico en su transporte de lectura que también permitía que un servidor malicioso ejecutara código en el cliente conectado. Siete años después, la misma clase de fallo ha vuelto en el mismo código.
El investigador de seguridad Tristan Madani informó del problema. Los mantenedores fusionaron el parche a través del pull request #2052 el 12 de junio. VulnCheck publicó el CVE el 17 de junio. Se ha publicado una prueba de concepto pública en 'exploitarium', un archivo de GitHub de código de exploit cuyo autor afirma que las entradas se publicaron sin informe previo. El archivo contiene un andamio de SSH verificado localmente y un arnés de RCE local controlado para el fallo de libssh2, no un exploit remoto llave en mano. La ejecución confiable de código contra una aplicación real aún dependería del binario objetivo, el comportamiento del asignador, las mitigaciones y la forma en que el software integra libssh2.
Qué hacer
Aún no hay una versión corregida de libssh2. El parche está en la fuente principal y se está preparando un lanzamiento etiquetado, por lo que las distribuciones de Linux y los proyectos descendentes lo están adaptando por su cuenta; por ejemplo, Debian ya tiene una compilación reparada en testing. NHS England Digital ha emitido un aviso instando a las organizaciones afectadas a actualizar.
- Hacer un inventario de todo lo que enlace libssh2, incluyendo copias estáticas o incluidas que los gestores de paquetes no detectarán.
- Aplicar una compilación que incluya el commit 97acf3d, ya sea un backport de la distribución o una compilación de fuente parcheada, y estar atentos al canal de avisos del proveedor para conocer el estado del lanzamiento.
- Hasta que se aplique el parche, restringir las conexiones SSH salientes a servidores de confianza y verificar las claves de host, dando prioridad a los clientes que se conectan a servidores SSH externos o resuelven hosts mediante nombres que un atacante podría redirigir. Vigilar anomalías de paquetes de gran tamaño y bloqueos inexplicables del cliente.
También parchear el resto del lote: CVE-2026-55199 (CVSS 8.2), una denegación de servicio que atrapa un cliente en un bucle de CPU mediante un recuento de extensiones falso, y CVE-2025-15661 (CVSS 8.3), una sobrelectura de montón en SFTP.
El problema central es un fallo de corrupción de memoria previo a la autenticación en un código que se incluye en más clientes y dispositivos de los que nadie ha mapeado completamente. Las preguntas abiertas son qué tan rápido alguien convierte el arnés local en un exploit remoto confiable y cuántas copias incluidas permanecen vulnerables porque nadie recuerda que incluyeron libssh2.