OpenSSL 3.0.8 llega corrigiendo varios errores de seguridad
Se dio a conocer el lanzamiento de las nuevas versiones correctivas de OpenSSL (3.0.8 , 1.1.1t ) en las que se ha corregido una peligrosa vulnerabilidad (CVE-2023-0286) que permite obtener los contenidos de áreas arbitrarias de la memoria del proceso cuando se procesa un proceso controlado por una lista de revocación de certificados (CRL) del atacante o un token con marca de tiempo.
La vulnerabilidad está provocada por Type Confusion al procesar una dirección X.400 en la extensión X.509 GeneralName.
En particular, una dirección X.400 se analizó con el tipo ASN1_STRING, mientras que el campo x400Address en la estructura GENERAL_NAME se analizó con el tipo ASN1_TYPE, lo que resultó en la comparación (GENERAL_NAME_cmp) con ASN1_TYPE en lugar de ASN1_STRING. Cuando se habilita la verificación de la lista de revocación de certificados (estableciendo el indicador X509_V_FLAG_CRL_CHECK en la aplicación), la vulnerabilidad permite que un atacante pase punteros arbitrarios a la función memcmp, que se puede usar para leer el contenido de la memoria o iniciar una terminación anormal de el proceso.
En la mayoría de las situaciones, un atacante debe tener control sobre la lista de revocación de certificados (CRL) utilizada y la cadena de confianza del certificado para llevar a cabo un ataque con éxito.
También se puede realizar un ataque en caso de control sobre uno de los elementos especificados, pero en este caso, la dirección X.400 debe aparecer como el punto de distribución de CRL, lo cual es bastante raro. En este sentido, se supone que la vulnerabilidad afecta principalmente a las aplicaciones que utilizan su propia implementación de la funcionalidad de descarga de CRL a través de la red.
Además del problema discutido, OpenSSL 3.0.8 también corrige varias vulnerabilidades menos peligrosas:
- CVE-2022-4304: es un ataque de canal lateral que permite determinar los datos de origen a través de la medición de los retrasos de la red al ejecutar operaciones RSA utilizando los modos de propagación incremental PKCS#1 v1.5, RSA-OEAP y RSASVE. El ataque es una variación del método Bleichenbacher, cuya esencia es que el atacante, en función de una reacción diferente del servidor, puede separar los bloques de Oracle de relleno correctos e incorrectos utilizados para alinear los datos cifrados a lo largo del límite del bloque. Un ataque exitoso requiere el envío de una gran cantidad de mensajes de sondeo para su descifrado.
En el aspecto práctico, un ataque, por ejemplo, puede utilizarse para determinar el secreto maestro de una conexión TLS, que el cliente transmite al servidor de forma cifrada. Un atacante que tenga la capacidad de interceptar la conexión entre el cliente y el servidor puede recuperar el valor del secreto maestro enviando una gran cantidad de mensajes de prueba al servidor y analizando su tiempo de procesamiento. Una vez que se determina el secreto maestro, el atacante puede descifrar los datos enviados a través de la conexión TLS en cuestión. - CVE-2022-4203: Lectura de búfer fuera de los límites al verificar certificados X.509 con campo de nombre personalizado. El ataque puede bloquear la aplicación o filtrar el contenido de la memoria de un proceso del lado del cliente si se conecta a un servidor controlado por el atacante, o en el lado del servidor si el servidor solicita la autenticación de un cliente controlado por el atacante.
- CVE-2023-0216: Falta de referencia de puntero incorrecta en las funciones d2i_PKCS7(), d2i_PKCS7_bio() y d2i_PKCS7_fp() cuando se manejan datos PKCS7 con formato especial. La vulnerabilidad podría hacer que el proceso se bloquee.
- CVE-2023-0217: Desreferencia de puntero NULL al verificar la clave pública DSA en la función EVP_PKEY_public_check().
- CVE-2023-0215: acceso de uso después de libre a un área de memoria en la función BIO_new_NDEF utilizada para transmitir datos ASN.1 a través de la interfaz BIO.
- CVE-2022-4450: doble liberación de memoria después de llamar a la función PEM_read_bio_ex.
- CVE-2023-0401: desreferencia de puntero NULL al validar datos PKCS7.
De las últimas 4 vulnerabilidades, se supone que se limitan a la capacidad de iniciar una terminación anormal del proceso.
Finalmente si estás interesado en poder conocer más al respecto sobre esta nueva versión, puedes consultar los detalles en el siguiente enlace.