Se descubren más vulnerabilidades en OpenSSL

Se descubren más vulnerabilidades en OpenSSL

En cuestión de meses, la imagen de OpenSSL como un producto que garantizaba nuestra seguridad en Internet se ha desvanecido. Después de Heartbleed surgieron varias iniciativas para asegurar la librería. El equipo de OpenBSD, por ejemplo, se puso a trabajar en el fork LibreSSL para tratar de purgar todos los fallos de la librería original. Otros investigadores han buscado más fallos directamente en el código, y han descubierto varias vulnerabilidades más que acaban de ser corregidas. La primera, la más grave, permitiría a un atacante ejecutar un ataque man-in-the-middle y leer los datos de una conexión segura. Lo único que necesitaría es inyectar un mensaje durante el proceso de apretón de manos o presentación (handshake) entre los dos clientes que estén estableciendo una conexión segura.

El handshake es el proceso que llevan a cabo los clientes para establecer una conexión segura. Como vimos cuando hablamos de HTTPS, primero se intercambian las claves públicas, cifrado a usar y algunos números que se usarán después para generar las claves de cifrado de la conexión. Casi al final del handshake, cada cliente envía un mensaje de tipo ChangeCipherSpec (CCS), que a grandes rasgos significa Ahora todo va cifradoCuando OpenSSL recibe ese mensaje, calcula las claves de cifrado a partir de las preclaves que se hayan intercambiado servidor y cliente.

Lo normal sería que fallase y se rechazase ese paquete, o incluso se cerrase la conexión entera. Pero eso no es lo que ocurre. OpenSSL recibe el mensaje sin problemas y calcula la clave de cifrado. Esa clave tiene dos peculiaridades: está calculada únicamente a partir de datos públicos y además no se modifica cuando el cliente reciba por segunda vez el mensaje CCS. En resumidas cuentas: el atacante puede calcular también la clave de cifrado y ver qué se está transmitiendo. Lo más peculiar de todo es que el fallo lleva 16 años en OpenSSL y no se ha corregido a pesar de que ya se descubrieron y corrigieron vulnerabilidades relacionadas con el orden en el que se recibía el mensaje CCS, según el descubridor de la vulnerabilidad Masashi Kikuchi.

Hay varias vulnerabilidades de denegación de servicio (el cliente OpenSSL se cuelga y deja de responder, o directamente se cierra inesperadamente) y dos que permitirían a un atacante ejecutar código aleatorio. Por suerte, para el usuario normal este problema no es especialmente grave. Para que se pueda llevar a cabo el ataque, es necesario que tanto servidor como cliente usen una versión de OpenSSL vulnerable. Sin embargo, la mayoría de navegadores web no usan OpenSSL, salvo Chrome para Android (y ya hay una actualización disponible en Play Store). Sí podrían ser vulnerables conexiones entre servidores, o conexiones con clientes de VPN que usen OpenSSL. Por suerte, el parche ya ha sido distribuido y ya se puede actualizar en la mayoría de distribuciones Linux.

Sobre el autor

Analista de tendencias tecnológicas. Columnista en radio, TV y medios gráficos. Economista encubierto. Especialista en ecommerce. Liberal.