Esta semana, OpenSSL ha publicado soluciones para una vulnerabilidad de denegación de servicio (DoS) de alta gravedad que afecta al proyecto de código abierto.

La Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA) del DHS de EE. UU. Advirtió a los administradores que actualicen sus instancias de OpenSSL vulnerables de inmediato.

Causado por punteros nulos en la validación del nombre del certificado SSL

La vulnerabilidad de alta gravedad registrada como CVE-2020-1971, se debe a un problema de desreferenciación de puntero NULL.

Según lo especificado por el estándar X.509, los certificados SSL utilizan el tipo GeneralName en varios lugares para representar diferentes tipos de nombres .

Un objeto GeneralName puede ser una dirección IP, un nombre DNS, un identificador de URL o incluso algo llamado “EDIPartyName”.

Al validar certificados SSL X.509, OpenSSL usa la función GENERAL_NAME_cmp para comparar dos campos GeneralName .

Sin embargo, si ambos campos que se comparan contienen un EDIPartyName , OpenSSL puede fallar debido a un error de desreferenciación del puntero NULL.

Por ejemplo, el aviso de OpenSSL establece que un lugar donde se usa la función GENERAL_NAME_cmp es cuando OpenSSL valida el campo de punto de distribución CRL (Lista de revocación de certificados) de un certificado.

La mayoría de los certificados SSL contienen dentro de sí mismos lo que se llama un campo de punto de distribución CRL.

Este campo especifica la ubicación donde el emisor del certificado publica una lista de certificados revocados que el cliente puede verificar, como un navegador web.

Como se muestra a continuación, la autoridad emisora del certificado SSL de BleepingComputer, Sectigo, ha especificado su Punto de distribución de CRL como una URL .

Esto significa que, cuando visita https://bleepingcomputer.com , su navegador web que recibe nuestro certificado debería, idealmente, validarlo con la CRL proporcionada en esta URL incrustada en el certificado.

Certificado SSL BleepingComputer
BleepingComputer certificado SSL emitido por Sectigo tiene puntos de distribución de CRL enumerados como una URL

Sin embargo, el punto de distribución comprende una ubicación de CRL que es del tipo GenericName (páginas 46-48 de RFC 5280).

Recuerde, GenericName no necesita ser una URL y también se puede especificar como una dirección IP o un EDIPartyName.

Si un atacante puede crear un certificado SSL que contenga un campo EDIPartyName para especificar los detalles de la CRL y una CRL maliciosa en sí, la función GENERAL_NAME_cmp al comparar los dos campos puede desencadenar un bloqueo de la aplicación y provocar una condición de denegación de servicio (DoS).

Pero esta es solo una de las formas en que se puede aprovechar esta vulnerabilidad.

Otro lugar donde se usa la función GENERAL_NAME_cmp en OpenSSL es cuando se compara el firmante del token de respuesta de marca de tiempo con el nombre de autoridad de marca de tiempo.

CISA insta a los administradores a actualizar

Informada el 9 de noviembre de 2020 por David Benjamin de Google, esta vulnerabilidad afecta a todas las versiones de OpenSSL 1.0.2 y 1.1.1 (antes de la 1.1.1i).

Después de un análisis del error, Matt Caswell de OpenSSL implementó una solución en la versión 1.1.1i.

En 2014, la vulnerabilidad crítica de hemorragia cardíaca en OpenSSL había aparecido en los titulares tras los ataques desenfrenados en la naturaleza.

Esta es quizás la razón por la que CISA ha emitido un aviso de seguridad para CVE-2020-1971 solicitando a los administradores del servidor que actualicen inmediatamente sus instancias de OpenSSL.

Los usuarios de OpenSSL 1.1.1 pueden actualizar a la versión 1.1.1i . El soporte del producto para OpenSSL 1.0.2 y versiones anteriores ha llegado al final de su vida útil y, como tal, solo los usuarios premium reciben la versión parcheada 1.0.2x. Los usuarios generales deben actualizar a la versión 1.1.1i.