Fallos de seguridad en la biblioteca SSH de Rust 'russh' exponen los sistemas a agotamiento de recursos
Dos vulnerabilidades que afectan a las versiones de la biblioteca Eugeny russh hasta la 0.64.x permiten ataques de consumo de recursos mediante rutinas de transmisión de canales y del servidor de agentes.
The Global Wire Newsroom ·
Link preview · horizonglobalnews.com
Fallos de seguridad en la biblioteca SSH de Rust 'russh' exponen los sistemas a agotamiento de recursos
Dos vulnerabilidades que afectan a las versiones de la biblioteca Eugeny russh hasta la 0.64.x permiten ataques de consumo de recursos mediante rutinas de transmisión de canales y del servidor de agentes.
Este artículo fue traducido automáticamente por la IA de nuestra redacción desde el original en inglés. Leer en inglés
Se han identificado dos vulnerabilidades de seguridad distintas en la implementación de código abierto en Rust del protocolo Secure Shell conocida como Eugeny russh, las cuales afectan a todas las versiones del software hasta la línea de lanzamiento 0.64.x. Según los registros de divulgación publicados por la base de datos de vulnerabilidades VulDB el 27 de octubre de 2026, ambos fallos propician condiciones de consumo de recursos que pueden degradar o interrumpir los servicios del host. El primer problema, rastreado como CVE-2026-116774, reside en las rutinas de análisis de canales de la biblioteca durante el sondeo de transmisión. La segunda vulnerabilidad, registrada como CVE-2026-116696, afecta al módulo interno del servidor del agente de autenticación. Ambas entradas han sido clasificadas formalmente por VulDB como defectos problemáticos de consumo de recursos.
## Key facts
- Las entradas de seguimiento de seguridad CVE-2026-116774 y CVE-2026-116696 fueron catalogadas el 27 de octubre de 2026, documentando fallos en los lanzamientos de Eugeny russh hasta la versión 0.64.x. - CVE-2026-116774 afecta a la función ChannelTx::poll_writable dentro de russh/src/channels/io/tx.rs mediante la manipulación del parámetro maximum_packet_size. - CVE-2026-116696 impacta en el subsistema de autenticación ubicado en russh/src/keys/agent/server.rs dentro de la función russh::keys::agent::server::serve. - Ambas vulnerabilidades están clasificadas como errores problemáticos de consumo de recursos que desencadenan el agotamiento descontrolado de los activos del sistema. - El software afectado es una implementación clave en Rust puro del protocolo SSH-2 utilizada para construir infraestructura de cliente y servidor.
## What happened
Según los avisos de seguridad publicados por VulDB, analistas de seguridad registraron dos entradas de vulnerabilidad independientes relativas a la base de código de Eugeny russh el 27 de octubre de 2026. Los avisos describen vulnerabilidades que comparten una clasificación de impacto común —consumo de recursos—, aunque se originan en capas funcionales completamente distintas de la biblioteca del protocolo.
El primer aviso, designado como CVE-2026-116774, aísla una vulnerabilidad dentro del componente Channel Open Parsing de la biblioteca. En concreto, el fallo se localiza en el archivo fuente russh/src/channels/io/tx.rs dentro de la función ChannelTx::poll_writable. De acuerdo con VulDB, un atacante puede manipular el argumento maximum_packet_size durante las operaciones de gestión de canales. Esta manipulación interfiere con la programación prevista de la transmisión y da lugar a un consumo excesivo de recursos, lo que potencialmente puede bloquear o sobrecargar el proceso que realiza la llamada.
El segundo aviso, correspondiente a CVE-2026-116696, aborda un fallo en el componente de gestión del agente de autenticación de la biblioteca. El código vulnerable se encuentra en russh/src/keys/agent/server.rs dentro de la ruta de ejecución serve, identificada como russh::keys::agent::server::serve. VulDB informa que la manipulación dirigida de esta rutina del servidor provoca un consumo anómalo de recursos, sometiendo de manera similar a tensión la infraestructura de cómputo o memoria sin requerir una vulneración total de los límites criptográficos.
Ambos registros señalan como rango afectado las versiones del software hasta la serie 0.64.x inclusive, lo que indica que las compilaciones de producción actuales e históricas que dependen de esas ramas heredan los comportamientos estructurales subyacentes descritos en los informes.
## Why it matters
El protocolo Secure Shell (SSH), estandarizado principalmente bajo la RFC 4251 del Internet Engineering Task Force (IETF) y especificaciones afines, constituye la columna vertebral administrativa de la infraestructura moderna en la nube, la ejecución remota automatizada y la orquestación segura de sistemas. Cuando una biblioteca SSH sufre fallos de agotamiento de recursos, las consecuencias amenazan directamente la disponibilidad de los servicios de infraestructura.
En los protocolos de red, las vulnerabilidades de consumo de recursos suelen manifestarse como condiciones de denegación de servicio. Cuando un servidor o demonio cliente SSH procesa tramas de red, debe asignar búferes de memoria, gestionar colas de transmisión y mantener máquinas de estado para cada sesión activa. En CVE-2026-116774, dado que el problema involucra el parámetro maximum_packet_size en la rutina ChannelTx::poll_writable, existe la posibilidad de que un par externo fuerce bucles de almacenamiento en búfer desequilibrados o ciclos de sondeo repetidos. Si un par especifica tamaños de paquete anómalos o que distorsionan los límites durante la negociación del canal, la lógica de transmisión asíncrona puede consumir ciclos de CPU excesivos intentando conciliar los límites de paquete solicitados con el espacio de ventana disponible, o bien asignar búferes desmedidos en el montículo (heap), agotando la memoria del host.
De forma análoga, CVE-2026-116696 tiene como objetivo el mecanismo del servidor del agente. El protocolo del agente SSH, utilizado comúnmente para mantener claves privadas en memoria y responder a solicitudes de firma a través de conexiones reenviadas, opera como un demonio de confianza local o reenviado. Una vulnerabilidad de consumo de recursos dentro del bucle serve implica que cualquier cliente o proxy de reenvío con capacidad de enviar solicitudes a la interfaz del agente podría inducir el agotamiento de subprocesos, fugas de memoria o iteraciones de bucle sin restricciones. Esto deja al agente sin respuesta, bloqueando sesiones legítimas de administración y deteniendo canalizaciones de integración continua que dependen del reenvío de agentes para obtener credenciales.
Dado que Rust se adopta ampliamente por su seguridad de memoria y predictibilidad, los desarrolladores asumen con frecuencia que los crates de Rust están inherentemente protegidos contra vulnerabilidades de bajo nivel. Si bien Rust elimina la corrupción de memoria espacial como los desbordamientos de búfer y las condiciones de uso tras liberación (use-after-free) en el código seguro, no suprime automáticamente los ataques de complejidad algorítmica, los bloqueos mutuos de máquinas de estado ni el procesamiento de parámetros sin validar que provocan denegaciones de servicio. Estas revelaciones subrayan que los defectos lógicos de análisis sintáctico continúan siendo una amenaza operativa en el software de sistemas moderno.
## The background
El crate russh se originó como una bifurcación de Thrussh, una temprana implementación en Rust puro de un marco de trabajo de cliente y servidor SSH-2. Con el tiempo, bajo la tutela del mantenedor Eugeny Pankov —ampliamente conocido por desarrollar el emulador de terminal multiplataforma Tabby—, la biblioteca creció hasta convertirse en una de las implementaciones nativas en Rust más destacadas del protocolo SSH. Construida sobre el entorno de ejecución asíncrono Tokio, russh ofrece comunicaciones de red no bloqueantes y basadas en futuros, diseñadas para gestionar entornos de alta concurrencia sin generar subprocesos dedicados del sistema operativo para cada conexión.
Dentro de la arquitectura SSH-2, la comunicación se organiza en torno a canales. Múltiples canales lógicos, tales como shells interactivos, túneles directos de reenvío TCP y canales de reenvío de agentes, se multiplexan sobre una única sesión de transporte criptográfico autenticada. Bajo la RFC 4254, cada extremo de un canal regula los datos entrantes anunciando un tamaño máximo de paquete y un tamaño de ventana inicial. La ventana define cuántos bytes puede enviar el emisor remoto antes de esperar un ajuste, mientras que maximum_packet_size especifica la mayor carga útil de datos individual permitida en un único paquete.
La ruta de transmisión en entornos asíncronos como Tokio se apoya en el sondeo de disponibilidad (readiness polling). El método poll_writable comprueba si el transporte subyacente puede aceptar nuevos datos sin bloquear el subproceso del entorno de ejecución. En russh/src/channels/io/tx.rs, la estructura ChannelTx orquesta el empaquetado de datos salientes. Si la biblioteca no aplica límites estrictos de coherencia o comprobaciones matemáticas de límites sobre maximum_packet_size, un adversario o un par con formato incorrecto puede inducir casos límite en los que el entorno registre constantemente disponibilidad pero no logre avance alguno, o por el contrario, divida los datos en millones de micro-paquetes, saturando la planificación de la CPU.
En el ámbito de la autenticación, los protocolos del agente SSH derivan del modelo estándar de agente de OpenSSH. Los demonios escuchan en sockets de dominio de Unix locales o en flujos reenviados, aceptando cargas útiles de bytes estructuradas en tramas que representan solicitudes para listar claves o firmar desafíos. La función serve en russh/src/keys/agent/server.rs actúa como despachador de eventos para las tramas entrantes del protocolo del agente. Procesar flujos no confiables o maliciosos dentro de ese bucle exige una validación rigurosa de longitud; sin ella, encabezados de mensaje mal formados pueden desencadenar asignaciones de lectura ilimitadas o la evaluación de bucles infinitos, paralizando el host.
Históricamente, bibliotecas de red en C, Go y Python han sufrido vulnerabilidades análogas de gestión de recursos. Incidentes bien conocidos en OpenSSH, como los ataques de inanición de recursos contra conexiones previas a la autenticación y el agotamiento del estado de los canales, obligaron a los desarrolladores de protocolos a lo largo de décadas a implementar topes defensivos, limitadores de tasa y estrictas verificaciones de validación sobre los valores de tamaño provistos por el cliente.
## Reaction
La reacción pública tras las entradas del 27 de octubre se ha mantenido en gran medida confinada a fuentes técnicas de vulnerabilidades y escáneres automatizados de paquetes, ya que ni los principales proveedores de nube ni las distribuciones estándar de sistemas operativos han emitido aún avisos de respuesta de emergencia. Las divulgaciones iniciales se originaron a través de los canales de seguimiento automatizados de VulDB.
Dentro del ecosistema más amplio de código abierto, se prevé que los encargados de mantener el software dependiente del crate russh —incluidas pasarelas SSH personalizadas, herramientas automatizadas de copia de seguridad y aplicaciones de terminal— monitoricen los repositorios del proyecto en busca de parches. En los flujos de trabajo habituales de vulnerabilidades de código abierto, los mantenedores revisan las trazas de funciones señaladas en pull requests de Git o sistemas de seguimiento de incidencias, establecen pruebas de regresión que reproduzcan las cargas de parámetros anómalos y publican versiones corregidas en el registro crates.io. Los usuarios de la comunidad de Rust esperan habitualmente que los mantenedores de crates publiquen incrementos de versiones semánticas que impongan topes defensivos en los argumentos de entrada y limiten las asignaciones de memoria durante el sondeo asíncrono.
## What we don't know yet
Detalles técnicos significativos continúan omitidos en las divulgaciones iniciales publicadas por VulDB. De forma crucial, los avisos no proporcionan cadenas de vectores del Common Vulnerability Scoring System (CVSS), calificaciones numéricas exactas de gravedad ni asignaciones de Common Weakness Enumeration (CWE) más allá de la etiqueta general de consumo de recursos.
Tampoco se ha confirmado si estas vulnerabilidades requieren autenticación criptográfica previa para ser explotadas. En el caso de CVE-2026-116774, si bien la apertura de canales suele tener lugar tras completarse el protocolo de enlace (handshake) SSH y la autenticación del usuario, ciertas configuraciones de multiplexación o bastiones automatizados pueden permitir la negociación de canales no autenticados o de confianza parcial. Respecto a CVE-2026-116696, los informes no aclaran si el bucle serve vulnerable está expuesto exclusivamente a través de sockets locales de comunicación entre procesos o si puede alcanzarse de forma remota mediante mecanismos de reenvío de agentes SSH.
Asimismo, los avisos no indican si existe una prueba de concepto pública del exploit, si los problemas han sido observados en explotación activa en entornos reales, o si ya se han incorporado hashes de confirmación (commits) específicos a la rama principal de desarrollo del repositorio para solucionar los fallos.
## What to watch
Los ingenieros de sistemas y los mantenedores de paquetes deberán supervisar varios puntos de control críticos en las próximas semanas. El indicador principal será la publicación en crates.io de lanzamientos posteriores a la versión 0.64.x, acompañados específicamente de notas de la versión que hagan referencia a tx.rs y server.rs.
Los equipos de seguridad también deberán vigilar la National Vulnerability Database (NVD), gestionada por el National Institute of Standards and Technology (NIST), para la sincronización oficial de los CVE y la obtención de las puntuaciones formales de CVSS. Una puntuación CVSS aclarará si las vulnerabilidades revisten una gravedad baja, media o alta, determinada en gran medida por los privilegios requeridos y el alcance del vector de ataque.
Mientras tanto, los desarrolladores que construyen sobre russh pueden inspeccionar sus implementaciones directas. Las auditorías de ingeniería deberían centrarse en si las aplicaciones exponen listeners directos del servidor de agentes a redes no confiables o si conceden a usuarios no confiables la capacidad de negociar dimensiones de paquetes de canal sin restricciones y sin validación a nivel de aplicación.
Este informe se basa en divulgaciones de vulnerabilidades catalogadas y reportadas por VulDB.
Fuente: vuldb.com


