CVE-2026-45445CWE-325

AES-OCB IV Ignored on EVP_Cipher() Path

High · published June 9, 2026

CVSS v3.1
7.5
EPSS
1%
Percentile
52.8
In the wild
Unconfirmed
What it is

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.

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.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS v4.0
Not supplied
EPSS
0.00704 · 52.8th percentile
Weakness
CWE-325 · Missing Cryptographic Step
Published
2026-06-09T16:03Z
EPSS history
Timeline
  • 09 JUN 16:03Z
    AES-OCB IV Ignored on EVP_Cipher() Path
    cvelistv5