Vulnerabilidad en el parche GSSAPI para OpenSSH, explotable a distancia antes de la autenticación

En el parche gssapi.patch, utilizado en muchas distribuciones de Linux, que añade soporte para el intercambio de claves basado en GSSAPI en OpenSSH, se ha identificado una vulnerabilidad (CVE-2026-3497) que causa la desreferenciación de un puntero, corrupción de memoria y la elusión del mecanismo de separación de privilegios (Privsep). Esta vulnerabilidad puede ser explotada de forma remota antes de la autenticación. El investigador que descubrió el problema demostró que se puede provocar un fallo en el proceso al enviar un paquete de red modificado al servidor SSH. No se descarta que, además de provocar una denegación de servicio, existan formas más peligrosas de explotación de la vulnerabilidad.

Es notable que en su momento, los desarrolladores de OpenSSH se negaron a incorporar en la versión principal el cambio para soportar GSSAPI debido a preocupaciones sobre su seguridad. Sin embargo, muchas distribuciones de Linux incluyeron este parche en sus paquetes de OpenSSH. Existen varias versiones del parche GSSAPI, pero la mayoría de ellas contiene un error que lleva a la vulnerabilidad. Por ahora, la corrección está disponible solo en forma de parche, cuyo cambio consiste en reemplazar la llamada a la función sshpkt_disconnect() por ssh_packet_disconnect() en el archivo kexgsss.c.

Actualmente, la vulnerabilidad se ha confirmado en Debian y Ubuntu. En las demás distribuciones, se está verificando la aplicación del parche problemático y su susceptibilidad a la vulnerabilidad (SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora). La vulnerabilidad se manifiesta solo cuando la opción 'GSSAPIKeyExchange yes' está habilitada en la configuración. Las opciones del compilador con las que se ha construido el paquete en las distribuciones también influyen en la posibilidad de explotación.

La causa de la vulnerabilidad es un error en la función sshpkt_disconnect(), que impedía que el proceso se terminara tras recibir un mensaje de desconexión, lo que permitía al atacante, en la fase de negociación de claves, enviar un tipo de mensaje GSSAPI no previsto por la lógica de funcionamiento. servidores Después de recibir un mensaje GSSAPI inesperado, servidor coloca en la cola y no interrumpe la ejecución del programa, pero no inicializa las variables que definen los parámetros de la conexión. Más adelante, en el bucle de procesamiento de eventos, se ejecuta el código que lee la estructura no inicializada recv_tok del stack (se leen los datos que quedan en el stack de la llamada anterior a la función), la envía al proceso privilegiado a través de IPC y luego la pasa a la función gss_release_buffer(), que puede llamar a la función free() y liberar memoria para un puntero incorrecto que apunta a una zona aleatoria de memoria.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster