netfilter: nf_queue: hold bridge skb->dev while queued
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.259, 5.15.209, 6.1.175, 6.6.142, 6.12.92, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_queue: hold bridge skb->dev while queued br_pass_frame_up() rewrites skb->dev from the ingress port to the bridge master before queueing bridge LOCAL_IN packets. NFQUEUE only holds references on state.in/out and bridge physdevs, so a queued bridge packet can retain a freed bridge master in skb->dev until reinjection. When the verdict is reinjected later, br_netif_receive_skb() re-enters the receive path with skb->dev still pointing at the freed bridge master, triggering a use-after-free. Store skb->dev in the queue entry, hold a reference on it for the queue lifetime, and use the saved device when dropping queued packets during NETDEV_DOWN handling.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From ac28634456867b23b95faccba7997a62ec430603 · fixed in 950d809f154dca04e5fbe5d3c8b9c5e44769cd57; From ac28634456867b23b95faccba7997a62ec430603 · fixed in a698ac8ab2561cf575d2d9f34095032651dd952e; From ac28634456867b23b95faccba7997a62ec430603 · fixed in 19924bdd8a45ebc72a7b84c57fd63057d1dc75ac; From ac28634456867b23b95faccba7997a62ec430603 · fixed in 1e5e20031c5eee8d2e490a90ff4d6a2feecfc3be; From ac28634456867b23b95faccba7997a62ec430603 · fixed in 3823c27099cfe2482299065814adbaa771be9644; From ac28634456867b23b95faccba7997a62ec430603 · fixed in 15d464265120ab9818bd673af301deee09bedab2; From ac28634456867b23b95faccba7997a62ec430603 · fixed in 3fb0f5c0f64162a8c3f25616a4f1e340b921737f; From ac28634456867b23b95faccba7997a62ec430603 · fixed in e196115ec330a18de415bdb9f5071aa9f08e53ce
- Linux Linux
4.7
- KernelLinux
From 4.7.0 · fixed in 5.10.259; From 5.11.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.142; From 6.7.0 · fixed in 6.12.92; From 6.13.0 · fixed in 6.18.34; From 6.19.0 · fixed in 7.0.11
References 8
git.kernel.org
- stable/c/950d809f154dca04e5fbe5d3c8b9c5e44769cd57
- stable/c/a698ac8ab2561cf575d2d9f34095032651dd952e
- stable/c/19924bdd8a45ebc72a7b84c57fd63057d1dc75ac
- stable/c/1e5e20031c5eee8d2e490a90ff4d6a2feecfc3be
- stable/c/3823c27099cfe2482299065814adbaa771be9644
- stable/c/15d464265120ab9818bd673af301deee09bedab2
- stable/c/3fb0f5c0f64162a8c3f25616a4f1e340b921737f
- stable/c/e196115ec330a18de415bdb9f5071aa9f08e53ce