Cloudanix VulnDB

CVE-2026-45446

Medium · 4.8

CVSS

4.8

EPSS

0.2%

Published

Jun 9, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

Some custom applications using OpenSSL encryption may mistakenly accept a fake empty message as authentic.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
High
Impact
Data Tampering
Component
Library
Class
Cryptographic Weakness
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

OpenSSL provider implementations of AES-SIV and AES-GCM-SIV can incorrectly authenticate messages when the ciphertext length is zero. In the affected decryption flow, Additional Authenticated Data (AAD) may be supplied, but if no ciphertext update is performed because the ciphertext is empty, the expected authentication tag is not recomputed and can remain an all-zero value. For AES-GCM-SIV, this allows a remote attacker to submit arbitrary AAD, an empty ciphertext, and an all-zero 16-byte tag that verifies successfully without knowing the encryption key. For AES-SIV, exploitation additionally requires an application pattern that reuses a decryption context without resetting the key. The issue affects applications that implement custom protocols using the OpenSSL EVP interface with AES-SIV or AES-GCM-SIV; OpenSSL’s own TLS, CMS, PKCS7, HPKE, and QUIC protocol implementations are not affected.

Why it matters to the business

The main risk is that custom applications relying on AES-SIV or AES-GCM-SIV for message authenticity may accept forged empty messages as legitimate. This could allow unauthorized commands, metadata, state transitions, or control messages if those applications treat AAD as security-relevant input. The practical exposure is narrower than many OpenSSL issues because exploitation requires specific cipher use, custom protocol behavior, and empty-ciphertext handling. The vulnerability is not currently listed in CISA KEV, is not known to be used in ransomware campaigns, has low EPSS, and has no reported public exploit maturity, but organizations using OpenSSL broadly should still assess custom cryptographic integrations because OpenSSL is widely embedded in downstream software.

How an attack unfolds

An attacker first identifies an application or service that uses OpenSSL’s EVP interface with AES-GCM-SIV or AES-SIV in a custom protocol. The attacker then determines whether the protocol permits messages with authenticated AAD but an empty ciphertext body. For AES-GCM-SIV, the attacker can craft a message containing arbitrary AAD, zero-length ciphertext, and a 16-byte all-zero authentication tag. If the application’s decryption path supplies the AAD and then finalizes decryption without processing any ciphertext data, the OpenSSL provider implementation may incorrectly treat the all-zero tag as valid. The application may then process the attacker-controlled AAD as authenticated. For AES-SIV, the same class of forgery requires the additional condition that the application reuses a decryption context without resetting the key. Successful exploitation depends heavily on how the application maps AAD to authorization, command semantics, routing, message type, identity, or business logic.

How to fix it

Upgrade OpenSSL to a version containing the vendor fix once available from the OpenSSL project or operating system/package maintainers, then restart or redeploy all applications that dynamically link to OpenSSL and rebuild applications that statically link it. Because no fixed versions were provided in the input, use the authoritative advisory for the deployed OpenSSL branch and the relevant distribution package changelog. As compensating controls, inventory custom code and third-party components that call EVP with AES-SIV or AES-GCM-SIV; reject or strictly validate zero-length ciphertext messages using these modes until patched; do not treat AAD-only messages as authoritative unless the cryptographic library is fixed; avoid AES-SIV/AES-GCM-SIV in affected OpenSSL provider paths where feasible; and ensure decryption contexts are freshly initialized or correctly reset between messages, especially for AES-SIV. The OpenSSL FIPS modules for the listed branches are not affected because these algorithms are outside the FIPS module boundary.

How to confirm the fix worked

Confirm the installed OpenSSL package or embedded library version includes the vendor fix for this issue. Verify both runtime and build-time linkage because applications may statically link OpenSSL or bundle their own copy. Review application code for use of EVP cipher implementations corresponding to AES-SIV or AES-GCM-SIV and for decryption paths that process AAD and then finalize without a ciphertext update when ciphertext length is zero. Add or run regression tests that attempt to decrypt a message with arbitrary AAD, empty ciphertext, and a 16-byte all-zero tag; the fixed behavior should reject the message. Validate that services were restarted after package updates and that container images, appliances, language runtime bindings, and vendored dependencies have been rebuilt or refreshed.

Typical attack path

  1. Identify an application or service using OpenSSL 3.x EVP APIs with AES-SIV or AES-GCM-SIV in a custom protocol.
  2. Confirm the protocol accepts messages where AAD is present but ciphertext length is zero.
  3. Craft a message with attacker-controlled AAD, empty ciphertext, and a 16-byte all-zero authentication tag.
  4. Send the forged message to the target service over the normal application protocol.
  5. Rely on the vulnerable OpenSSL decryption flow to finalize successfully without recomputing the expected tag.
  6. Trigger application behavior that trusts the forged AAD as authenticated data.
  7. For AES-SIV specifically, exploitability also depends on decryption context reuse without resetting the key.

