CVE-2026-45445

EUVD-2026-35489
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.
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
opensslCNA
7.5 HIGH
NETWORK
LOW
NONE
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Base Score
CVSS 3.x
EPSS Score
Percentile: Unknown
Early Detection
Affected products identified ahead of NVD analysis through intelligence sources.
VendorProductVersionSource
opensslopenssl
4.0.0 ≤
𝑥
< 4.0.1
CNA
opensslopenssl
3.6.0 ≤
𝑥
< 3.6.3
CNA
opensslopenssl
3.5.0 ≤
𝑥
< 3.5.7
CNA
opensslopenssl
3.4.0 ≤
𝑥
< 3.4.6
CNA
opensslopenssl
3.0.0 ≤
𝑥
< 3.0.21
CNA
Debian logo
Debian Releases
Debian Product
Codename
openssl
bookworm
vulnerable
bookworm (security)
vulnerable
bullseye
vulnerable
bullseye (security)
vulnerable
forky
vulnerable
sid
vulnerable
trixie
vulnerable
trixie (security)
vulnerable
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
openssl
bionic
not-affected
focal
not-affected
jammy
Fixed 3.0.2-0ubuntu1.25
released
noble
Fixed 3.0.13-0ubuntu3.11
released
questing
Fixed 3.5.3-1ubuntu3.4
released
resolute
Fixed 3.5.5-1ubuntu3.2
released
trusty
not-affected
xenial
not-affected
openssl-fips
jammy
dne
noble
dne
questing
dne
resolute
dne
openssl1.0
bionic
not-affected
jammy
dne
noble
dne
questing
dne
resolute
dne
nodejs
bionic
not-affected
focal
not-affected
jammy
needed
noble
not-affected
questing
not-affected
resolute
not-affected
trusty
not-affected
edk2
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
needs-triage
questing
needs-triage
resolute
needs-triage