CVE-2026-74700

HIGHPre-NVD 7.87.8
EchelonGraph scoreHIGH confidence

Score 7.8 from GitHub Security Advisory (severity: HIGH) published 2026-08-22. a secondary CVSS source baseline 7.8; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, secondary
Trending — 4 sources updated this week
7.8EG
EchelonGraph verdictPlan a fixSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS PROB: 0%CVSS: 7.8Exploit: None knownExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

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

net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers

Another challenge with unlocked filters. There is a short window in tc_new_tfilter where a tcf_proto can be found and briefly referenced by a totally unrelated, unlocked classifier's request and cause a race.

Feng created a poc which created this race with two threads, one creating a u32 filter and other a flower filter in the same chain/prio:

  • Both threads enter tc_new_tfilter, both find the chain empty, both
drop filter_chain_lock
  • u32 finishes tcf_proto_create("u32") first, calls
tcf_chain_tp_insert_unique() -> inserts u32_tp into the chain
  • flower finishes tcf_proto_create("flower") later, calls
tcf_chain_tp_insert_unique() -> tcf_chain_tp_find() now sees u32_tp already there, takes a reference on it, destroys flower's own tp_new and returns u32_tp to the caller.

Flower then hits the kind mismatch check (because it requested for kind "flower" but tp->ops->kind is "u32") and goes through the errout path which calls tcf_proto_put() on u32_tp. If the u32 thread has already gone through its own errout (its change() call failed on the PoC's empty options) and dropped its create and insert refs, flower's put is the last one and drops u32_tp's refcnt to zero.

At this point tp->ops->destroy() runs in a context that never took rtnl_lock. When that happens, it might cause a UAF like the following (illustrated by the PoC):

[ +0.000710] BUG: KASAN: slab-use-after-free in u32_init (net/sched/cls_u32.c:393) [ +0.000281] Read of size 8 at addr ffff888120022f00 by task poc_feng_xue/524

Call Trace: u32_init (net/sched/cls_u32.c:393) tc_new_tfilter (net/sched/cls_api.c:2378)

Allocated by task 526: u32_init (net/sched/cls_u32.c:378) tc_new_tfilter (net/sched/cls_api.c:2378)

Freed by task 522: kfree u32_destroy (net/sched/cls_u32.c:662) tcf_proto_destroy (net/sched/cls_api.c:446) tcf_proto_put (net/sched/cls_api.c:459) tc_new_tfilter (net/sched/cls_api.c:2459)

Fix this by having tcf_proto_destroy() take rtnl_lock around tp->ops->destroy() for locked classifiers whenever rtnl is not held.

To explain why I used a temp variable "not_lockless" I'd like to point to a semi-related note on rtnl_held vs TCF_PROTO_OPS_DOIT_UNLOCKED (adding here for future cleanup if deemed necessary): The rtnl_held parameter and the TCF_PROTO_OPS_DOIT_UNLOCKED flag are redundant sources of truth for whether rtnl_lock is held. Among the nine classifier destroy(..rtnl_held..) callbacks, only flower consults the rtnl_held parameter which it propagates to tc_setup_cb_destroy() and tc_setup_cb_call(). The other eight (u32, flow, bpf, cgroup, route, basic, fw, mall) ignore it entirely;-> those that call tc_setup_cb_destroy() (u32, bpf, mall) hardcode true always instead of forwarding the parameter.

A future cleanup should remove the rtnl_held parameter from the destroy callback signature entirely and have callers rely solely on their knowledge whether they are running in an unlocked context.

CVSS v3
7.8
EG Score
7.8(high)
EG Risk
40(Track)
EG Risk 40/100SSVC: Track

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity78% × 45%
Exploitation0% × 40%
Automatability30% × 15%
Action: Routine — remediate on your standard cadence.
EPSS PROB
0%
EPSS %ILE
2%
KEV
Not listed

Published

August 22, 2026

Last Modified

August 25, 2026

Advisory Details (5)

Auto-updated Aug 25, 2026
No patch confirmed yet.
generic

net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/a347304b2ca1a5377d5bd2d8a72e4b4f12afe648
generic

net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/a81f9c44d87fb59d99fce72e29e02cab3a49a1c3
generic

net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/d6222af7274f08e7a1848131dc30319993d8f377
generic

net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/b648c8a56531aeabd1c14f6b5cf1891e269b3756
generic

net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/34e77d8e3570f9df3952496ddb402833695662fd

Vendor Advisories for CVE-2026-74700(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Data Freshness Timeline

(refreshed 25× in last 7d / 28× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-08-30 01:22 UTCEPSS rescore
  2. 2026-08-30 00:27 UTCGHSA enrichment
  3. 2026-08-29 13:04 UTCGHSA enrichment
  4. 2026-08-29 01:36 UTCEG score recompute
  5. 2026-08-29 01:36 UTCGHSA enrichment
  6. 2026-08-28 21:42 UTCEPSS rescore
  7. 2026-08-28 14:11 UTCGHSA enrichment
  8. 2026-08-28 02:48 UTCGHSA enrichment
  9. 2026-08-27 15:26 UTCEG score recompute
  10. 2026-08-27 15:25 UTCGHSA enrichment
  11. 2026-08-27 14:25 UTCEPSS rescore
  12. 2026-08-27 03:59 UTCGHSA enrichment
  13. 2026-08-26 16:37 UTCEG score recompute
  14. 2026-08-26 16:36 UTCGHSA enrichment
  15. 2026-08-26 14:47 UTCEPSS rescore
  16. 2026-08-26 05:14 UTCGHSA enrichment
  17. 2026-08-25 17:51 UTCEG score recompute
  18. 2026-08-25 17:51 UTCGHSA enrichment
  19. 2026-08-25 13:49 UTCEPSS rescore
  20. 2026-08-25 06:29 UTCEG score recompute
  21. 2026-08-25 06:29 UTCGHSA enrichment
  22. 2026-08-25 05:55 UTCEG score recompute 7.80
  23. 2026-08-25 05:55 UTCGHSA enrichment
  24. 2026-08-25 05:55 UTCMITRE cvelistV5CVSS v3 → 7.8 · severity → HIGH
  25. 2026-08-24 14:18 UTCEPSS rescore
Show 3 more
  1. 2026-08-22 16:24 UTCNVD update
  2. 2026-08-22 15:39 UTCEG score recompute
  3. 2026-08-22 15:35 UTCMITRE cvelistV5first tracked

Frequently asked(5)

What is CVE-2026-74700?
CVE-2026-74700 is a high vulnerability published on August 22, 2026. In the Linux kernel, the following vulnerability has been resolved: net/sched: clsapi: Always acquire rtnllock when destroying locked classifiers Another challenge with unlocked filters. There is a short window in tcnewtfilter where a tcf_proto can be found and briefly referenced by a totally…
When was CVE-2026-74700 disclosed?
CVE-2026-74700 was first published in the National Vulnerability Database on August 22, 2026, with the most recent update on August 25, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-74700 actively exploited?
CVE-2026-74700 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0% probability of exploitation in the next 30 days, which ranks it in the top 97.5% of all scored CVEs.
What is the CVSS score of CVE-2026-74700?
CVE-2026-74700 has a CVSS v3 base score of 7.8 (NVD).
How do I remediate CVE-2026-74700?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-74700, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2026-74700

Explore →

Is Your Infrastructure Affected by CVE-2026-74700?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.