9.8
CRITICAL CVSS 3.1
CVE-2026-31533
net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption
Description

In the Linux kernel, the following vulnerability has been resolved: net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 ("net: tls: handle backlogging of crypto requests"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry. When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist. The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record. Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.

INFO

Published Date :

April 23, 2026, 6:16 p.m.

Last Modified :

April 29, 2026, 2:51 p.m.

Remotely Exploit :

Yes !

Source :

416baaa9-dc9f-4396-8d5f-8c081fb06d67
Affected Products

The following products are affected by CVE-2026-31533 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

ID Vendor Product Action
1 Linux linux_kernel
CVSS Scores
The Common Vulnerability Scoring System is a standardized framework for assessing the severity of vulnerabilities in software and systems. We collect and displays CVSS scores from various sources for each CVE.
Score Version Severity Vector Exploitability Score Impact Score Source
CVSS 3.1 CRITICAL 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Solution
Fix a use-after-free flaw in the Linux kernel's net/tls encryption path.
  • Update the Linux kernel to the fixed version.
  • Review crypto request handling logic.
  • Ensure proper cleanup of encryption resources.
  • Validate scatterlist entry restoration.
Public PoC/Exploit Available at Github

CVE-2026-31533 has a 2 public PoC/Exploit available at Github. Go to the Public Exploits tab to see the list.

CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-31533 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2026-31533 weaknesses.

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Framework modular Bash para auditar CVE-2026-31431 (CopyFail) y CVEs relacionados del kernel Linux en distros RPM-based (AlmaLinux, Rocky, CentOS Stream 8/9/10)

Shell

Updated: 1 week, 2 days ago
1 stars 0 fork 0 watcher
Born at : May 4, 2026, 5:25 p.m. This repo has been linked 6 different CVEs too.

Linux Kernel Security Patches & Analysis - CVEs 2026 - Includes custom kernel for NVIDIA CUDA support

Shell

Updated: 1 week, 4 days ago
0 stars 0 fork 0 watcher
Born at : May 2, 2026, 6:11 p.m. This repo has been linked 5 different CVEs too.

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2026-31533 vulnerability anywhere in the article.

The following table lists the changes that have been made to the CVE-2026-31533 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • Initial Analysis by [email protected]

    Apr. 29, 2026

    Action Type Old Value New Value
    Added CWE CWE-416
    Added CPE Configuration OR *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.7.6 up to (excluding) 6.8 *cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.15.160 up to (excluding) 5.15.203 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.1.84 up to (excluding) 6.1.169 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.13 up to (excluding) 6.18.23 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.19 up to (excluding) 6.19.13 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.6.18 up to (excluding) 6.6.135 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.8.1 up to (excluding) 6.12.82
    Added Reference Type kernel.org: https://git.kernel.org/stable/c/02f3ecadb23558bbe068e6504118f1b712d4ece0 Types: Patch
    Added Reference Type kernel.org: https://git.kernel.org/stable/c/0e43e0a3c94044acc74b8e0927c27972eb5a59e8 Types: Patch
    Added Reference Type kernel.org: https://git.kernel.org/stable/c/2694d408b0e595024e0fc1d64ff9db0358580f74 Types: Patch
    Added Reference Type kernel.org: https://git.kernel.org/stable/c/414fc5e5a5aff776c150f1b86770e0a25a35df3a Types: Patch
    Added Reference Type kernel.org: https://git.kernel.org/stable/c/5d70eb25b41e9b010828cd12818b06a0c3b04412 Types: Patch
    Added Reference Type kernel.org: https://git.kernel.org/stable/c/a9b8b18364fffce4c451e6f6fd218fa4ab646705 Types: Patch
    Added Reference Type kernel.org: https://git.kernel.org/stable/c/aa9facde6c5005205874c37db3fd25799d741baf Types: Patch
  • CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67

    Apr. 27, 2026

    Action Type Old Value New Value
    Added CVSS V3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67

    Apr. 23, 2026

    Action Type Old Value New Value
    Added Description In the Linux kernel, the following vulnerability has been resolved: net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 ("net: tls: handle backlogging of crypto requests"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry. When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist. The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record. Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.
    Added Reference https://git.kernel.org/stable/c/02f3ecadb23558bbe068e6504118f1b712d4ece0
    Added Reference https://git.kernel.org/stable/c/0e43e0a3c94044acc74b8e0927c27972eb5a59e8
    Added Reference https://git.kernel.org/stable/c/2694d408b0e595024e0fc1d64ff9db0358580f74
    Added Reference https://git.kernel.org/stable/c/414fc5e5a5aff776c150f1b86770e0a25a35df3a
    Added Reference https://git.kernel.org/stable/c/5d70eb25b41e9b010828cd12818b06a0c3b04412
    Added Reference https://git.kernel.org/stable/c/a9b8b18364fffce4c451e6f6fd218fa4ab646705
    Added Reference https://git.kernel.org/stable/c/aa9facde6c5005205874c37db3fd25799d741baf
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.