CVE-2026-23414: tls: Purge async_hold in tls_decrypt_async_wait()

Published Apr 2, 2026
·
Updated

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

tls: Purge asynchold in tlsdecryptasyncwait()

The asynchold queue pins encrypted input skbs while the AEAD engine references their scatterlist data. Once tlsdecryptasyncwait() 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 tlsswreadsock(), introducing a new call site that must drain pending AEAD operations and release held skbs. Move skbqueuepurge(&ctx->asynchold) into tlsdecryptasyncwait() so the purge is centralized and every caller -- recvmsg's drain path, the -EBUSY fallback in tlsdodecryption(), and the new readsock batch path -- releases held skbs on synchronization without each site managing the purge independently.

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

[pabeni@redhat.com: added leak comment]

Affected Software

16 affected componentsFixes available
Linux Linux kernel
Linux Linux kernel>=6.1.158<6.1.168
Linux Linux kernel>=6.6.114<6.6.131
Linux Linux kernel>=6.12.55<6.12.80
Linux Linux kernel>=6.17.5<6.18
Linux Linux kernel>=6.18.1<6.18.21
Linux Linux kernel>=6.19<6.19.11
Linux Linux kernel=6.18
Linux Linux kernel=7.0-rc1
Linux Linux kernel=7.0-rc2
Linux Linux kernel=7.0-rc3
Linux Linux kernel=7.0-rc4
Linux Linux kernel=7.0-rc5
Linux Linux kernel=7.0-rc6
Linux Linux kernel=7.0-rc7
Microsoft azl3 kernel 6.6.130.1-3

Event History

Apr 2, 2026
CVE Published
via MITRE·11:40 AM
Data Sourced
via MITRE·11:40 AM
DescriptionSeverity
Data Sourced
via NVD·12:16 PM
RemedyDescriptionSeverityWeaknessAffected Software
Apr 26, 2026
Data Sourced
via Microsoft·08:05 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·08:05 AM
Affected Software
Updated
via Microsoft·08:05 AM
DescriptionSeverity

Frequently Asked Questions

1

Which deployments are affected?

The affected software listed is the Linux kernel and Microsoft azl3 kernel 6.6.130.1-3. The issue is in the kernel TLS software receive/decryption path.

2

What conditions trigger the leak?

The leak can occur during asynchronous TLS decryption when tls_strp_msg_hold() fails after it has already placed some cloned skbs on the async_hold queue. Pending decryptions are synchronized, but the held skbs may not be flushed by the receive path.

3

What is the operational impact?

Encrypted input skbs can remain pinned after the AEAD engine has finished using them, causing a memory leak. The supplied severity vector rates the availability impact as high, with no confidentiality or integrity impact.

4

What does the resolved change do?

It centralizes purging of the async_hold queue in tls_decrypt_async_wait(), after all pending AEAD operations have completed. This ensures held skbs are released for the recvmsg drain path, the -EBUSY fallback, and the batch read_sock path.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203