This tracker is no longer updated. It was published on 2026-09-20, two days after CISA added CVE-2025-39682 to its Known Exploited Vulnerabilities catalog, as a record of when each distribution shipped the year-old fix: every tracked row was already fixed or not affected, so there is nothing left to watch. Versions and dates below are as of 2026-09-20.
Summary
| Field | Detail |
|---|---|
| CVE ID | CVE-2025-39682 |
| Alias | None — the kernel CNA record gives no nickname and no public exploit names one; CISA lists it as Linux Kernel Improper Check for Unusual or Exceptional Conditions Vulnerability |
| Component | Kernel: net/tls software receive path (kTLS) — tls_sw_recvmsg() and its per-call record-type check in net/tls/tls_sw.c, on TCP sockets with the TLS upper-layer protocol (ULP) attached |
| Type | Logic error (CWE-754) in per-recvmsg() record-type handling → a record that had to be queued is instead zero-copy decrypted → use-after-free / double-free of receive sk_buffs |
| Impact | Remote kernel memory corruption driven by the TLS peer: freed kernel heap copied into the receiver’s buffer (information disclosure), attacker-influenced write-after-free of socket buffers, and a reliable remote kernel crash (DoS). Exploited in the wild per CISA (KEV, 2026-09-18). Reachable only where kTLS receive is in use |
| Upstream fix | 62708b9452f8 (tls: fix handling of zero-length records on the rx_list); first in v6.17-rc3, backported to 6.1.149, 6.6.103, 6.12.44, and 6.16.4 (all tagged 2025-08-28) |
| Introduced | 84c61fe1a75b (tls: rx: do not use the standard strparser) in v6.0 (2022-07-22) — the kTLS-specific record parser whose rx_list handling the fix corrects |
| Affected window | 6.0 through 6.16.3 (and 6.17 before -rc3). Every maintained upstream line is fixed or out of window: 5.15.y and 5.10.y predate the introducing commit |
| Discoverer | Muhammad Alifa Ramdhan and Billy Jheng Bing-Jhong (STAR Labs) — credited Reported-by on the fix |
| Public disclosure | 2025-08-20 (fix posted to netdev); 2025-09-05 (CVE published by the kernel CNA); 2026-09-18 (added to CISA’s KEV catalog) |
| Public PoC | No public exploit is known. The kernel selftest added alongside the fix (a61a3e961baf, selftests: tls: add tests for zero-length records) reproduces the trigger deterministically; CISA reports in-the-wild exploitation without publishing details |
| KEV / EPSS / CVSS | In CISA KEV since 2026-09-18 — remediation due 2026-09-21 under BOD 26-04, forensic triage required, known ransomware use Unknown. Kernel CNA CVSS 3.1 9.8 CRITICAL (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H); NVD 7.1 HIGH (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H); Red Hat 7.0 HIGH, impact Moderate; SUSE 7.0. EPSS ~1.2% (67th percentile, 2026-09-19). See Scoring below |
| Reachability | Only a socket with the kTLS ULP attached (CONFIG_TLS, setsockopt(SOL_TCP, TCP_ULP, "tls") plus receive keys) runs the vulnerable path — OpenSSL or GnuTLS with kTLS enabled, NFS over TLS via the in-kernel handshake upcall, and similar (the kernel CNA’s scoring also names SMB/RPC over TLS). The attacker is the remote TLS peer, holding no privileges on the host: any client of a kTLS server, or a malicious server a kTLS client connects to. A [DATA] [zero-length non-DATA] [DATA] record sequence triggers it on the victim’s ordinary recvmsg() loop — no race to win and no memory-layout dependency. A host that never attaches kTLS is not exposed, even with the tls module loaded |
⚠️ CISA reports active exploitation — a year after the fix shipped. The kernel fix landed in August 2025 and reached every affected upstream stable line in the same week; every distribution row tracked here has since shipped it or was never affected. The remaining exposure is hosts still booting a kernel built before autumn 2025, and especially hosts that terminate TLS in the kernel — NFS over TLS, and web or proxy servers with kTLS turned on. Compare the running kernel with the First fixed column for its distribution and reboot into a fixed build; where that is not possible today, block the
tlsmodule or disable kTLS in the application until it is.
How the exploitation chain works
kTLS lets the kernel decrypt TLS records on the receive path and hand
plaintext straight to recvmsg(). Each recvmsg() call is allowed to
return either any number of contiguous DATA records or exactly one
non-DATA record (an alert, a handshake message, application-defined
control data): the record type is reported through cmsg, so records of
different types must never be merged into one call. When the next record
turns out to have a different type from what the call has already
returned, the receive loop stops. Under TLS 1.3 the type is only known
after decryption, so a record that has already been decrypted but does not
fit the current call is queued on rx_list, and the next recvmsg()
starts by draining that list.
A second rule interacts with the first. DATA records may be decrypted
zero-copy, straight into the caller’s buffer, in which case there is
no plaintext sk_buff left to queue; the code relies on the fact that a
non-DATA record always ends the loop, so a zero-copy record can never be
followed by one that would have to be queued. The corner case the code
missed is a call whose first record comes from rx_list and is zero
length: nothing was copied, so the “already returned a non-DATA record”
test — written as copied && control != TLS_RECORD_TYPE_DATA — did not
fire, the loop carried on into the main decrypt path with zero-copy still
permitted, and a following record of the other type was handled on the
assumption that it could be queued when it could not.
From that point the kTLS record parser’s bookkeeping is wrong. Per the
kernel CNA’s scoring rationale, the parser’s anchor sk_buff is queued
on rx_list after the TCP receive queue behind it has already been
released, so the next recvmsg() copies freed kernel heap into the
user buffer; the live anchor is consumed while the parser still uses it,
after which incoming attacker-controlled TCP bytes are written into the
freed buffer; and socket teardown double-frees the anchor and its
fragment list. Any of these corrupts slab state reliably enough to crash
the kernel on demand, and the write-after-free is the kind of primitive
that control-flow hijacks are built from. The remote peer chooses the
record sequence, so the whole trigger is driven from the wire.
The fix, 62708b9452f8, is a handful of lines: it treats content type 0
as “no type reported yet” and stops the loop whenever a non-DATA record
has been seen — control && control != TLS_RECORD_TYPE_DATA — so a
zero-length first record no longer defeats the check.
ℹ️ kTLS in use is the gate. The vulnerable code runs only for sockets that have the TLS ULP attached with receive keys installed. A kernel that merely has
CONFIG_TLSbuilt, or thetlsmodule loaded, is not reachable until some application (a kTLS-enabled web server, NFS over TLS, a kTLS-enabled client library) sets it up. On such a host the peer needs no privileges and no user interaction, which is why the kernel CNA scores it network-reachable and critical while NVD, scoring the impact on the socket owner, calls it local. Only the kernel backport flips a verdict below; blocking the module or disabling kTLS is a mitigation, never a fix.
Vulnerable commit range
| Commit | Role | Description |
|---|---|---|
84c61fe1a75b | Introduced | tls: rx: do not use the standard strparser (v6.0, 2022) — gives kTLS its own record parser and the rx_list anchor handling whose zero-length corner case the fix addresses. |
62708b9452f8 | Fixed | tls: fix handling of zero-length records on the rx_list — initialises the per-call content type to “unset” and ends the receive loop as soon as a non-DATA record has been seen; first released in v6.17-rc3, backported to stable 6.1.149, 6.6.103, 6.12.44, and 6.16.4. |
The reachable window is therefore 6.0 through 6.16.3 (and 6.17 before
-rc3). A kernel is safe by carrying the fix or by predating the v6.0
parser rewrite.
Patch status
A row is Fixed only if its kernel carries the 62708b9452f8
fix — a release at or past its branch’s first-fixed version, or an
explicit distro backport. The fix reached every affected upstream stable
line on 2025-08-28, and the lines cut since then (6.18, 7.0, 7.1, 7.2)
have carried it from their first release. Every tracked distribution has
shipped it too, most of them in September or October 2025, so the table
below is a record of when each row was fixed rather than a watch list —
the operator’s question is whether a given host has actually rebooted
into one of those builds. The 5.15 and 5.10 upstream lines, and Rocky
Linux / RHEL 8, predate the vulnerable code and are Not affected.
The first group is the upstream kernel; the rest are a focused set of x86-64 distributions, with per-distribution detail in the sections that follow. Current kernel is what each row shipped when this tracker was archived (2026-09-20); First fixed and Fixed since name the first fixed build and the day it shipped.
| Distribution | Release | Current kernel | First fixed | Fixed since | Status |
|---|---|---|---|---|---|
| Linux kernel | mainline | 7.3-rc3 | 6.17-rc3 | 2025-08-24 | ✅ Fixed — carries 62708b9452f8 |
| Linux kernel | 7.2.x | 7.2.6 | 7.2 | 2026-08-16 | ✅ Fixed |
| Linux kernel | 7.1.x | 7.1.13 | 7.1 | 2026-06-14 | ✅ Fixed — EOL |
| Linux kernel | 6.18.x | 6.18.52 | 6.18 | 2025-11-30 | ✅ Fixed — LTS |
| Linux kernel | 6.12.x | 6.12.110 | 6.12.44 | 2025-08-28 | ✅ Fixed — LTS |
| Linux kernel | 6.6.x | 6.6.157 | 6.6.103 | 2025-08-28 | ✅ Fixed — LTS |
| Linux kernel | 6.1.x | 6.1.188 | 6.1.149 | 2025-08-28 | ✅ Fixed — LTS |
| Linux kernel | 5.15.x | 5.15.221 | — | — | ➖ Not affected — predates the v6.0 parser rewrite |
| Linux kernel | 5.10.x | 5.10.270 | — | — | ➖ Not affected — predates the v6.0 parser rewrite |
| Debian | sid (unstable) | 7.2.6-1 | 6.16.5-1 | 2025-09-08 | ✅ Fixed |
| Debian | forky (testing) | 7.1.13-1 | 6.16.7-1 | 2025-09-17 | ✅ Fixed |
| Debian | 13 (trixie) | 6.12.107-1 | 6.12.48-1 | 2025-09-22 | ✅ Fixed — DSA-6008-1 |
| Debian | 12 (bookworm, LTS) | 6.1.187-1 | 6.1.153-1 | 2025-09-22 | ✅ Fixed — DSA-6009-1 |
| Debian | 12 (6.12 opt-in) | 6.12.95-1~bpo12+1 | 6.12.57-1~bpo12+1 | 2025-11-06 | ✅ Fixed — bookworm-backports |
| Proxmox VE | 9 (default) | 7.0.14-17-pve | 6.14.11-3-pve | 2025-09-22 | ✅ Fixed — Ubuntu 6.14.0-34.34 rebase |
| Proxmox VE | 8 (default) | 6.8.12-43-pve | 6.8.12-16-pve | 2025-10-14 | ✅ Fixed — Ubuntu 6.8.0-88.89 rebase |
| Proxmox VE | 8 (6.14 opt-in) | 6.14.11-9-bpo12-pve | 6.14.11-5-bpo12-pve | 2025-12-15 | ✅ Fixed — Ubuntu 6.14.0-37.37 rebase |
| NixOS | master | 6.18.52 | 6.12.44 | 2025-08-28 | ✅ Fixed |
| NixOS | release-26.05 | 6.18.52 | 6.18.33 | 2026-05-24 | ✅ Fixed — branched after the fix |
| NixOS | Unstable | 6.18.52 | 6.12.44 | 2025-08-30 | ✅ Fixed |
| NixOS | Unstable (small) | 6.18.52 | 6.12.44 | 2025-08-28 | ✅ Fixed |
| NixOS | Unstable (nixpkgs) | 6.18.52 | 6.12.44 | 2025-08-30 | ✅ Fixed |
| NixOS | 26.05 | 6.18.52 | 6.18.33 | 2026-05-25 | ✅ Fixed — channel created after the fix |
| NixOS | 26.05 (small) | 6.18.52 | 6.18.33 | 2026-05-24 | ✅ Fixed — channel created after the fix |
| Rocky Linux / RHEL | 10 | 6.12.0-211.56.1.el10_2.0.1 | 6.12.0-55.37.1.el10_0 | 2025-10-07 | ✅ Fixed — RLSA-2025:16904 |
| Rocky Linux / RHEL | 9 | 5.14.0-687.49.1.el9_8 | 5.14.0-570.49.1.el9_6 | 2025-10-10 | ✅ Fixed — RLSA-2025:16880 |
| Rocky Linux / RHEL | 8 | 4.18.0-553.164.1.el8_10 | — | — | ➖ Not affected — per Red Hat, vulnerable code not present |
| Amazon Linux | 2023 (default) | 6.1.186-228.376 | 6.1.150-174.273 | 2025-09-10 | ✅ Fixed — ALAS2023-2025-1186 |
| Amazon Linux | 2023 (6.12 opt-in) | 6.12.103-129.197 | 6.12.46-66.121 | 2025-09-23 | ✅ Fixed — ALAS2023-2025-1208 |
| Amazon Linux | 2023 (6.18 opt-in) | 6.18.48-109.150 | 6.18.8-9.213 | 2026-03-02 | ✅ Fixed — stream created after the fix |
Linux kernel
The fix reached Linus in v6.17-rc3 (tagged 2025-08-24), four days after it was posted, and the stable maintainers carried it to every affected line in the 2025-08-28 point releases: 6.16.4, 6.12.44, 6.6.103, and 6.1.149. The 6.16 line has since reached end of life (final release 6.16.12, 2025-10-12) but every release from 6.16.4 onward carries the fix, so a host pinned to 6.16.y stays fixed as long as it is at or past 6.16.4. The same holds for the 6.17 and 7.0 lines, which were cut after the fix landed and have since gone EOL: every release on them is fixed.
Every line still maintained at archival (2026-09-20) is fixed or out of
window. The 6.18,
7.1, and 7.2 branches were all cut from a mainline that already
carried the fix, so they have been fixed since their first release; 7.1.y
has since reached end of life at 7.1.13, still fixed. 5.15.y and
5.10.y predate the v6.0 record-parser rewrite that introduced the
vulnerable path — the old shared strparser code does not have this bug
— so they are not affected and receive no backport.
To verify a tree directly, look for the control && control != TLS_RECORD_TYPE_DATA test in tls_sw_recvmsg() (net/tls/tls_sw.c);
a vulnerable kernel has copied && control != TLS_RECORD_TYPE_DATA
there instead.
Debian
Debian’s sid, forky, trixie, and bookworm all shipped the fix in
September 2025. sid took the
fixed 6.16.5-1 upload on 2025-09-08, and forky (testing, the future
Debian 14) became fixed when 6.16.7-1 migrated on 2025-09-17 — the first
fixed kernel to reach the suite. trixie (Debian 13) and bookworm
(Debian 12, under LTS) were fixed on the same day, 2025-09-22, by
DSA-6008-1 (6.12.48-1, trixie-security) and DSA-6009-1
(6.1.153-1, bookworm-security) respectively.
bookworm also offers a newer kernel through bookworm-backports
(the linux source package rebuilt from trixie’s 6.12 line); its first
fixed build, 6.12.57-1~bpo12+1, entered the archive on 2025-11-06, and
the 6.12.43 backport before it was vulnerable — a host that installed the
backports kernel in autumn 2025 and has not updated since is still on it.
A separate linux-6.12 source package for bookworm is queued in Debian’s
NEW queue at a version well past the fix, but has not been accepted
into the archive and cannot be installed yet.
bullseye (Debian 11) reached the end of its LTS window on 2026-08-31
and no longer receives updates. Its default 5.10 kernel predates the
vulnerable code, and its linux-6.1 opt-in kernel was fixed by
DLA-4328-1 (2025-10-13, 6.1.153-1~deb11u1) while the suite was
still supported — a bullseye host is exposed only if it opted into 6.1
and never took that update.
Proxmox VE
Proxmox ships its own Ubuntu-derived kernels, so Debian’s status does not
carry over, and Proxmox VE is x86-only. No PVE changelog names
CVE-2025-39682: the fix arrived silently inside routine rebases onto
Ubuntu sources that already carried it (Ubuntu fixed the 6.8 line in
6.8.0-86.87 and the 6.14 line in 6.14.0-34.34, both in autumn 2025).
PVE 9’s default kernel has carried the fix since 6.14.11-3-pve
(2025-09-22), the first proxmox-kernel-6.14 build rebased onto a fixed
Ubuntu 6.14 source, back when 6.14 was the PVE 9 default. The default
has since moved to proxmox-kernel-6.17 and then to proxmox-kernel-7.0,
both of which are based on upstream releases that already contained the
fix, so every PVE 9 default kernel since September 2025 is fixed.
PVE 8’s default proxmox-kernel-6.8 has carried the fix since
6.8.12-16-pve (2025-10-14), the first build rebased onto Ubuntu
6.8.0-88.89. PVE 8 also offers proxmox-kernel-6.14 as a
bookworm-backports opt-in, fixed since 6.14.11-5-bpo12-pve
(2025-12-15, rebased onto Ubuntu 6.14.0-37.37); Proxmox stopped
updating that series in May 2026, but every build from -5 onward is
fixed.
Both releases still publish older preview series that Proxmox abandoned
without ever rebasing past the fix — PVE 8’s proxmox-kernel-6.2,
6.5, and 6.11 — and a host still booting one of those is vulnerable
until it switches to its release’s current default. PVE 9’s superseded
proxmox-kernel-6.17 and proxmox-kernel-6.14 series are both fixed
(6.17 from its first build, 6.14 from 6.14.11-3).
NixOS
Every tracked ref’s default linuxPackages is linux_6_18, a series
that has carried the fix since its first release, so every tracked
NixOS ref is fixed — and has been since long before the current
default. When the fix shipped, in August 2025, the default was
linux_6_12: nixpkgs master picked up 6.12.44 on 2025-08-28, and
the channels republished it within two days (nixos-unstable-small the
same day, nixos-unstable and nixpkgs-unstable on 2025-08-30). The
release-26.05 branch and its nixos-26.05 / nixos-26.05-small
channels were created in May 2026 from a master that had carried the
fix for nine months, so they have been fixed from their first
publication.
nixpkgs also pins linux_6_1, linux_6_6, and linux_6_12 at or above
their branches’ first-fixed releases, so a host that overrides
boot.kernelPackages to an older LTS is fixed too, as long as it tracks
a current-enough ref; linux_5_15 and linux_5_10 are not affected.
Rocky Linux / RHEL family
RHEL-family kernels are long-lived forks, and the base version says
little about exposure: Red Hat had backported the v6.0 kTLS parser into
RHEL 9’s 5.14 kernel, so RHEL 9 and RHEL 10 were affected, while
RHEL 8’s 4.18 kernel never received it and is not affected (Red
Hat records the vulnerable code as not present). Red Hat rates the flaw
Moderate (CVSS 7.0) and fixed both affected releases on 2025-09-29:
RHSA-2025:16880 for RHEL 9 (kernel-5.14.0-570.49.1.el9_6) and
RHSA-2025:16904 for RHEL 10 (kernel-6.12.0-55.37.1.el10_0), with
matching kernel-rt errata. Rocky Linux rebuilt them as
RLSA-2025:16880 (2025-10-10) and RLSA-2025:16904 (2025-10-07),
and its current kernels are far past those builds; AlmaLinux and Oracle
Linux track the same RHSAs.
Red Hat’s own advice for a host that cannot yet reboot is to prevent the
tls module from loading (see Mitigation below). The kernel-rt
real-time kernel shares the base kernel’s status in every release.
Amazon Linux
All three AL2023 kernel streams are fixed. ALAS2023-2025-1186
(2025-09-10) fixed the default kernel stream (6.1 line) at
6.1.150-174.273.amzn2023, and ALAS2023-2025-1208 (2025-09-23) fixed
the kernel6.12 opt-in stream at 6.12.46-66.121.amzn2023. The
kernel6.18 opt-in stream was introduced with the AL2023.10.20260302
release on 2026-03-02, at a version that already carried the fix, so it
has never shipped a vulnerable build. Amazon Linux 2 reached end of
support on 2026-06-30 and is not tracked.
Detection
Is the running kernel in the affected window and missing the fix? Compare the running kernel against the Patch status table’s First fixed column for its distribution and series — a distro kernel below its first-fixed build is vulnerable, whatever its upstream version number looks like:
uname -r
Is kTLS receive actually in use? The kernel keeps per-namespace
counters once the tls module is loaded; a non-zero TlsCurrRxSw or
TlsCurrRxDevice means sockets are decrypting TLS in the kernel right
now, and the file being absent means the module is not currently loaded:
cat /proc/net/tls_stat
Is the tls module loaded or built in? lsmod shows a loaded
module; a kernel with CONFIG_TLS=y has it built in and no lsmod line:
lsmod | grep '^tls'
Which services could be attaching it? kTLS is opt-in per
application. The usual suspects are NFS mounts and exports with TLS
(xprtsec=tls or xprtsec=mtls), web and proxy servers with kTLS
enabled (nginx ssl_conf_command Options KTLS, HAProxy’s ktls,
OpenSSL-based servers setting SSL_OP_ENABLE_KTLS), and the tlshd
handshake daemon that NFS over TLS needs (its presence in
/etc/tlshd.conf or as a running service is itself the tell):
grep -rilE 'ktls|xprtsec|tlshd' /etc/nginx /etc/haproxy /etc/exports /etc/fstab 2>/dev/null
Public PoC
There was no public exploit for this bug when this tracker was
archived (2026-09-20). The
kernel’s own selftest, added the same day as the fix (a61a3e961baf,
selftests: tls: add tests for zero-length records in
tools/testing/selftests/net/tls.c), sends the triggering record
sequence over a loopback kTLS socket and reproduces the fault
deterministically on a vulnerable kernel, so anyone with the source can
build a trigger; that it is a one-shot, race-free trigger is why the
kernel CNA scores it low complexity. CISA’s KEV entry states that it is
being exploited but publishes no details. Treat it as
exploited-in-practice: patch, or apply the mitigations below.
Mitigation
The real fix is a patched kernel (a release at or past its line’s First fixed version, or the distro build named in the table). Until the host has rebooted into one, the exposure can be removed by keeping kTLS from being used — none of these is a fix, and all of them cost the performance kTLS was turned on for.
Block the tls module
Where nothing on the host needs kernel TLS, blocking the module closes
the path for every application at once. install … /bin/false is surer
than a plain blacklist, which only suppresses alias autoloading:
echo 'install tls /bin/false' | sudo tee /etc/modprobe.d/cve-2025-39682.conf
That rule prevents future loads only. If the module is already resident but no socket is using it, unload it so the block takes effect now:
sudo rmmod tls
A module that is genuinely in use cannot be unloaded — rmmod refuses,
and the services holding kTLS sockets have to be stopped or switched to
userspace TLS first. The rule is likewise inert on a kernel with
CONFIG_TLS=y built in; check with lsmod and the TlsCurr* counters
above. On NixOS, the equivalent is a module option:
boot.extraModprobeConfig = "install tls /bin/false";
Disable kTLS in the application
Where the host does need TLS but not kernel TLS, turn kTLS off in the
consumer and it falls back to userspace crypto: ssl_conf_command Options -KTLS in nginx, dropping SSL_OP_ENABLE_KTLS in OpenSSL-based services,
xprtsec=none (or plain unencrypted transport) for NFS mounts and
exports, and stopping the tlshd handshake daemon where nothing else
depends on it.
Limit who can reach kTLS listeners
Because the attacker is the remote peer, a kTLS server is exposed to every client that can complete a handshake — including anonymous ones, before any application-level authentication. Until patched, keep kTLS listeners off untrusted networks and behind allow-lists; a kTLS client is exposed to any server it connects to, so pin it to trusted endpoints.
Risk notes
- Kernel TLS terminators are the exposure. NFS over TLS, and web or proxy servers with kTLS enabled, expose the receive path to every remote peer that can complete a TLS handshake; the trigger is a three-record sequence with no race and no privileges. Hosts that never attach kTLS are not reachable.
- This is a stale-kernel problem, not a missing-fix problem. Every
tracked distribution shipped the fix between August 2025 and March
2026, so a currently-updated host is fixed; the hosts CISA’s deadline
is aimed at are the ones that have not rebooted into a kernel from the
last year. Check
uname -ragainst the First fixed column, not the date of the lastapt upgrade. - The scores disagree on purpose. The kernel CNA’s 9.8 reflects the remote, unauthenticated peer; NVD’s 7.1 and Red Hat’s 7.0 score the impact on the socket owner and the kTLS-in-use precondition. Both are right about different hosts: a kTLS-serving host should read the 9.8.
- Old kernels are safe by age here. Unlike many kernel CVEs, this one has a hard lower bound: 5.15.y, 5.10.y, and RHEL 8’s 4.18 kernel predate the v6.0 kTLS parser rewrite and are not affected, and the kernel CNA, Ubuntu, and Red Hat all record them so.
- Backports available (CVE-2025-39682): the fix has landed in mainline 6.17-rc3 and stable 6.16.4, 6.12.44, 6.6.103, and 6.1.149, and every line cut since (6.18, 7.0, 7.1, 7.2) has carried it from its first release; distro kernels that have not adopted one of those remain vulnerable.
Verification log
Every verdict in the table above is backed by a checkable source. This log records the provenance — the git reference, advisory, or repository index that established each fact — so any row can be audited or reproduced. Most readers never need it.
Full verification log
Upstream
- Fix and introducing commit (via
~/src/linux/stableand the netdevnetmaintainer tree):- The fix is
62708b9452f8(tls: fix handling of zero-length records on the rx_list), authored 2025-08-19 by Jakub Kicinski. git describe --contains 62708b9452f8→v6.17-rc3~31^2~6; the v6.17-rc3 tag is dated 2025-08-24.- The diff touches
net/tls/tls_sw.conly (six insertions, one deletion): thecopied && control != TLS_RECORD_TYPE_DATAtest becomescontrol && control != TLS_RECORD_TYPE_DATA, with a comment declaring content type 0 “no type reported, yet”. - Its
Fixes:tag names84c61fe1a75b(tls: rx: do not use the standard strparser), authored 2022-07-22;describe --contains→v6.0-rc1~141^2~57^2, so v6.0 is the first affected release. - The reporters are the fix’s
Reported-bytags: Muhammad Alifa Ramdhan and Billy Jheng Bing-Jhong (STAR Labs). - The fix’s
Link:trailer points at the netdev posting of 2025-08-20. a61a3e961baf(selftests: tls: add tests for zero-length records, 2025-08-19, also in v6.17-rc3) adds the reproducing selftest totools/testing/selftests/net/tls.c.
- The fix is
- CVE record (
vulns.gitorigin/master,cve/published/2025/CVE-2025-39682.{json,dyad,cvss}):- The record is keyed on
62708b9452f8eb77513115b17c4f8d1a22ebf843. - The
.dyadlists6.0 → 6.1.149,6.0 → 6.6.103,6.0 → 6.12.44,6.0 → 6.16.4, and6.0 → 6.17; it has no pair for 5.15 or 5.10.
- The record is keyed on
- Stable backports (subject grep against
~/src/linux/stable, each bounded tov<series>..origin/linux-<series>.y):linux-6.1.y:2902c3ebcca5, released 6.1.149 (tag date 2025-08-28).linux-6.6.y:c09dd3773b59, released 6.6.103 (2025-08-28).linux-6.12.y:3439c15ae91a, released 6.12.44 (2025-08-28).linux-6.16.y:29c0ce3c8cdb, released 6.16.4 (2025-08-28).linux-6.16.yended at 6.16.12 (2025-10-12), fixed from 6.16.4 on.
- Lines cut after the fix (
git merge-base --is-ancestor 62708b9452f8 origin/linux-<series>.ysucceeds for each):linux-6.17.y: base tag v6.17 2025-09-28; ended at 6.17.13 (2025-12-18), fixed throughout.linux-6.18.y: base tag v6.18 2025-11-30.linux-7.0.y: base tag v7.0 2026-04-12; ended at 7.0.14 (2026-06-27), fixed throughout.linux-7.1.y: base tag v7.1 2026-06-14;finger_bannermarks it(EOL)at 7.1.13.linux-7.2.y: base tag v7.2 2026-08-16.
- Out-of-window lines:
linux-5.15.yandlinux-5.10.ydo not contain84c61fe1a75band carry no backport of the fix.
- Current kernel for the
Linux kernelrows is read from kernel.org’sfinger_banner.
Scoring
- Kernel CNA (
vulns.git.cvss, idf4215fc3-5b6b-47ff-a258-f7189bd81038):- CVSS 3.1 9.8 CRITICAL
(
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H). - Rationale, per the file:
AV:Nbecause the trigger is the record sequence from the remote peer on a kTLS socket;AC:Lbecause[DATA][zero-length non-DATA][DATA]fires deterministically on the ordinaryrecvmsg()loop and TLS 1.2 is zero-copy-capable by default;PR:Nbecause the peer is unprivileged on the target;C:Hfrom freed TCP receive skbs copied to userspace;I:Hfrom the anchor write-after-free;A:Hfrom the double-free.
- CVSS 3.1 9.8 CRITICAL
(
- NVD (
services.nvd.nist.govCVE 2.0 API):- Published 2025-09-05; status Undergoing Analysis; CWE-754.
- NVD’s own CVSS 3.1 is 7.1 HIGH
(
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H); the CNA’s 9.8 is carried as a secondary metric.
- CISA KEV (
known_exploited_vulnerabilities.json, catalog version 2026.09.18):dateAdded2026-09-18,dueDate2026-09-21.knownRansomwareCampaignUseUnknown; CWE-754; the required action cites BOD 26-04 and its forensic triage requirement.- Vulnerability name: Linux Kernel Improper Check for Unusual or Exceptional Conditions Vulnerability. No exploitation details are published.
- Red Hat (hydra
securitydata/cve/CVE-2025-39682.json, public 2025-09-05):- CVSS 3.1 7.0, impact Moderate.
- Statement: “This can be remotely triggered only when kernel TLS (CONFIG_TLS with the TLS ULP) is in use.”
- Mitigation: prevent the
tlsmodule from loading.
- SUSE (
suse.com/security/cve/CVE-2025-39682.html):- SUSE rating 7.0 (Important); the CNA’s 9.8 is shown alongside.
- SLES 15 SP6/SP7, SLES 16.0, SUSE Linux Micro 6.x, and openSUSE Leap 15.6/16.0 were patched from October 2025 — outside this tracker’s row set.
- EPSS (api.first.org, 2026-09-19): 1.2%, 66.8th percentile.
Distributions
- Debian (security tracker
data/json,linuxsource package,scope: local; dak madison; snapshot.debian.orgfirst_seen; security-trackerDSA/listandDLA/list; tracker.debian.org news):- sid resolved fixed; tracker
fixed_version6.16.5-1. 6.16.5-1was first seen in the archive 2025-09-08.- forky (testing) resolved fixed, same
fixed_version;6.16.5-1itself never migrated. - The first fixed kernel to reach testing was
6.16.7-1, MIGRATED to testing 2025-09-17; the previous migration,6.16.3-1on 2025-08-31, was vulnerable. - trixie resolved fixed;
fixed_version6.12.48-1, shipped as DSA-6008-1 dated 2025-09-22; snapshot first-seen the same day. - bookworm resolved fixed;
fixed_version6.1.153-1, shipped as DSA-6009-1 dated 2025-09-22; snapshot first-seen the same day. - The stable suites’ Current kernel values are the
<suite>-securityentries under the tracker’srepositories; sid’s and forky’s come from thesid/forkyentries. - The bookworm 6.12 opt-in row is the
linuxsource inbookworm-backports(madisons=bookworm-backports). - Its first build past the 6.12 first fix is
6.12.57-1~bpo12+1, first seen 2025-11-06; the build before it,6.12.43-1~bpo12+1(2025-08-28), was vulnerable. - The separate
linux-6.12source package appears only in dak’snewsuite (6.12.101-1~deb12u1,6.12.107-1~deb12u1) and has no tracker entry; it is not in the archive. - bullseye has no release entry for this CVE in the tracker JSON (its LTS window ended 2026-08-31).
- bullseye’s
linux-6.1opt-in was covered by DLA-4328-1 (2025-10-13,6.1.153-1~deb11u1).
- sid resolved fixed; tracker
- Ubuntu (
ubuntu.com/security/cves/CVE-2025-39682.json, priority medium, used for the Proxmox base):linuxreleased at6.8.0-86.87(noble) and6.14.0-34.34(plucky);linux-hwe-6.8released at6.8.0-86.87~22.04.1(jammy).- focal, jammy base, questing, and resolute are not-affected.
- The feed’s upstream entry cites
6.17~rc3, 6.8.y.
- Proxmox VE (
~/src/proxmox/pve-kernelchangelogs viaorigin/*; pve-no-subscriptionPackages.gzfor versions):- No changelog entry or
patches/kernel/*names CVE-2025-39682 or the fix’s subject on any branch; the fix arrived through Ubuntu rebases. proxmox-default-kernelon trixie depends onproxmox-kernel-7.0; on bookworm it depends onproxmox-kernel-6.8.- PVE 9 default: the series was 6.14 when the fix arrived;
trixie-6.14’s6.14.11-3(changelog entry dated 2025-09-22, “update kernel to Ubuntu-6.14.0-34.34”) is the first build on Ubuntu’s fixed version. trixie-6.14’s6.14.11-2(2025-09-12) was still on an earlier base.proxmox-kernel-6.17’s first build is6.17.0-1(2025-10-04) andproxmox-kernel-7.0’s first non-RC build is7.0.0-2(2026-04-14); both series are based on upstream releases containing the fix.- PVE 8 default:
bookworm-6.8’s6.8.12-16(2025-10-14) is the first build rebased ontoUbuntu-6.8.0-88.89, past Ubuntu’s6.8.0-86.87fix. bookworm-6.8’s6.8.12-14(2025-08-27) was on6.8.0-80.80and6.8.12-15(2025-09-12) carried no rebase.- PVE 8 6.14 opt-in:
bookworm-6.14’s6.14.11-5~bpo12+1(2025-12-15) is the first build rebased past the 6.14 fix (Ubuntu-6.14.0-37.37); the row shows it in the installed kernel package’s form,6.14.11-5-bpo12-pve. bookworm-6.14’s6.14.8-3~bpo12+1(2025-09-12) was on6.14.0-26.26; the series’ last build is6.14.11-9~bpo12+1(2026-05-15).- PVE Fixed since values are the changelog dates; publication to
pve-no-subscriptionfollowed each by days. - PVE 8’s
proxmox-kernel-6.2,6.5, and6.11never rebased past the fix; PVE 9’s supersededproxmox-kernel-6.17and-6.14are fixed as above.
- No changelog entry or
- NixOS (
~/src/nixos/nixpkgs,kernels-org.jsonandpackageAliases.linux_default; channel pins fromchannels.nixos.org/<channel>/git-revision):linux_default = packages.linux_6_18at every tracked ref, switched from 6.12 byefcd42d1bd87(2026-01-31).- Each row’s Current kernel is the
6.18versionkernels-org.jsonresolves at that ref. - When the fix shipped the default was
linux_6_12;masterbumped it to 6.12.44 inb98378bf28d9(2025-08-28) — the branch row’s First fixed / Fixed since. - Channel dates via
scripts/nixos-first-shipped <channel> b98378bf28d9:nixos-unstable-small2025-08-28 (nixos-25.11pre853160),nixos-unstable2025-08-30 (nixos-25.11pre854036),nixpkgs-unstable2025-08-30 (nixpkgs-25.11pre853439). release-26.05branched frommasterate6d53f728567(2026-05-24), wherekernels-org.jsonpins 6.18 at 6.18.33; the branch has carried a fixed default from its first commit.scripts/nixos-first-shipped <channel> e6d53f728567:nixos-26.05-small2026-05-24 andnixos-26.052026-05-25 (bothnixos-26.05beta1.705e9929918b).- The nixpkgs
6.1,6.6, and6.12pins are all past their branches’ first-fixed releases.
- Rocky Linux / RHEL family (Red Hat hydra securitydata JSON; Rocky
Apollo errata API; Rocky BaseOS
primary.xml.gz):- Red Hat
package_state: RHEL 6, 7, and 8Not affected(kernel and kernel-rt). - Red Hat
affected_release: RHEL 9 RHSA-2025:16880 (2025-09-29,kernel-0:5.14.0-570.49.1.el9_6). - Red Hat
affected_release: RHEL 10 RHSA-2025:16904 (2025-09-29,kernel-0:6.12.0-55.37.1.el10_0). - EUS/AUS errata for RHEL 9.2 and 9.4 followed in October 2025.
- Rocky republished them as RLSA-2025:16880 (published 2025-10-10, Rocky 9.6) and RLSA-2025:16904 (2025-10-07, Rocky 10.0) — the rows’ Fixed since.
- Each row’s Current kernel is the highest
kernelNVR in BaseOSprimary.xml.gz(rpm ordering).
- Red Hat
- Amazon Linux (AL2023
updateinfo.xml.gzviascripts/alas-cve CVE-2025-39682;primary.xml.gzfor versions; AWS release notes):kernel(6.1 line): ALAS2023-2025-1186, issued 2025-09-10, Important, fixed at6.1.150-174.273.amzn2023.kernel6.12: ALAS2023-2025-1208, issued 2025-09-23, Important, fixed at6.12.46-66.121.amzn2023.kernel6.18: no ALAS names the CVE because the stream never shipped a vulnerable build.kernel6.18was introduced as a core new package,kernel6.18-6.18.8-9.213.amzn2023, in the AL2023.10.20260302 release notes (2026-03-02).- Per-stream Current kernel values are read from
primary.xml.gz(highestver/rel).