Description
In the Linux kernel, the following vulnerability has been resolved:

tls: Purge async_hold in tls_decrypt_async_wait()

The async_hold queue pins encrypted input skbs while
the AEAD engine references their scatterlist data. Once
tls_decrypt_async_wait() returns, every AEAD operation
has completed and the engine no longer references those
skbs, so they can be freed unconditionally.

A subsequent patch adds batch async decryption to
tls_sw_read_sock(), introducing a new call site that
must drain pending AEAD operations and release held
skbs. Move __skb_queue_purge(&ctx->async_hold) into
tls_decrypt_async_wait() so the purge is centralized
and every caller -- recvmsg's drain path, the -EBUSY
fallback in tls_do_decryption(), and the new read_sock
batch path -- releases held skbs on synchronization
without each site managing the purge independently.

This fixes a leak when tls_strp_msg_hold() fails part-way through,
after having added some cloned skbs to the async_hold
queue. tls_decrypt_sg() will then call tls_decrypt_async_wait() to
process all pending decrypts, and drop back to synchronous mode, but
tls_sw_recvmsg() only flushes the async_hold queue when one record has
been processed in "fully-async" mode, which may not be the case here.

[pabeni@redhat.com: added leak comment]
Published: 2026-04-02
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Memory Leak leading to Potential Denial of Service
Action: Apply Patch
AI Analysis

Impact

A defect in the Linux kernel's TLS subsystem prevents queued encrypted packets from being released after asynchronous decryption completes. The async_hold queue retains skbs until all cryptographic work finishes, but the purge was not centralized, causing some packets to remain allocated when the entire decryption path drops out to synchronous mode. This results in a memory leak that grows over time and can eventually exhaust system memory. The flaw is specific to the AEAD engine and is triggered by TLS traffic that exercises the asynchronous decryption path, so it can affect any network service that relies on TLS for inbound data. The impact is an increase in kernel heap usage and a high probability of a denial‑of‑service condition from memory exhaustion, though it does not provide privilege escalation or code execution.

Affected Systems

Systems running the Linux kernel are affected. The vulnerable releases are those that contain the pre‑patch async_hold handling; specific kernel versions are not listed in the advisory, so all kernels that have not applied the described patch are at risk.

Risk and Exploitability

No CVSS or EPSS score is included in the advisory, and the vulnerability is not listed in CISA’s KEV catalog, indicating it is not a known exploited vulnerability. The flaw is local to the kernel TLS decrypt routine, so the likely attack vector is through crafted TLS traffic sent to a listening service that uses TLS. While the core payload just leaks memory, repeated exploitation could lead to a local or remote denial‑of‑service by exhausting memory resources.

Generated by OpenCVE AI on April 2, 2026 at 13:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the patch for async_hold purging in tls_decrypt_async_wait() (see the provided commit URLs).
  • If a kernel upgrade is delayed, monitor kernel memory usage for TLS sockets and consider limiting TLS traffic volume as a temporary containment.

Generated by OpenCVE AI on April 2, 2026 at 13:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 02 Apr 2026 12:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: tls: Purge async_hold in tls_decrypt_async_wait() The async_hold queue pins encrypted input skbs while the AEAD engine references their scatterlist data. Once tls_decrypt_async_wait() returns, every AEAD operation has completed and the engine no longer references those skbs, so they can be freed unconditionally. A subsequent patch adds batch async decryption to tls_sw_read_sock(), introducing a new call site that must drain pending AEAD operations and release held skbs. Move __skb_queue_purge(&ctx->async_hold) into tls_decrypt_async_wait() so the purge is centralized and every caller -- recvmsg's drain path, the -EBUSY fallback in tls_do_decryption(), and the new read_sock batch path -- releases held skbs on synchronization without each site managing the purge independently. This fixes a leak when tls_strp_msg_hold() fails part-way through, after having added some cloned skbs to the async_hold queue. tls_decrypt_sg() will then call tls_decrypt_async_wait() to process all pending decrypts, and drop back to synchronous mode, but tls_sw_recvmsg() only flushes the async_hold queue when one record has been processed in "fully-async" mode, which may not be the case here. [pabeni@redhat.com: added leak comment]
Title tls: Purge async_hold in tls_decrypt_async_wait()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-04-02T11:40:55.746Z

Reserved: 2026-01-13T15:37:46.014Z

Link: CVE-2026-23414

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-04-02T12:16:20.633

Modified: 2026-04-02T12:16:20.633

Link: CVE-2026-23414

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-02T20:21:29Z

Weaknesses

No weakness.