CVE-2021-47131

net/tls: Fix use-after-free after the TLS device goes down and up

HIGH
7.8
CVSS Score
Published: March 15, 2024 at 08:14 PM UTC
Updated: August 5, 2026 at 09:24 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.8
Exploit prediction
EPSS 0.8%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: net/tls: Fix use-after-free after the TLS device goes down and up When a netdev with active TLS offload goes down, tls_device_down is called to stop the offload and tear down the TLS context. However, the socket stays alive, and it still points to the TLS context, which is now deallocated. If a netdev goes up, while the connection is still active, and the data flow resumes after a number of TCP retransmissions, it will lead to a use-after-free of the TLS context. This commit addresses this bug by keeping the context alive until its normal destruction, and implements the necessary fallbacks, so that the connection can resume in software (non-offloaded) kTLS mode. On the TX side tls_sw_fallback is used to encrypt all packets. The RX side already has all the necessary fallbacks, because receiving non-decrypted packets is supported. The thing needed on the RX side is to block resync requests, which are normally produced after receiving non-decrypted packets. The necessary synchronization is implemented for a graceful teardown: first the fallbacks are deployed, then the driver resources are released (it used to be possible to have a tls_dev_resync after tls_dev_del). A new flag called TLS_RX_DEV_DEGRADED is added to indicate the fallback mode. It's used to skip the RX resync logic completely, as it becomes useless, and some objects may be released (for example, resync_async, which is allocated and freed by the driver).

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

4.18 ≤ v < 5.10.434.18 ≤ v < 5.12.104.18 ≤ v < 5.135.11 ≤ v < 5.12.105.13 rc15.13 rc25.13 rc35.13 rc4e8f69799810c32dd40c6724d829eccc70baad07f
Vendor states this is fixed in 0f1e6fe66977a864fe850522316f713d7b926fd9 (fixed)
Vendor states this is fixed in c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4 (fixed)
Vendor states this is fixed in f1d4184f128dede82a59a841658ed40d4e6d3aa2 (fixed)
Vendor states this is fixed in 4.18 (unaffected)
Vendor states this is fixed in 5.10.43 (unaffected)
Vendor states this is fixed in 5.12.10 (unaffected)
Vendor states this is fixed in 5.13 (unaffected)

References (3)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/0f1e6fe66977a864fe850522316f713d7b926fd9
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/f1d4184f128dede82a59a841658ed40d4e6d3aa2

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
HIGH
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-416

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card