CVE-2026-23340: net: sched: avoid qdisc_reset_all_tx_gt() vs dequeue race for lockless qdiscs
Noroxi assessment
Priority: Monitor (action score 31/100)
- The sources we track (CISA KEV, Exploit-DB, Metasploit, Nuclei, GitHub) show no public exploit code or exploitation in the wild.
- Probability of exploitation in the next 30 days: 0.11% (FIRST EPSS).
- Someone with local access to the system can trigger it. A low-privileged account is enough. No user action is required. No special conditions are required; it is repeatable.
- Fixed version: Linux Linux 5bb27ad54d12de67e457d7d251198e361bef835e, 5bc4e69306ed7ae02232eb4c0b23ed621a26d504, 7594467c49bfc2f4644dee0415ac2290db11fa0d; azl3 kernel 6.6.126.1-1 on Azure Linux 3.0 6.6.130.1-1; cbl2 kernel 5.15.202.1-1 on CBL-Mariner 2.0 Release Notes.
Low priority for now. Upgrade to Linux Linux 5bb27ad54d12de67e457d7d251198e361bef835e, 5bc4e69306ed7ae02232eb4c0b23ed621a26d504, 7594467c49bfc2f4644dee0415ac2290db11fa0d; azl3 kernel 6.6.126.1-1 on Azure Linux 3.0 6.6.130.1-1; cbl2 kernel 5.15.202.1-1 on CBL-Mariner 2.0 Release Notes or later.
Generated automatically from the record's data: CVSS (NVD and CNA), CISA KEV and SSVC, FIRST EPSS, exploit sources, fixed versions. How we calculate it
Primary sources: NVD · CVE.org · FIRST EPSS
In the Linux kernel, the following vulnerability has been resolved: net: sched: avoid qdisc_reset_all_tx_gt() vs dequeue race for lockless qdiscs When shrinking the number of real tx queues, netif_set_real_num_tx_queues() calls qdisc_reset_all_tx_gt() to flush qdiscs for queues which will no longer be used. qdisc_reset_all_tx_gt() currently serializes qdisc_reset() with qdisc_lock(). However, for lockless qdiscs, the dequeue path is serialized by qdisc_run_begin/end() using qdisc->seqlock instead, so qdisc_reset() can run concurrently with __qdisc_run() and free skbs while they are still being dequeued, leading to UAF. This can easily be reproduced on e.g. virtio-net by imposing heavy traffic while frequently changing the number of queue pairs: iperf3 -ub0 -c $peer -t 0 & while :; do ethtool -L eth0 combined 1 ethtool -L eth0 combined 2 done With KASAN enabled, this leads to reports like: BUG: KASAN: slab-use-after-free in __qdisc_run+0x133f/0x1760 ... Call Trace: <TASK> ... __qdisc_run+0x133f/0x1760 __dev_queue_xmit+0x248f/0x3550 ip_finish_output2+0xa42/0x2110 ip_output+0x1a7/0x410 ip_send_skb+0x2e6/0x480 udp_send_skb+0xb0a/0x1590 udp_sendmsg+0x13c9/0x1fc0 ... </TASK> Allocated by task 1270 on cpu 5 at 44.558414s: ... alloc_skb_with_frags+0x84/0x7c0 sock_alloc_send_pskb+0x69a/0x830 __ip_append_data+0x1b86/0x48c0 ip_make_skb+0x1e8/0x2b0 udp_sendmsg+0x13a6/0x1fc0 ... Freed by task 1306 on cpu 3 at 44.558445s: ... kmem_cache_free+0x117/0x5e0 pfifo_fast_reset+0x14d/0x580 qdisc_reset+0x9e/0x5f0 netif_set_real_num_tx_queues+0x303/0x840 virtnet_set_channels+0x1bf/0x260 [virtio_net] ethnl_set_channels+0x684/0xae0 ethnl_default_set_doit+0x31a/0x890 ... Serialize qdisc_reset_all_tx_gt() against the lockless dequeue path by taking qdisc->seqlock for TCQ_F_NOLOCK qdiscs, matching the serialization model already used by dev_reset_queue(). Additionally clear QDISC_STATE_NON_EMPTY after reset so the qdisc state reflects an empty queue, avoiding needless re-scheduling.
- Published
- Mar 25, 2026
- Updated
- Oct 19, 2026
- EPSS
- 0.1% · 1th percentile
- CWE
- CWE-416
Report tools
Action score
31
Monitor
Low priority for now.
- CVSS
- 31 / 40 · 7.8 / 10
- CISA KEV
- 0 / 30 · Not listed
- EPSS
- 0 / 30 · 0.1%
CISA SSVC decision
- Exploitation
- none
- Automatable
- no
- Technical impact
- total
Vulnrichment: CISA's decision-tree inputs.
CNA vs NVD score
- NVD
- —
- CNA · Linux
- 7.8
- NVD has not scored this yet; the score shown is the CNA’s.
The score given by the assigning authority versus NVD’s independent score. A gap means the severity is contested.
Get told when this record changes
- Not in KEV: no record of exploitation in the wild
- No public exploit code on record
- A fix has been released
If any of these changes, we'll tell you in the daily email digest.
Running WordPress? Scan your site free with WP Lens
Noroxi analysis
What does it mean in your environment?
The assessment above is generated automatically from the record's data; it doesn't know your environment. Our team verifies on your systems whether this vulnerability is actually exploitable and which mitigation is enough.
We use this product, ask for helpAffected systems
Is your version affected?
Pick the product and type the version you run. It's compared with this record's version ranges in your browser; the version isn't sent anywhere.
| Vendor | Product | CPE |
|---|---|---|
| linux | linux kernel | cpe:2.3:o:linux:linux_kernel |
Affected versions
NVD version ranges (for catalog products). Add the product to your stack with a version and matching uses these.
- linux linux kernel4.16.1 and later · before 5.15.203
- linux linux kernel5.16 and later · before 6.1.167
- linux linux kernel6.2 and later · before 6.6.130
- linux linux kernel6.7 and later · before 6.12.77
- linux linux kernel6.13 and later · before 6.18.17
- linux linux kernel6.19 and later · before 6.19.7
- linux linux kernel4.16
- linux linux kernel7.0
Versions reported by the vendor
Affected version ranges reported by the assigning authority (Linux). Independent of NVD's CPE analysis and usually ahead of it.
Linux Linux
- 4.16affected
- 6b3ba9146fe64b9bebb6346c9dcfe3b4851de2d7 and later · before 5bb27ad54d12de67e457d7d251198e361bef835eaffected · git
- 6b3ba9146fe64b9bebb6346c9dcfe3b4851de2d7 and later · before 7594467c49bfc2f4644dee0415ac2290db11fa0daffected · git
- 6b3ba9146fe64b9bebb6346c9dcfe3b4851de2d7 and later · before dbd58b0730aa06ab6ad26079cf9a5b6b58e7e750affected · git
- 6b3ba9146fe64b9bebb6346c9dcfe3b4851de2d7 and later · before 5bc4e69306ed7ae02232eb4c0b23ed621a26d504affected · git
- 6b3ba9146fe64b9bebb6346c9dcfe3b4851de2d7 and later · before 8314944cc3bdeaa5a73e6f8a8cf0d94822e625cbaffected · git
- 6b3ba9146fe64b9bebb6346c9dcfe3b4851de2d7 and later · before c69df4e0524f8de8e176ba389acd83e85f5f49d0affected · git
- 6b3ba9146fe64b9bebb6346c9dcfe3b4851de2d7 and later · before 7f083faf59d14c04e01ec05a7507f036c965acf8affected · git
- before 4.16not affected · semver
- 5.15.203 and later · up to and including 5.15.*not affected · semver
Package-level exposure
OSV and GitHub Advisory data: ecosystem, package and range. SBOM matching uses this table.
| Ecosystem | Package | Affected range | Fix |
|---|---|---|---|
| Debian:12 | linux | before 6.1.170-1 | 6.1.170-1 |
| Debian:13 | linux | before 6.12.85-1 | 6.12.85-1 |
| Debian:14 | linux | before 6.19.8-1 | 6.19.8-1 |
Same product
linux: all recordsOther highest-scoring records for the same primary product.
- CVE-2026-31431crypto: algif_aead - Revert to operating out-of-placeKEV90Now
- CVE-2022-0847A flaw was found in the way the "flags" member of the new pipe buffer structure was lacking proper initialization in copy_page_to_iter_pipe KEV89Now
- CVE-2021-22555Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACEKEV85Now
Published before and after this one in the same product
- ← EarlierCVE-2026-23336Mar 25, 2026 · wifi: cfg80211: cancel rfkill_block work in wiphy_unregister()31Monitor
- ← EarlierCVE-2026-23339Mar 25, 2026 · nfc: nci: free skb on nci_transceive early error paths22Monitor
- Later →CVE-2026-23341Mar 25, 2026 · accel/amdxdna: Fix crash when destroying a suspended hardware context22Monitor
Remediation
Which version to upgrade to
Fix versions compiled from the vendor, package registries and Microsoft. Verify the vendor's note before upgrading.
| Product / package | Fixed version | Source |
|---|---|---|
| Linux Linux | 5bb27ad54d12de67e457d7d251198e361bef835e | Vendor (CNA) |
| Linux Linux | 5bc4e69306ed7ae02232eb4c0b23ed621a26d504 | Vendor (CNA) |
| Linux Linux | 7594467c49bfc2f4644dee0415ac2290db11fa0d | Vendor (CNA) |
| Linux Linux | 7f083faf59d14c04e01ec05a7507f036c965acf8 | Vendor (CNA) |
| Linux Linux | 8314944cc3bdeaa5a73e6f8a8cf0d94822e625cb | Vendor (CNA) |
| Linux Linux | c69df4e0524f8de8e176ba389acd83e85f5f49d0 | Vendor (CNA) |
| Linux Linux | dbd58b0730aa06ab6ad26079cf9a5b6b58e7e750 | Vendor (CNA) |
| azl3 kernel 6.6.126.1-1 on Azure Linux 3.0 | 6.6.130.1-1 · CBL-Mariner Releases | Microsoft (MSRC) |
| cbl2 kernel 5.15.202.1-1 on CBL-Mariner 2.0 | Release Notes | Microsoft (MSRC) |
| debian:linux | 6.1.170-1 · Debian:12 | Package registry (OSV) |
Exploit status
No known public exploit
No public exploit has been observed yet. That doesn't mean you're safe, only that the bar is a little higher.
Research context
For pentesters and researchers: attack profile, score disagreement, timeline, patch commits, credits, variant and chain candidates, bug bounty scope. All derived from existing data; no exploit code.
Timeline
From publication to today: proof of concept, Metasploit module, CISA KEV and fix record. Dates are as reported by the sources.
No dated events beyond publication.
No history yet (it accumulates with the daily EPSS job).
Patch and commit links
Commit, PR and diff links among the references. A starting point for patch-diffing and variant hunting; fixes, not exploits.
No commit or PR link among the references.
Credits
All researchersFinders, reporters and analysts named in the CNA record. Click a name for that researcher’s other records.
No credits in the CNA record.
Variant candidates
Same product, same weakness class, within 18 months. If the patch missed the root cause, the sibling bug is here.
No nightly-computed relations.
Chain candidates
An authentication bypass and a privilege-requiring bug in the same product, published close together: combined they may become an unauthenticated path.
—
Bug bounty scope
No known public program.
Source: bounty-targets-data (public HackerOne, Bugcrowd, Intigriti, YesWeHack listings).
Technical details
Attack conditions
- Someone with local access to the system can trigger it.
- A low-privileged account is enough.
- No user action is required.
- No special conditions are required; it is repeatable.
If successful
- Confidentiality
- high · data can be read
- Integrity
- high · data or configuration can be modified
- Availability
- high · the service can be disrupted
- Attack vector
- Local
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality impact
- High
- Integrity impact
- High
- Availability impact
- High
Weakness class (CWE)
CWE-416 · Use After FreeCVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
nvd-secondary
Root cause
After a memory region is freed, another reference pointing to it is still used. By then, the same region may have been allocated for different data.
The bug in code
The whole CWE-416 classA representative example of this vulnerability class. Not the vendor's source code; it shows the faulty pattern and its fix.
Vulnerable
free(dev->buf);
/* ... another thread is still running ... */
process(dev->buf);Fixed
lock(&dev->lock);
free(dev->buf);
dev->buf = NULL;
unlock(&dev->lock);Attack context
MITRE CAPEC attack patterns and ATT&CK techniques for this weakness class (CWE). A starting point for detection rules and threat hunting.
MITRE has no CAPEC/ATT&CK mapping for this CWE.
Change log
- SSVC exploitation— → none
- Fix✗ → ✓
For records you follow, these changes also arrive as notifications. →
References
Show all references (10 more)Show less
- git.kernel.org/stable/c/5bc4e69306ed7ae02232eb4c0b23ed621a26d504
- git.kernel.org/stable/c/7594467c49bfc2f4644dee0415ac2290db11fa0d
- git.kernel.org/stable/c/7f083faf59d14c04e01ec05a7507f036c965acf8
- git.kernel.org/stable/c/8314944cc3bdeaa5a73e6f8a8cf0d94822e625cb
- git.kernel.org/stable/c/c69df4e0524f8de8e176ba389acd83e85f5f49d0
- git.kernel.org/stable/c/dbd58b0730aa06ab6ad26079cf9a5b6b58e7e750
- cert-portal.siemens.com/productcert/html/ssa-019113.html
- cert-portal.siemens.com/productcert/html/ssa-082556.html
- cert-portal.siemens.com/productcert/html/ssa-457936.html
- cert-portal.siemens.com/productcert/html/ssa-784472.html
Vendor advisories and official records. Exploit/PoC links are deliberately left out.