CVE-2026-31504

net: fix fanout UAF in packet_release() via NETDEV_UP race

State
Published
Severity
7.8 High
Published
Apr 22, 2026
Updated
Oct 19, 2026
Reserved
Mar 9, 2026

Read the record on cve.org

Description

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

net: fix fanout UAF in packet_release() via NETDEV_UP race

`packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`.

The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window.

This bug was found following an additional audit with Claude Code based on CVE-2025-38617.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

  • CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

Affected Products

ProductVersions
LinuxLinux
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before ee642b1962caa9aa231c01abbd58bc453ae6b66eAffected
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before 42cfd7898eeed290c9fb73f732af1f7d6b0a703eAffected
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before 1b4c03f8892d955385c202009af7485364731bb9Affected
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before 654386baef228c2992dbf604c819e4c7c35fc71bAffected
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before 75fe6db23705a1d55160081f7b37db9665b1880bAffected
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before d0c7cdc15fdf8c4f91aca1928e52295d175b6ec6Affected
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before ceccbfc6de720ad633519a226715989cfb065af1Affected
  • ce06b03e60fc19c680d1bf873e779bf11c2fc518 to before 42156f93d123436f2a27c468f18c966b7e5db796Affected
LinuxLinux
  • 3.1Affected
  • before 3.1Not affected
  • 5.10.253 through 5.10.*Not affected
  • 5.15.203 through 5.15.*Not affected
  • 6.1.168 through 6.1.*Not affected
  • 6.6.131 through 6.6.*Not affected
  • 6.12.80 through 6.12.*Not affected
  • 6.18.21 through 6.18.*Not affected
  • 6.19.11 through 6.19.*Not affected
  • 7.0 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.