La compañía Codenomicon (responsable del hallazgo de Heartbleed) halló un bug en la biblioteca para comunicaciones seguras GnutTLS. La explotación del mismo durante una comunicación cliente – servidor permitiría que este último pueda truncar la validación entre ellos, logrando un buffer overflow y por consiguiente pudiendo lograr hasta una ejecución de código de forma remota.

GnuTLS es utilizado en varios sistemas operativos Linux como Ubuntu, Red Hat o Fedora. Su finalidad es la de implementar los protocolos SSL (Secure Sockets Layer) y TLS (Transport Layer Security) y así proveer a sistemas operativos Linux una forma segura de comunicarse, en un medio inseguro.

Recientemente, los encargados de mantener el proyecto han publicado importantes actualizaciones de seguridad para solucionar un bug que permitía corromper la comunicación que se lleva a cabo antes de empezar una transferencia de datos.

El problema ocurre en el handshake, el protocolo en el cual se intercambian los parámetros de seguridad de una sesión de transferencia de datos. El error estaba en la sección del código de la implementación de TLS que se encarga de validar el ServerHello, emitido por el servidor en la comunicación con el cliente. En el siguiente gráfico de IBM se puede ver el momento en que ocurriría un ServerHello habitual:

flow
El error se encontraba en la forma en que se lleva a cabo la validación del mensaje en cuestión: si bien el cliente validaba que su tamaño no sea menor que el esperado, no verificaba que no fuese más grande. Esto podría afectar el manejo de memoria del cliente, logrando por ejemplo que la aplicación del cliente se cierre de forma inesperada, o incluso lograr una ejecución remota de código.

Si bien esta falla en GnuTLS no tiene las mismas consecuencias que Heartbleed (permitía a un atacante el monitoreo de tráfico en texto plano), la compañía Red Hat le dio la misma prioridad en su sistema de tracking de bugs, tildándolo de “altamente severo”. De hecho, han afirmado que esta vulnerabilidad ha afectado a todas las versiones de Fedora y a paquetes adicionales del sistema operativo Enterprise Linux.

Los desarrolladores del proyecto GnuTLS ya han publicado las actualizaciones de seguridad correspondientes, por lo que para que los usuarios de Linux solucionen este problema simplemente deberán instalar las últimas actualizaciones del sistema operativo que utilicen.