CVE-2026-45859

netfilter: nfnetlink_queue: do shared-unconfirmed check before segmentation

State
Published
Severity
7.5 High
Published
May 27, 2026
Updated
Oct 30, 2026
Reserved
May 13, 2026

Read the record on cve.org

Description

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

netfilter: nfnetlink_queue: do shared-unconfirmed check before segmentation

Ulrich reports a regression with nfqueue:

If an application did not set the 'F_GSO' capability flag and a gso packet with an unconfirmed nf_conn entry is received all packets are now dropped instead of queued, because the check happens after skb_gso_segment(). In that case, we did have exclusive ownership of the skb and its associated conntrack entry. The elevated use count is due to skb_clone happening via skb_gso_segment().

Move the check so that its peformed vs. the aggregated packet.

Then, annotate the individual segments except the first one so we can do a 2nd check at reinject time.

For the normal case, where userspace does in-order reinjects, this avoids packet drops: first reinjected segment continues traversal and confirms entry, remaining segments observe the confirmed entry.

While at it, simplify nf_ct_drop_unconfirmed(): We only care about unconfirmed entries with a refcnt > 1, there is no need to special-case dying entries.

This only happens with UDP. With TCP, the only unconfirmed packet will be the TCP SYN, those aren't aggregated by GRO.

Next patch adds a udpgro test case to cover this scenario.

Scores

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

Weaknesses

  • CWE-400 Uncontrolled Resource Consumption

Affected Products

ProductVersions
LinuxLinux
  • 6dcc8ba8a6074bb79040f502dc66ad23a58a1c86 to before 4666688657e1054278b836b825fb88b2907e2da2Affected
  • 74e6eb7fd27ef1ccc68041dbc66e6d80d2e4a1a0 to before aead84bdacd77e08357fd718e5dcaffaf387f3c3Affected
  • 7d8dc1c7be8d3509e8f5164dd5df64c8e34d7eeb to before 79b713ef4261a8ead96af4703f89d0b5f25532e2Affected
  • 7d8dc1c7be8d3509e8f5164dd5df64c8e34d7eeb to before 23901aa6b8a2f294c4b774436b4691f3ff863a8fAffected
  • 7d8dc1c7be8d3509e8f5164dd5df64c8e34d7eeb to before b740e7ddd7ca0dbfeafca3f5e52717206cf28524Affected
  • 7d8dc1c7be8d3509e8f5164dd5df64c8e34d7eeb to before 207b3ebacb6113acaaec0d171d5307032c690004Affected
  • 6c4a0ba674f410ab99a30a16f32dac0ebfed5cd3Affected
  • 025b3326c5c409b372d0103ad30f174e55adbd1bAffected
  • 6.1.107 to before 6.1.191Affected
  • 6.6.48 to before 6.6.160Affected
  • 5.15.166 to before 5.16Affected
  • 6.10.7 to before 6.11Affected
LinuxLinux
  • 6.11Affected
  • before 6.11Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.75 through 6.12.*Not affected
  • 6.18.14 through 6.18.*Not affected
  • 6.19.4 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.