How to detect it

This vulnerability does not create a universal host-level artifact, process name, file path, or registry key. Detection depends on application and protocol telemetry. Review logs from services that use AES-SIV or AES-GCM-SIV for records of successful decryptions or accepted requests where ciphertext length is zero, AAD is present, and the authentication tag is all zeros. Pay particular attention to AAD-only messages that caused authorization decisions, command execution, state transitions, object creation, metadata changes, or other sensitive actions. Network inspection may be possible only where the custom protocol format exposes the tag and ciphertext length; look for empty encrypted payload fields paired with a 16-byte all-zero tag. Source-code and binary review can help scope exposure by searching for EVP usage of AES-SIV or AES-GCM-SIV, calls to EVP_DecryptFinal_ex, and conditional logic that skips ciphertext update processing for zero-length payloads. For suspected exploitation, correlate unusual AAD-only accepted messages with downstream application actions and account/session context at the same timestamp.

  • 00000000000000000000000000000000
  • AES-GCM-SIV
  • AES-SIV
  • EVP_DecryptFinal_ex

What your security team should do

  • Prioritize inventory of systems and applications using OpenSSL 3.x with custom cryptographic protocols, especially those using AES-GCM-SIV or AES-SIV through EVP APIs.
  • Patch OpenSSL through vendor-supported packages or rebuild bundled/static OpenSSL copies as soon as fixed builds are available.
  • Ask application teams to review whether AAD-only or zero-ciphertext messages are accepted and whether AAD influences authorization, command handling, identity, routing, or state changes.
  • Temporarily block, reject, or add explicit application-layer validation for zero-length ciphertext messages using AES-SIV or AES-GCM-SIV where operationally safe.
  • Add negative cryptographic tests for empty ciphertext plus all-zero tag cases to CI/CD test suites for affected custom protocols.
  • Hunt application logs for accepted zero-length encrypted messages, all-zero authentication tags, unusual AAD-only requests, or state-changing operations with no encrypted payload.
  • Track vendor advisories for downstream products that bundle OpenSSL, not only operating system OpenSSL packages.
  • Treat internet-exposed custom services using these cipher modes with higher urgency, even though the vulnerability is not currently KEV-listed and EPSS is low.

The record

Issue summary: The implementations of AES-SIV (RFC 5297) and AES-GCM-SIV (RFC 8452) mishandle the authentication of AAD (Additional Authenticated Data) with an empty ciphertext allowing a forgery of such messages. Impact summary: An attacker can forge empty messages with arbitrary AAD to the victim's application using these ciphers. AES-SIV (RFC 5297) and AES-GCM-SIV (RFC 8452) are nonce-misuse-resistant AEAD modes: they accept a key, nonce, optional AAD (bytes that are authenticated but not encrypted), and plaintext, and produces ciphertext plus a 16-byte tag. On decrypt, `EVP_DecryptFinal_ex()` is documented to return success only if the tag is verified succesfully. In OpenSSL's provider implementation of these ciphers, the expected tag is computed only when decryption function is invoked with non-empty data. If the caller supplies AAD and then calls `EVP_DecryptFinal_ex()` without invocation of the ciphertext update, which can happen when the received ciphertext length is zero, the tag is never recalculated and still holds its all-zeros value. When AES-GCM-SIV is used, an attacker who sends arbitrary AAD, empty ciphertext, and all-zeros tag passes authentication under any key they do not know, single-shot. When AES-SIV is used, for mounting the attack it's necessary for the application to reuse the decryption context without resetting the key. AES-SIV is implemented since OpenSSL 3.0. AES-GCM-SIV is implemented since OpenSSL 3.2. No protocols implemented in OpenSSL itself (TLS/CMS/PKCS7/HPKE/QUIC) support either AES-GCM-SIV or AES-SIV. To mount an attack, the applications must implement their own protocol and use the EVP interface. Also they must skip the ciphertext update when a message with an empty ciphertext arrives. The FIPS modules in 4.0, 3.6, 3.5, 3.4, and 3.0 are not affected by this issue, as these algorithms are not FIPS approved and the affected code is outside the OpenSSL FIPS module boundary.

Affected packages

Ecosystem Package Introduced Fixed
openSUSE:Leap 16.0 openssl-3 0 3.5.0-160000.8.1
openSUSE:Tumbleweed openssl-3 0 3.5.3-6.1

Related vulnerabilities