OpenSSL lanza una actualización urgente para solucionar vulnerabilidades graves

OpenSSL es una de las librerías criptográficas más utilizadas por los sistemas operativos, Windows y muchas distribuciones basadas en Linux y Unix hacen uso de OpenSSL para gestionar toda la criptografía, certificados digitales etc. Contar con una librería criptográfica sin fallos de seguridad es fundamental, y hoy hemos conocido el lanzamiento de una nueva versión OpenSSL 1.1.1k que viene para solucionar dos graves fallos que se incorporaron al solucionar otros fallos de seguridad. ¿Quieres conocer todos los detalles y si estos fallos de seguridad te afectan?

Bypass en la comprobación del certificado de CA

OpenSSL introdujo una nueva función llamada X509_V_FLAG_X509_STRICT, el objetivo de esta función es comprobar certificados digitales sospechosos, con el objetivo de denegar su uso devolviendo un error. Esta función se incorporó porque se encontró un fallo en la función de comprobación de certificados con curvas elípticas ECC en la implementación de Windows, esto permitiría que un atacante pudiera validar todo el certificado como bueno sin devolver ningún error. Estos certificados basados en ECC comprobados por Microsoft no servía, y todos los aceptaban. Microsoft añadió una nueva función y OpenSSL heredó esta función para detectar certificados digitales «sospechosos». A partir de la versión OpenSSL 1.1.1h se añadió una comprobación adicional para no permitir este tipo de certificados.

Un error en la implementación de esta comprobación, hizo que una comprobación previa no se valide correctamente, y certificados que no son CA pueden emitir certificados (algo que no debería ocurrir, solamente las CA pueden emitir y revocar certificados). Por tanto, esto podría hacer que se generasen certificados a partir de certificados normales (no CA), algo que nunca debería suceder.

Un detalle importante es que la función X509_V_FLAG_X509_STRICT no se encuentra habilitada por defecto, pero si una aplicación la activa para usarla, podría ocasionar otros problemas. Este fallo afecta a todas las versiones 1.1.1h y posteriores de OpenSSL, todos los usuarios de esta versión deben actualizar a la versión 1.1.1k lo antes posible. Si utilizas la versión de OpenSSL 1.0.2 no está afectado por este problema.

Denegación de servicio a servidores TLS con OpenSSL

Otro fallo bastante importante que han solucionado está relacionado con la negociación del protocolo TLS. Un servidor TLS que utilice la librería criptográfica OpenSSL, puede fallar si se envía una renegociación del ClientHello desde el cliente. Si en una renegociación con TLSv1.2 el ClienHello omite la extensión signature_algoritms (donde estaba presente el ClientHello inicial) pero incluye una extensión signature_algorithms_cert entonces de desreferencia el puntero y provoca un bloqueo con su correspondiente denegación de servicio.

Cualquier servidor solamente es vulnerable si hace uso del protocolo TLSv1.2 y la renegociación está habilitada (por defecto lo está). Los clientes TLS no están afectados por esta vulnerabilidad, solamente los servidores. Todas las versiones OpenSSL 1.1.1 están afectadas por este fallo, por tanto, se recomienda actualizar a la versión OpenSSL 1.1.1k cuanto antes. La versión OpenSSL 1.0.2 tampoco está afectado por este problema.

Debemos recordar que la versión OpenSSL 1.0.2 está fuera de soporte, lo mismo que la versión 1.1.0, por tanto, es recomendable que actualicemos siempre a la última versión OpenSSL 1.1.1k para solucionar todos estos problemas encontrados. Si tienes un sistema operativo Linux, bastante con ejecutar las siguientes órdenes para proceder con la actualización cuando esté disponible en el repositorio:

sudo apt update

sudo apt upgrade

Os recomendamos leer el hilo de Sergio de los Santos donde explica fácilmente ambos fallos:

En otros sistemas operativos necesitaremos esperar algo más de tiempo hasta que lancen esta actualización tan importante.