CVE-2026-31495

Summary

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

netfilter: ctnetlink: use netlink policy range checks

Replace manual range and mask validations with netlink policy annotations in ctnetlink code paths, so that the netlink core rejects invalid values early and can generate extack errors.

  • CTA_PROTOINFO_TCP_STATE: reject values > TCP_CONNTRACK_SYN_SENT2 at policy level, removing the manual >= TCP_CONNTRACK_MAX check.
  • CTA_PROTOINFO_TCP_WSCALE_ORIGINAL/REPLY: reject values > TCP_MAX_WSCALE (14). The normal TCP option parsing path already clamps to this value, but the ctnetlink path accepted 0-255, causing undefined behavior when used as a u32 shift count.
  • CTA_FILTER_ORIG_FLAGS/REPLY_FLAGS: use NLA_POLICY_MASK with CTA_FILTER_F_ALL, removing the manual mask checks.
  • CTA_EXPECT_FLAGS: use NLA_POLICY_MASK with NF_CT_EXPECT_MASK, adding a new mask define grouping all valid expect flags.

Extracted from a broader nf-next patch by Florian Westphal, scoped to ctnetlink for the fixes tree.

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < 435b576cd2faa75154777868f8cbb73bf71644d3affected
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < 2ef71307c86a9f866d6e28f1a0c06e2e9d794474affected
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < 4f7d25f3f0786402ba48ff7d13b6241d77d975f5affected
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < fcec5ce2d73a41668b24e3f18c803541602a59f6affected
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < 675c913b940488a84effdeeac5a1cfb657b59804affected
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < c6cb41eaae875501eaaa487b8db6539feb092292affected
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < 45c33e79ae705b7af97e3117672b6cd258dd0b1baffected
LinuxLinuxc8e2078cfe414a99cf6f2f2f1d78c7e75392e9d4 < 8f15b5071b4548b0aafc03b366eb45c9c6566704affected
LinuxLinux2.6.22affected
LinuxLinux0 < 2.6.22unaffected
LinuxLinux5.10.253 <= 5.10.*unaffected
LinuxLinux5.15.203 <= 5.15.*unaffected
LinuxLinux6.1.168 <= 6.1.*unaffected
LinuxLinux6.6.131 <= 6.6.*unaffected
LinuxLinux6.12.80 <= 6.12.*unaffected
LinuxLinux6.18.21 <= 6.18.*unaffected
LinuxLinux6.19.11 <= 6.19.*unaffected
LinuxLinux7.0 <= *unaffected

Weaknesses

References