{"id":"CVE-2026-99074","state":"PUBLISHED","title":"ipv4: stop PMTU walk when nexthop group shrinks","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nipv4: stop PMTU walk when nexthop group shrinks\n\nCommit 7d3f3b4367f3 (\"net: ipv4: Cache pmtu for all packet paths if\nmultipath enabled\") made __ip_rt_update_pmtu() update every path.\n\nFor nexthop objects, fib_info_num_path() and fib_info_nhc()\nindependently load nh->nh_grp.  RCU protects each group's lifetime but\ndoes not make the loads observe the same group.  If replacement shrinks\nthe group after the loop accepts an index, fib_info_nhc() returns NULL\nand update_or_create_fnhe() dereferences it.\n\nA deterministic probe only widened the existing window between the real\noperations.  On v7.2, an RTM_NEWNEXTHOP replacement published a\none-member group after the PMTU reader accepted index 1 from a two-member\ngroup, producing:\n\n  KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]\n  RIP: update_or_create_fnhe+0x45/0x15b0\n\nStop when the indexed path is absent.  Groups are dense, so no later\nindex exists in that snapshot.  The same real-writer window completed\n114,423 PMTU iterations without an oops with this check.  A reproducer\nis available on request.\n\nReplacement requires CAP_NET_ADMIN in the network namespace.  Where\nunprivileged user namespaces are permitted, a local user can obtain it\nin a new user and network namespace.","publishedAt":"2026-10-23T12:23:17.866Z","updatedAt":"2026-10-30T12:41:33.126Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"fc07a232326a623d0be482e307c08ea7049c2846","status":"affected","lessThan":"82d83eec893d8ae84f280aec44c60d9fdecc62b5","versionType":"git"},{"version":"b1f7bdee5750d6cbb9497140cd6582abc5fdcb9e","status":"affected","lessThan":"a411df69524f91fe3adb8f9544d33e701fc9732c","versionType":"git"},{"version":"3bed2abab4a682d426624ce9add9d7b6d475d4e4","status":"affected","lessThan":"7fd60d3c9a1e1b11ef5f1643bbae78d91eae2f4a","versionType":"git"},{"version":"7f5005457b3072fe1ddf15bfef869f2a1d98e05e","status":"affected","lessThan":"c60d17d6dd61adc761ac6f65a008fefbc54cbf87","versionType":"git"},{"version":"7d3f3b4367f315a61fc615e3138f3d320da8c466","status":"affected","lessThan":"c6d670ac656badfd0e15355e07a13a6bdf3b69fd","versionType":"git"},{"version":"7d3f3b4367f315a61fc615e3138f3d320da8c466","status":"affected","lessThan":"f27483f9975b5065ff67054cc7eb8edac6083488","versionType":"git"},{"version":"7d3f3b4367f315a61fc615e3138f3d320da8c466","status":"affected","lessThan":"6619e01855e65ef35723685a557e3eb106f4ecf5","versionType":"git"},{"version":"5.15.179","status":"affected","lessThan":"5.15.224","versionType":"semver"},{"version":"6.1.129","status":"affected","lessThan":"6.1.191","versionType":"semver"},{"version":"6.6.79","status":"affected","lessThan":"6.6.160","versionType":"semver"},{"version":"6.12.16","status":"affected","lessThan":"6.12.113","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/route.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.13","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.113","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.11","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/route.c"]}],"references":["https://git.kernel.org/stable/c/82d83eec893d8ae84f280aec44c60d9fdecc62b5","https://git.kernel.org/stable/c/a411df69524f91fe3adb8f9544d33e701fc9732c","https://git.kernel.org/stable/c/7fd60d3c9a1e1b11ef5f1643bbae78d91eae2f4a","https://git.kernel.org/stable/c/c60d17d6dd61adc761ac6f65a008fefbc54cbf87","https://git.kernel.org/stable/c/c6d670ac656badfd0e15355e07a13a6bdf3b69fd","https://git.kernel.org/stable/c/f27483f9975b5065ff67054cc7eb8edac6083488","https://git.kernel.org/stable/c/6619e01855e65ef35723685a557e3eb106f4ecf5"],"weaknesses":[],"ingestedAt":"2026-10-30T13:02:04.640Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/99xxx/CVE-2026-99074.json","commit":"cb14bf1b43b0c9f05f7f40eae2246263fd430780","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-99074","state":"PUBLISHED","datePublished":"2026-10-23T12:23:17.866Z","dateUpdated":"2026-10-30T12:41:33.126Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:25:14.389Z"},"containers":{"cna":{"title":"ipv4: stop PMTU walk when nexthop group shrinks","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nipv4: stop PMTU walk when nexthop group shrinks\n\nCommit 7d3f3b4367f3 (\"net: ipv4: Cache pmtu for all packet paths if\nmultipath enabled\") made __ip_rt_update_pmtu() update every path.\n\nFor nexthop objects, fib_info_num_path() and fib_info_nhc()\nindependently load nh->nh_grp.  RCU protects each group's lifetime but\ndoes not make the loads observe the same group.  If replacement shrinks\nthe group after the loop accepts an index, fib_info_nhc() returns NULL\nand update_or_create_fnhe() dereferences it.\n\nA deterministic probe only widened the existing window between the real\noperations.  On v7.2, an RTM_NEWNEXTHOP replacement published a\none-member group after the PMTU reader accepted index 1 from a two-member\ngroup, producing:\n\n  KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]\n  RIP: update_or_create_fnhe+0x45/0x15b0\n\nStop when the indexed path is absent.  Groups are dense, so no later\nindex exists in that snapshot.  The same real-writer window completed\n114,423 PMTU iterations without an oops with this check.  A reproducer\nis available on request.\n\nReplacement requires CAP_NET_ADMIN in the network namespace.  Where\nunprivileged user namespaces are permitted, a local user can obtain it\nin a new user and network namespace."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"fc07a232326a623d0be482e307c08ea7049c2846","status":"affected","lessThan":"82d83eec893d8ae84f280aec44c60d9fdecc62b5","versionType":"git"},{"version":"b1f7bdee5750d6cbb9497140cd6582abc5fdcb9e","status":"affected","lessThan":"a411df69524f91fe3adb8f9544d33e701fc9732c","versionType":"git"},{"version":"3bed2abab4a682d426624ce9add9d7b6d475d4e4","status":"affected","lessThan":"7fd60d3c9a1e1b11ef5f1643bbae78d91eae2f4a","versionType":"git"},{"version":"7f5005457b3072fe1ddf15bfef869f2a1d98e05e","status":"affected","lessThan":"c60d17d6dd61adc761ac6f65a008fefbc54cbf87","versionType":"git"},{"version":"7d3f3b4367f315a61fc615e3138f3d320da8c466","status":"affected","lessThan":"c6d670ac656badfd0e15355e07a13a6bdf3b69fd","versionType":"git"},{"version":"7d3f3b4367f315a61fc615e3138f3d320da8c466","status":"affected","lessThan":"f27483f9975b5065ff67054cc7eb8edac6083488","versionType":"git"},{"version":"7d3f3b4367f315a61fc615e3138f3d320da8c466","status":"affected","lessThan":"6619e01855e65ef35723685a557e3eb106f4ecf5","versionType":"git"},{"version":"5.15.179","status":"affected","lessThan":"5.15.224","versionType":"semver"},{"version":"6.1.129","status":"affected","lessThan":"6.1.191","versionType":"semver"},{"version":"6.6.79","status":"affected","lessThan":"6.6.160","versionType":"semver"},{"version":"6.12.16","status":"affected","lessThan":"6.12.113","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/route.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.13","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.113","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.11","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/route.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/82d83eec893d8ae84f280aec44c60d9fdecc62b5"},{"url":"https://git.kernel.org/stable/c/a411df69524f91fe3adb8f9544d33e701fc9732c"},{"url":"https://git.kernel.org/stable/c/7fd60d3c9a1e1b11ef5f1643bbae78d91eae2f4a"},{"url":"https://git.kernel.org/stable/c/c60d17d6dd61adc761ac6f65a008fefbc54cbf87"},{"url":"https://git.kernel.org/stable/c/c6d670ac656badfd0e15355e07a13a6bdf3b69fd"},{"url":"https://git.kernel.org/stable/c/f27483f9975b5065ff67054cc7eb8edac6083488"},{"url":"https://git.kernel.org/stable/c/6619e01855e65ef35723685a557e3eb106f4ecf5"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-30T12:41:33.126Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15.179","versionEndExcluding":"5.15.224"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1.129","versionEndExcluding":"6.1.191"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.79","versionEndExcluding":"6.6.160"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.12.16","versionEndExcluding":"6.12.113"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.13","versionEndExcluding":"6.18.57"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.13","versionEndExcluding":"7.2.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.13","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}