data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-97417 in the interactive tracker

CVE-2026-97417

netfilter: nf_conntrack: use get_unaligned_be32() in tcp_sack()

7.5 EPSS 0.5% AV:N

Published 2026-09-24 (24 days ago) by the Linux kernel CNA. Subsystem net/netfilter. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-97417 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixedDLA-4841-1 · 2026-10-17 · text6.1.190-1Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixedDSA-6528-1 · 2026-09-29 · text6.12.111-1Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4817-1 · 2026-10-04 · text6.12.111-1~deb12u1Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

The timestamp-only fast path dereferences the option stream as *(__be32 *)ptr, which assumes 4-byte alignment that the TCP option stream does not guarantee. Use get_unaligned_be32() instead, which reads the value safely and already returns host byte order, so the htonl() on the comparison constant can be dropped. This matches the existing get_unaligned_be32() use later in the same function.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

net/netfilter/nf_conntrack_proto_tcp.c

What this is
NETFILTERMAINTAINERS section matched on net/netfilter/ · netfilter-devel@vger.kernel.org · Maintained
Kernel module
nf_conntrack

Check it on the machine

grep -wE 'CONFIG_NETFILTER|CONFIG_NF_CONNTRACK' /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w nf_conntrack

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this as a loadable module. Every release below compiles it as a module on every flavour, so whether the code is in the running kernel depends on whether that module is loaded.

  • bookworm, trixie, forky, sid, bookworm · linux-6.12m
m
a loadable module on every flavour - check lsmod, can be blacklisted
Build switches
CONFIG_NETFILTER, CONFIG_NF_CONNTRACK
Reads as
all on means the file is compiled; any one off means it is not.

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-09-24 (24 days ago)source
CVSS
7.5 high
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.49%, higher than 40.8% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
net/netfilter

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
3.15.10.271740ad3d17a28
3.15.15.222a0523267de25
3.16.1.18955bcc3376cd7
3.16.6.1580d5ad732e4fd
3.16.12.1117ecfa46a5365
3.16.18.534abc1af7ac20
3.17.2d3bf9eae4864

Debian advisories

AdvisoryDateShipped toDebian
DLA-4841-12026-10-17bookworm 6.1.190-1tracker
DLA-4817-12026-10-04bookworm 6.12.111-1~deb12u1tracker
DSA-6528-12026-09-29trixie 6.12.111-1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:NAttack vector, network
ipv4_conntrack_in() on NF_INET_PRE_ROUTING calls nf_conntrack_in()→nf_conntrack_tcp_packet()→tcp_in_window()→tcp_sack(); the *(__be32 *)ptr load reads the first four option bytes of a received TCP segment (doff=8, 12-byte NOP-NOP-TIMESTAMP block) that the remote peer put on the wire.
AC:LAttack complexity, low
Default tcp_loose=1 makes tcp_new() set IP_CT_TCP_FLAG_SACK_PERM on both directions for a non-SYN ACK, so one attacker TCP ACK with doff=8 (length==TCPOLEN_TSTAMP_ALIGNED) reaches tcp_sack()'s timestamp fast path; on strict-alignment NAT/PPPoE paths where those options are 2-mod-4, *(__be32 *)ptr faults with no race.
PR:NPrivileges required, none
ipv4_conntrack_in()/ipv6_conntrack_in() run in NF_INET_PRE_ROUTING; tcp_error() only checks header length, flags, and checksum before nf_conntrack_tcp_packet() reaches tcp_sack(), with no socket, credentials, or TCP-handshake authentication.
UI:NUser interaction, none
The PRE_ROUTING conntrack hook invokes tcp_sack() from softirq on the attacker's own TCP segment; no victim must mount media, open a file, or take any other interactive action.
S:UScope, unchanged
An alignment fault in tcp_sack() oopses the same host kernel that is conntracking the TCP flow; it does not cross a VM, guest-to-host, IOMMU, or other security authority.
C:NConfidentiality impact, none
The timestamp fast path loads four in-bounds bytes of the packet's own TCP option stream after skb_header_pointer(..., length==12, ...); it is not an OOB or UAF read, and a strict-alignment fault discloses nothing beyond those attacker-supplied bytes.
I:NIntegrity impact, none
tcp_sack()'s defect is a read-only *(__be32 *)ptr of the option bytes; it does not write conntrack state or adjacent objects, and the fix only replaces that load with get_unaligned_be32().
A:HAvailability impact, high
On SPARC, MIPS, and pre-v6 ARM (typical OpenWrt/CPE NAT boxes), the misaligned __be32 load in tcp_sack() raises a kernel alignment exception/oops/panic in netfilter softirq, fully denying host availability and repeatable by resending the segment.