OpenSSL publicó el 9 de junio de 2026 un parche para un fallo de uso después de liberación (use-after-free) en su API antigua de PKCS#7. El bug, identificado como CVE-2026-45447, vive en la función PKCS7_verify(), la que verifica firmas PKCS#7 y mensajes S/MIME. Curiosamente, fue uno de los primeros fallos de OpenSSL descubiertos con ayuda de herramientas de IA durante una revisión del código.
Qué pasa exactamente
PKCS7_verify() recibe del programa que la llama un objeto BIO donde escribir el contenido verificado. Cuando procesa un mensaje firmado en el que el campo digestAlgorithms del SignedData viene como un SET de ASN.1 vacío, OpenSSL libera ese BIO por error, aunque la propiedad sigue siendo del programa que hizo la llamada. A partir de ahí, cualquier acceso de la aplicación a ese BIO ya liberado es un use-after-free (CWE-416).
Las consecuencias dependen del comportamiento del asignador de memoria y de cómo use la aplicación el BIO después. En el caso benigno hay una caída del proceso. En el peor, hay corrupción del heap y, según el escenario, posibilidad de ejecución remota de código.
A quién afecta
El problema está en la API antigua de PKCS#7. La superficie de ataque es cualquier programa que llame a PKCS7_verify() sobre datos que recibe de fuera. Los clientes de correo y los MTA que validan firmas S/MIME son el caso más expuesto, porque el propio mensaje firmado es el payload: no hace falta autenticación ni interacción del usuario más allá de procesar el correo.
Las versiones afectadas abarcan casi todas las ramas vivas de OpenSSL:
- 4.0.0 (corregida en 4.0.1)
- 3.6.0 a 3.6.2 (corregida en 3.6.3)
- 3.5.0 a 3.5.6 (corregida en 3.5.7)
- 3.4.0 a 3.4.5 (corregida en 3.4.6)
- 3.0.0 a 3.0.20 (corregida en 3.0.21)
- 1.1.1 hasta 1.1.1zg (1.1.1zh, solo soporte premium)
- 1.0.2 hasta 1.0.2zp (1.0.2zq, solo soporte premium)
Gravedad
El CVSS v3.1 asignado es de 9.8, vector de red, complejidad baja, sin privilegios ni interacción. Es la nota máxima de “crítica”, aunque conviene matizarla: que un fallo termine en ejecución de código depende mucho de cómo gestione la aplicación el BIO tras la llamada. Muchos programas simplemente se caerán. Aun así, no es un detalle para dejar pendiente, sobre todo en servidores de correo que procesan S/MIME sin supervisión.
Mitigación
Actualiza la librería OpenSSL a la versión parcheada de tu rama. En una distribución de Linux esto suele llegar como una actualización del paquete del sistema (openssl, libssl3 o equivalente), así que basta con aplicar las actualizaciones de seguridad y reiniciar los servicios que enlazan contra la librería. Recuerda que muchos servicios cargan OpenSSL una sola vez al arrancar, así que reiniciarlos es necesario para que tomen el código corregido.
Si mantienes código propio, hay una alternativa que evita el fallo de raíz: migrar de la API antigua PKCS7_verify() a las APIs CMS de OpenSSL, que no están afectadas por este bug. Es el camino recomendado desde hace tiempo para tratamiento de mensajes firmados.
Fuente
- SecurityWeek — OpenSSL Patches High-Severity Vulnerability Found With AI: https://www.securityweek.com/openssl-patches-high-severity-vulnerability-found-with-ai/
- NVD — CVE-2026-45447: https://nvd.nist.gov/vuln/detail/CVE-2026-45447