CVE-2026-45445
Issue summary: When an application drives an AES-OCB context through the public EVP_Cipher() one-shot interface, the application-supplied initialisation vector (IV) is silently discarded.
Impact summary: Every message encrypted under the same key uses the same effective nonce regardless of the IV supplied by the caller, resulting in (key, nonce) reuse and loss of confidentiality. If the same code path is used to compute the authentication tag, the tag depends only on the (key, IV) pair and not on the plaintext or ciphertext, allowing universal forgery of arbitrary ciphertext from a single captured message.
Leer descripción completaMostrar menos
OpenSSL provides two ways to drive a cipher: the documented streaming interface (EVP_CipherUpdate / EVP_CipherFinal_ex) and a lower-level one-shot, EVP_Cipher(), whose documentation explicitly recommends against use by applications in favour of EVP_CipherUpdate() and EVP_CipherFinal_ex(). The OCB provider's streaming handler flushes the application-supplied IV into the OCB context before processing data; the one-shot handler did not. Every call to EVP_Cipher() on an AES-OCB context therefore ran with the all-zero key-derived offset state left by cipher initialisation, regardless of the caller's IV.
If EVP_EncryptFinal_ex() is subsequently used to obtain the authentication tag, the deferred IV setup runs at that point and clears the running checksum that should have been accumulated over the plaintext. The resulting tag is a function of (key, IV) only and verifies against any ciphertext produced under the same (key, IV) pair.
The OpenSSL SSL/TLS implementation is not affected: AES-OCB is not a TLS cipher suite, and libssl does not call EVP_Cipher() in any case. Applications that drive AES-OCB through the documented streaming AEAD API (EVP_CipherUpdate / EVP_CipherFinal_ex) are not affected. Only applications that combine the AES-OCB cipher with the EVP_Cipher() one-shot API are vulnerable.
The FIPS modules in 4.0, 3.6, 3.5, 3.4 and 3.0 are not affected by this issue, as AES-OCB is outside the OpenSSL FIPS module boundary.
CVSS
- Versión: 3.1
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Puntuación base: 7.5
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.70%
- Percentil entre todas las CVEs puntuadas: 52
- Fecha de la puntuación: 6/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
🎯 Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1190Exploit Public-Facing Applicationinitial access85 % - Impacto principal
T1005Data from Local Systemcollection90 % - Impacto secundario
T1565.001Stored Data Manipulationimpact75 %
Vulnerabilidad en OpenSSL AES-OCB con vector de red sin autenticación (AV:N/PR:N/UI:N). Impacto: lectura de datos cifrados por reutilización de nonce (T1005) y falsificación universal de etiquetas de autenticación (T1565.001).
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
🛡️ Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
CWE
- CWE-325
Referencias
- https://github.com/openssl/openssl/commit/323f0b6e7d530a4cb4336d50c88cb70f3ac2a451
- https://github.com/openssl/openssl/commit/787a6dfba81b7b09c1e05ab31396c0cd7c36b3f7
- https://github.com/openssl/openssl/commit/7ac4715234ee72d9f3c93426a2c08554b5b771af
- https://github.com/openssl/openssl/commit/843c9b94ca9c2ed248bb30127bb4f3d7af0d607c
- https://github.com/openssl/openssl/commit/983d54b5cce8d16147548ed1a37892d1720bbab6
- https://openssl-library.org/news/secadv/20260609.txt
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-45445",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-45445",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-06-09T19:22:47.789275Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 7.5,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 3.6,
"exploitabilityScore": 3.9
}
]
},
"affected": [
{
"source": "openssl-security@openssl.org",
"affectedData": [
{
"vendor": "OpenSSL",
"product": "OpenSSL",
"versions": [
{
"status": "affected",
"version": "4.0.0",
"lessThan": "4.0.1",
"versionType": "semver"
},
{
"status": "affected",
"version": "3.6.0",
"lessThan": "3.6.3",
"versionType": "semver"
},
{
"status": "affected",
"version": "3.5.0",
"lessThan": "3.5.7",
"versionType": "semver"
},
{
"status": "affected",
"version": "3.4.0",
"lessThan": "3.4.6",
"versionType": "semver"
},
{
"status": "affected",
"version": "3.0.0",
"lessThan": "3.0.21",
"versionType": "semver"
}
],
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-06-09T17:17:18.993",
"references": [
{
"url": "https://github.com/openssl/openssl/commit/323f0b6e7d530a4cb4336d50c88cb70f3ac2a451",
"tags": [
"Patch"
],
"source": "openssl-security@openssl.org"
},
{
"url": "https://github.com/openssl/openssl/commit/787a6dfba81b7b09c1e05ab31396c0cd7c36b3f7",
"tags": [
"Patch"
],
"source": "openssl-security@openssl.org"
},
{
"url": "https://github.com/openssl/openssl/commit/7ac4715234ee72d9f3c93426a2c08554b5b771af",
"tags": [
"Patch"
],
"source": "openssl-security@openssl.org"
},
{
"url": "https://github.com/openssl/openssl/commit/843c9b94ca9c2ed248bb30127bb4f3d7af0d607c",
"tags": [
"Patch"
],
"source": "openssl-security@openssl.org"
},
{
"url": "https://github.com/openssl/openssl/commit/983d54b5cce8d16147548ed1a37892d1720bbab6",
"tags": [
"Patch"
],
"source": "openssl-security@openssl.org"
},
{
"url": "https://openssl-library.org/news/secadv/20260609.txt",
"tags": [
"Vendor Advisory"
],
"source": "openssl-security@openssl.org"
}
],
"vulnStatus": "Analyzed",
"weaknesses": [
{
"type": "Secondary",
"source": "openssl-security@openssl.org",
"description": [
{
"lang": "en",
"value": "CWE-325"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Issue summary: When an application drives an AES-OCB context through the\npublic EVP_Cipher() one-shot interface, the application-supplied\ninitialisation vector (IV) is silently discarded.\n\nImpact summary: Every message encrypted under the same key uses the\nsame effective nonce regardless of the IV supplied by the caller,\nresulting in (key, nonce) reuse and loss of confidentiality. If the\nsame code path is used to compute the authentication tag, the tag\ndepends only on the (key, IV) pair and not on the plaintext or\nciphertext, allowing universal forgery of arbitrary ciphertext from a\nsingle captured message.\n\nOpenSSL provides two ways to drive a cipher: the documented streaming\ninterface (EVP_CipherUpdate / EVP_CipherFinal_ex) and a lower-level\none-shot, EVP_Cipher(), whose documentation explicitly recommends\nagainst use by applications in favour of EVP_CipherUpdate() and\nEVP_CipherFinal_ex(). The OCB provider's streaming handler flushes\nthe application-supplied IV into the OCB context before processing\ndata; the one-shot handler did not. Every call to EVP_Cipher() on an\nAES-OCB context therefore ran with the all-zero key-derived offset\nstate left by cipher initialisation, regardless of the caller's IV.\n\nIf EVP_EncryptFinal_ex() is subsequently used to obtain the\nauthentication tag, the deferred IV setup runs at that point and\nclears the running checksum that should have been accumulated over the\nplaintext. The resulting tag is a function of (key, IV) only and\nverifies against any ciphertext produced under the same (key, IV)\npair.\n\nThe OpenSSL SSL/TLS implementation is not affected: AES-OCB is not a\nTLS cipher suite, and libssl does not call EVP_Cipher() in any case.\nApplications that drive AES-OCB through the documented streaming AEAD\nAPI (EVP_CipherUpdate / EVP_CipherFinal_ex) are not affected. Only\napplications that combine the AES-OCB cipher with the EVP_Cipher()\none-shot API are vulnerable.\n\nThe FIPS modules in 4.0, 3.6, 3.5, 3.4 and 3.0 are not affected by\nthis issue, as AES-OCB is outside the OpenSSL FIPS module boundary."
},
{
"lang": "es",
"value": "Resumen del problema: Cuando una aplicación maneja un contexto AES-OCB a través de la interfaz de un solo uso pública EVP_Cipher(), el vector de inicialización (IV) proporcionado por la aplicación es descartado silenciosamente.\n\nResumen del impacto: Cada mensaje cifrado bajo la misma clave utiliza el mismo nonce efectivo independientemente del IV proporcionado por el llamador, lo que resulta en la reutilización de (clave, nonce) y la pérdida de confidencialidad. Si la misma ruta de código se utiliza para calcular la etiqueta de autenticación, la etiqueta depende solo del par (clave, IV) y no del texto plano o del texto cifrado, lo que permite la falsificación universal de texto cifrado arbitrario a partir de un único mensaje capturado.\n\nOpenSSL proporciona dos formas de manejar un cifrado: la interfaz de streaming documentada (EVP_CipherUpdate / EVP_CipherFinal_ex) y una de un solo uso de nivel inferior, EVP_Cipher(), cuya documentación recomienda explícitamente no ser utilizada por las aplicaciones en favor de EVP_CipherUpdate() y EVP_CipherFinal_ex(). El gestor de streaming del proveedor OCB vacía el IV proporcionado por la aplicación en el contexto OCB antes de procesar los datos; el gestor de un solo uso no lo hacía. Cada llamada a EVP_Cipher() en un contexto AES-OCB, por lo tanto, se ejecutaba con el estado de desplazamiento derivado de la clave todo-cero dejado por la inicialización del cifrado, independientemente del IV del llamador.\n\nSi EVP_EncryptFinal_ex() se utiliza posteriormente para obtener la etiqueta de autenticación, la configuración diferida del IV se ejecuta en ese momento y borra la suma de verificación en ejecución que debería haberse acumulado sobre el texto plano. La etiqueta resultante es una función de (clave, IV) solamente y verifica cualquier texto cifrado producido bajo el mismo par (clave, IV).\n\nLa implementación SSL/TLS de OpenSSL no se ve afectada: AES-OCB no es una suite de cifrado TLS, y libssl no llama a EVP_Cipher() en ningún caso. Las aplicaciones que manejan AES-OCB a través de la API AEAD de streaming documentada (EVP_CipherUpdate / EVP_CipherFinal_ex) no se ven afectadas. Solo las aplicaciones que combinan el cifrado AES-OCB con la API de un solo uso EVP_Cipher() son vulnerables.\n\nLos módulos FIPS en 4.0, 3.6, 3.5, 3.4 y 3.0 no se ven afectados por este problema, ya que AES-OCB está fuera del límite del módulo FIPS de OpenSSL."
}
],
"lastModified": "2026-07-23T08:10:00.137",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "EDB88756-EDFE-4886-A267-3F19342A6042",
"versionEndExcluding": "3.0.21",
"versionStartIncluding": "3.0.0"
},
{
"criteria": "cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "BF7E21E7-AEC0-4882-B1F1-2D056B506F22",
"versionEndExcluding": "3.4.6",
"versionStartIncluding": "3.4.0"
},
{
"criteria": "cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "6B6B9930-C549-4D88-9784-AF32CCDDB87A",
"versionEndExcluding": "3.5.7",
"versionStartIncluding": "3.5.0"
},
{
"criteria": "cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "D41B3C45-EC73-4DC8-989D-B2E2792E102F",
"versionEndExcluding": "3.6.3",
"versionStartIncluding": "3.6.0"
},
{
"criteria": "cpe:2.3:a:openssl:openssl:4.0.0:-:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "6E881B9A-1A0A-4BC0-8160-20C00561167D"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "openssl-security@openssl.org"
}