CVE-2026-23414

HIGH

tls: Purge async_hold in tls_decrypt_async_wait()

Title source: cna
STIX 2.1

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. [[email protected]: added leak comment]

Scores

CVSS v3 7.5
EPSS 0.0003
EPSS Percentile 10.1%
Attack Vector NETWORK
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Details

CWE
CWE-401
Status published
Products (20)
Linux/Linux < 6.18
Linux/Linux 39dec4ea3daf77f684308576baf483b55ca7f160 - 6dc11e0bd0a5466bcc76d275c09e5537bd0597dd
Linux/Linux 4fc109d0ab196bd943b7451276690fb6bb48c2e0
Linux/Linux 6.1.168 - 6.1.*
Linux/Linux 6.12.80 - 6.12.*
Linux/Linux 6.18
Linux/Linux 6.18.21 - 6.18.*
Linux/Linux 6.19.11 - 6.19.*
Linux/Linux 6.6.131 - 6.6.*
Linux/Linux 7.0
... and 10 more
Published Apr 02, 2026
Tracked Since Apr 02, 2026