CVE-2026-74583: net/sched: cls_route: fix fastmap use-after-free on filter
Greg Kroah-Hartman <[email protected]>
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026082100-CVE-2026-74583-70cb@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_route: fix fastmap use-after-free on filter The route4 classifier maintains a 16-slot fastmap cache that stores raw struct route4_filter pointers indexed by (id, iif). The reader (route4_classify) populates this cache via route4_set_fastmap() for every classified packet that hits a filter. The writer (route4_delete, route4_change) clears the cache via route4_reset_fastmap() before RCU-deferred kfree of the filter. This creates a UAF race: 1. Reader walks the RCU-protected bucket chain, finds filter f 2. Writer unlinks f, calls route4_reset_fastmap(), then tcf_queue_work() 3. Reader calls route4_set_fastmap() and writes f into the cache *after* the writer's reset, caching a pointer about to be freed 4. After the RCU grace period, kfree(f) executes 5. Next classified packet on the same (id, iif) tuple hits the stale fastmap entry and reads f->res from freed memory Reproduced with an mdelay(100) accelerator in route4_set_fastmap() and a concurrent add/delete stress test (provided by both zdi and Santosh). Both triggered KASAN slab-use-after-free reports in the route4 fastmap paths. Fix: Introduce a per-filter boolean dying flag to suppress stale fastmap republishing by in-flight readers. The Linux kernel CVE team has assigned CVE-2026-74583 to this issue. Affected and fixed versions =========================== Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 5.10.265 with commit 7897198b26445b4009a057bda1986b94a99e5d5f Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 5.15.216 with commit 820f083c294ad6d319c02a7d43294f2ed2565139 Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 6.1.183 with commit 5ec9001be6d0eb527251125632ec8fe88278897f Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 6.6.152 with commit b969984b2bdc85d721ce4047cd270cd37ec705a2 Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 6.12.104 with commit a17f636c9330eac879822ce29f998e5abd1b72c1 Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 6.18.45 with commit 0e7a8cf8895b06d07c7311f028eba16ad742b9bc Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 7.1.9 with commit ae9aff87025219005a2d16b4fe83d6f24643e50d Issue introduced in 3.18 with commit 1109c00547fc66df45b9ff923544be4c1e1bec13 and fixed in 7.2 with commit 47d7f7051253bdc02b1d245d87e38f16d31a74df Please see https://www.kernel.org for a full list of currently supported kernel versions by the kernel community. Unaffected versions might change over time as fixes are backported to older supported kernel versions. The official CVE entry at https://cve.org/CVERecord/?id=CVE-2026-74583 will be updated if fixes are backported, please check that for the most up to date information about this issue. Affected files ============== The file(s) affected by this issue are: net/sched/cls_route.c Mitigation ========== The Linux kernel CVE team recommends that you update to the latest stable kernel version for this, and many other bugfixes. Individual changes are never tested alone, but rather are part of a larger kernel release. Cherry-picking individual commits is not recommended or supported by the Linux kernel community at all. If however, updating to the latest release is impossible, the individual changes to resolve this issue can be found at these commits: https://git.kernel.org/stable/c/7897198b26445b4009a057bda1986b94a99e5d5f https://git.kernel.org/stable/c/820f083c294ad6d319c02a7d43294f2ed2565139 https://git.kernel.org/stable/c/5ec9001be6d0eb527251125632ec8fe88278897f https://git.kernel.org/stable/c/b969984b2bdc85d721ce4047cd270cd37ec705a2 https://git.kernel.org/stable/c/a17f636c9330eac879822ce29f998e5abd1b72c1 https://git.kernel.org/stable/c/0e7a8cf8895b06d07c7311f028eba16ad742b9bc https://git.kernel.org/stable/c/ae9aff87025219005a2d16b4fe83d6f24643e50d https://git.kernel.org/stable/c/47d7f7051253bdc02b1d245d87e38f16d31a74df