{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-74656","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-08-15T05:44:03.923Z","datePublished":"2026-08-22T15:32:30.729Z","dateUpdated":"2026-08-25T05:41:13.058Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-25T05:41:13.058Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nipv4: fix use-after-free in fib_nhc_update_mtu()\n\nfib_nhc_update_mtu() walks the nexthop exception table under RTNL, but\nRTNL does not serialize this walk with PMTU exception updates. The walk\nuses rcu_dereference_protected() with a constant true condition without\nholding fnhe_lock.\n\nThe following interleaving can therefore occur:\n\n  CPU 0                              CPU 1\n  fib_nhc_update_mtu()               update_or_create_fnhe()\n    load fnhe                          spin_lock_bh(&fnhe_lock)\n                                       fnhe_remove_oldest()\n                                         unlink fnhe\n                                         kfree_rcu(fnhe, rcu)\n    <quiescent state>\n    access fnhe after grace period\n\nKASAN reported:\n\n  BUG: KASAN: slab-use-after-free in fib_nhc_update_mtu+0x3df/0x410\n  Read of size 8 at addr ffff888107d49000 by task poc/90\n  Call Trace:\n   fib_nhc_update_mtu+0x3df/0x410\n   fib_sync_mtu+0x7a/0xd0\n   fib_netdev_event+0x229/0x3f0\n   netif_set_mtu_ext+0x33a/0x570\n   dev_set_mtu+0x88/0x120\n\nThe same walk updates fnhe_pmtu and fnhe_mtu_locked. These fields form a\npair and other writers serialize them with fnhe_lock. RCU alone prevents\nreclamation, but would still allow concurrent writers to leave a mixed\npair.\n\nWalk the table under RCU and acquire fnhe_lock only while updating each\nexception. RCU keeps the current entry alive while the short critical\nsection serializes its paired PMTU fields. This avoids holding the global\nlock while scanning all 2048 buckets for every nexthop."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The UAF is hit in fib_nhc_update_mtu(), entered only via NETDEV_CHANGEMTU from dev_set_mtu()/netif_set_mtu_ext() (SIOCSIFMTU or RTM_NEWLINK IFLA_MTU); per kernel CNA guidance this administrative netdev path is Local even though the racing update_or_create_fnhe() leg is driven by received ICMP PMTU packets.\nAC:L - KASAN reproduced this from task poc/90 by racing dev_set_mtu() against concurrent PMTU exception creation/eviction; an attacker controls both CPUs by running an MTU-change thread alongside ICMP or socket traffic that floods update_or_create_fnhe() and fnhe_remove_oldest(), without depending on uncontrollable victim state.\nPR:L - Changing interface MTU requires CAP_NET_ADMIN checked via ns_capable(net->user_ns, CAP_NET_ADMIN) on SIOCSIFMTU and RTM_SETLINK; unprivileged local users obtain this in a user+network namespace (unshare -Urn) and can then race MTU changes against PMTU exception updates on the same host.\nUI:N - Exploitation requires only the attacker's own MTU ioctl/netlink operations and concurrent network or socket traffic to populate/evict fib_nh_exception entries; no victim mount, click, or other voluntary action is needed beyond normal host networking.\nS:U - The slab use-after-free corrupts host kernel IPv4 routing state within the same kernel security authority; it is not a VM escape, IOMMU bypass, or other cross-boundary scope change.\nC:H - KASAN reported a slab use-after-free read of 8 bytes in fib_nhc_update_mtu() on a fib_nh_exception freed by kfree_rcu() from fnhe_remove_oldest(); UAF on this kmalloc object enables heap grooming for arbitrary kernel memory disclosure.\nI:H - The buggy walk both reads and writes fnhe_pmtu and fnhe_mtu_locked on potentially freed fib_nh_exception objects without fnhe_lock, providing standard slab reuse primitives for attacker-controlled kernel writes and potential control-flow hijack.\nA:H - The confirmed KASAN slab-use-after-free in fib_nhc_update_mtu() can immediately BUG/oops the kernel; the attacker can retrigger the race by repeating MTU toggles concurrent with PMTU exception flooding for persistent denial of service."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/route.h","net/ipv4/fib_semantics.c","net/ipv4/route.c"],"versions":[{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"fd39e711866498ae94fcf9acf6f422a4f045b681","status":"affected","versionType":"git"},{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"e1e602d6b22d5cb1641c4459c487eb18bf569e0a","status":"affected","versionType":"git"},{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"e00f7d2b5f2540a3415a229c982af7a25ff6362e","status":"affected","versionType":"git"},{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"dfe388da13aa784851e5ebbea90afbb099075761","status":"affected","versionType":"git"},{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"5a28a4b22dde92f9d293b94236314b8d6181dc4a","status":"affected","versionType":"git"},{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"63996ffc594d128ccec8fc0983f91effd2d3adc4","status":"affected","versionType":"git"},{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"ed503eaad62f20cdd5122d7c3078a648a99c8f16","status":"affected","versionType":"git"},{"version":"af7d6cce53694a88d6a1bb60c9a239a6a5144459","lessThan":"bc5bde9ce3cc36502839dfe98e068f7303a50982","status":"affected","versionType":"git"},{"version":"b427832009b97a3ee412ef643a80b15372a7754d","status":"affected","versionType":"git"},{"version":"2b7e4c735933be79882aba2bed9afa789e03c62f","status":"affected","versionType":"git"},{"version":"8d59c3a6376bbc6dd3f7303968a719ffba75a4f1","status":"affected","versionType":"git"},{"version":"9b4869cf385aa16f89c0f019eed4ec4e36aa441c","status":"affected","versionType":"git"},{"version":"ff34695ced21e2dfa04d0fa1c5f6c35011fa8117","status":"affected","versionType":"git"},{"version":"3.16.62","lessThan":"3.17","status":"affected","versionType":"semver"},{"version":"4.4.162","lessThan":"4.5","status":"affected","versionType":"semver"},{"version":"4.9.134","lessThan":"4.10","status":"affected","versionType":"semver"},{"version":"4.14.77","lessThan":"4.15","status":"affected","versionType":"semver"},{"version":"4.18.15","lessThan":"4.19","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/route.h","net/ipv4/fib_semantics.c","net/ipv4/route.c"],"versions":[{"version":"4.19","status":"affected"},{"version":"0","lessThan":"4.19","status":"unaffected","versionType":"semver"},{"version":"5.10.265","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.216","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.183","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.152","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.104","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.45","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.1.9","lessThanOrEqual":"7.1.*","status":"unaffected","versionType":"semver"},{"version":"7.2","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"5.10.265"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"5.15.216"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.1.183"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.6.152"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.12.104"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.18.45"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"7.1.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"7.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16.62"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.4.162"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9.134"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.14.77"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18.15"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/fd39e711866498ae94fcf9acf6f422a4f045b681"},{"url":"https://git.kernel.org/stable/c/e1e602d6b22d5cb1641c4459c487eb18bf569e0a"},{"url":"https://git.kernel.org/stable/c/e00f7d2b5f2540a3415a229c982af7a25ff6362e"},{"url":"https://git.kernel.org/stable/c/dfe388da13aa784851e5ebbea90afbb099075761"},{"url":"https://git.kernel.org/stable/c/5a28a4b22dde92f9d293b94236314b8d6181dc4a"},{"url":"https://git.kernel.org/stable/c/63996ffc594d128ccec8fc0983f91effd2d3adc4"},{"url":"https://git.kernel.org/stable/c/ed503eaad62f20cdd5122d7c3078a648a99c8f16"},{"url":"https://git.kernel.org/stable/c/bc5bde9ce3cc36502839dfe98e068f7303a50982"}],"title":"ipv4: fix use-after-free in fib_nhc_update_mtu()","x_generator":{"engine":"bippy-1.2.0"}}}}