Resulta curioso como, en cuestión de meses, la imagen que teníamos 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.
¿En qué consiste la vulnerabilidad?
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 cifrado".
Cuando OpenSSL recibe ese mensaje, calcula las claves de cifrado a partir de las preclaves que se hayan intercambiado servidor y cliente. Por aquí ya podéis intuir por dónde viene el problema: ¿qué pasa si el mensaje CCS se envía antes de tiempo, antes de que los clientes se han intercambiado las preclaves?
Un mensaje antes de tiempo provoca que OpenSSL use una clave débil para cifrar los datos
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.
Esta no es la única vulnerabilidad que se ha corregido, pero sí la más grave. 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.
¿Cómo me afecta a mí el fallo?

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.
Más información | OpenSSL Advisory | How I Discovered CCS Injection Vulnerability | Análisis Adam Langley
Imagen | Intel Free Press
Ver 18 comentarios
18 comentarios
michaeldany
Si hay algo excelente en el entorno OpenSource (y también en Linux) es que cada vez que surge una noticia sobre una vulnerabilidad descubierta, el artículo empieza describiendo el problema y siempre finaliza mencionando que ya existe el parche que lo soluciona. Ya otros entornos quisieran tener esa rapidez de solución puesto que por ejemplo para noticias similares en Windows, la noticia de una vulnerabilidad empieza hoy y a los 5 días sigue sin solución y sólo un workaround.
Saludos.
atoi
Este bug se divulgó días antes a unas pocas distribuciones Linux de forma confidencial, de manera que estuviesen preparados cuando se reporte el error junto con el parche.
Aquí una linea de tiempo de todo lo que ocurrió:
http://seclists.org/oss-sec/2014/q2/466
La divulgación responsable es comprensible cuando se hace para mitigar daños, pero en este caso muchos proveedores se han visto marginados. Mal asunto.
lolo_aguirre
Una muestra más de lo que estoy harto de discutir con varios amigos informáticos. Que un proyecto sea software libre puede ser más o menos interesante, pero no es necesariamente una prueba de la calidad del mismo. Aunque el código sea público no quiere decir que la gente lo entienda o lo revise a fondo. Es más, muchas veces los proyectos de empresas "cerrados" se someten a más pruebas que algunos públicos.
Respecto a lo que dicen de que la ventaja del software libre es que en cuanto lo avisan tienen el parche listo, es muy fácil hacerlo cuando lo silencias hasta que tienes el parche.
El software libre es como todo, hay proyectos muy serios y bien llevados y proyectos menos controlados.
De todos modos repito lo que dije cuando salió el primer fallo importante, me parece muy triste que empresas como Google hayan usado el paquete de seguridad en aplicaciones con las que ganan mucho dinero sin molestarse en hacer una auditoría a fondo del mismo.
José Cabo
Se ha dicho ya muchas veces... para todos aquellos que alucinan y se ponen las manos en la cabeza. Todo sistema tiene fallos, TODOS. Unos más graves que otros. Lo importante en estos casos en cuanto se tarda en solucionar dicho fallo.
Descubrir bugs hiper-mega críticos en un software no hace que el software sea malo, no debería. La cuestión es si se descubren y nadie hace nada para solucionarlos.
babositamimosin
Yo alucino...
moevr
Supongo que seré un paranoico, pero en todo este asunto lo único que veo es la cara enfurruñada de algunos gobernantes que seguro llevan años aprovechandose de estas vulnerabilidades para entrar en todos los sistemas como Pedro por su casa. Amigos de la NSA, espero que con esta batida tengáis las cosas más difíciles de ahora en adelante.
rosalesange
El apoyo para este proyecto es totalmente irrelevante para su envergadura. Esta no es una noticia muy alentadora.