{"id":"CVE-2026-64542","state":"PUBLISHED","title":"ipv6: ndisc: fix NULL deref in accept_untracked_na()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nipv6: ndisc: fix NULL deref in accept_untracked_na()\n\naccept_untracked_na() re-fetches the inet6_dev with __in6_dev_get(dev)\nand dereferences idev->cnf.accept_untracked_na without a NULL check,\neven though its only caller ndisc_recv_na() already fetched and\nNULL-checked idev for the same device.\n\nBoth reads of dev->ip6_ptr run in the same RCU read-side critical\nsection, but a concurrent addrconf_ifdown() can clear dev->ip6_ptr\nbetween them: lowering the MTU below IPV6_MIN_MTU calls addrconf_ifdown()\nwithout the synchronize_net() that orders the unregister path, so the\nre-fetch returns NULL and oopses:\n\n BUG: KASAN: null-ptr-deref in ndisc_recv_na (net/ipv6/ndisc.c:974)\n Read of size 4 at addr 0000000000000364\n Call Trace:\n  <IRQ>\n  ndisc_recv_na (net/ipv6/ndisc.c:974)\n  icmpv6_rcv (net/ipv6/icmp.c:1193)\n  ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:479)\n  ip6_input_finish (net/ipv6/ip6_input.c:534)\n  ip6_input (net/ipv6/ip6_input.c:545)\n  ip6_mc_input (net/ipv6/ip6_input.c:635)\n  ipv6_rcv (net/ipv6/ip6_input.c:351)\n  </IRQ>\n\nIt is reachable by an unprivileged user via a network namespace.\n\nPass the caller's already validated idev instead of re-fetching it; the\nidev stays alive for the whole RCU critical section, so it is safe even\nafter dev->ip6_ptr has been cleared.","publishedAt":"2026-07-27T20:10:34.994Z","updatedAt":"2026-08-19T16:28:25.885Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"e5ba3017e46f275ad347e762e8eecacec5efa41d","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"160d3f0d7a556ceae505dcab521a37057b4ce28f","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"62c719203cb521b64fab74da94a81bdde5c18808","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"a6450f7cfae57b382cbaf66a577765c9a88b3c58","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"63d1c23764de2309cedbb779c75188d257a09d9b","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"d186e942365acece7c56d39da05dd63bf95b280a","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv6/ndisc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.0","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.0","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.148","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv6/ndisc.c"]}],"references":["https://git.kernel.org/stable/c/e5ba3017e46f275ad347e762e8eecacec5efa41d","https://git.kernel.org/stable/c/160d3f0d7a556ceae505dcab521a37057b4ce28f","https://git.kernel.org/stable/c/62c719203cb521b64fab74da94a81bdde5c18808","https://git.kernel.org/stable/c/a6450f7cfae57b382cbaf66a577765c9a88b3c58","https://git.kernel.org/stable/c/63d1c23764de2309cedbb779c75188d257a09d9b","https://git.kernel.org/stable/c/d186e942365acece7c56d39da05dd63bf95b280a"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:41.951Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/64xxx/CVE-2026-64542.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64542","state":"PUBLISHED","datePublished":"2026-07-27T20:10:34.994Z","dateUpdated":"2026-08-19T16:28:25.885Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-19T15:36:31.795Z"},"containers":{"cna":{"title":"ipv6: ndisc: fix NULL deref in accept_untracked_na()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nipv6: ndisc: fix NULL deref in accept_untracked_na()\n\naccept_untracked_na() re-fetches the inet6_dev with __in6_dev_get(dev)\nand dereferences idev->cnf.accept_untracked_na without a NULL check,\neven though its only caller ndisc_recv_na() already fetched and\nNULL-checked idev for the same device.\n\nBoth reads of dev->ip6_ptr run in the same RCU read-side critical\nsection, but a concurrent addrconf_ifdown() can clear dev->ip6_ptr\nbetween them: lowering the MTU below IPV6_MIN_MTU calls addrconf_ifdown()\nwithout the synchronize_net() that orders the unregister path, so the\nre-fetch returns NULL and oopses:\n\n BUG: KASAN: null-ptr-deref in ndisc_recv_na (net/ipv6/ndisc.c:974)\n Read of size 4 at addr 0000000000000364\n Call Trace:\n  <IRQ>\n  ndisc_recv_na (net/ipv6/ndisc.c:974)\n  icmpv6_rcv (net/ipv6/icmp.c:1193)\n  ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:479)\n  ip6_input_finish (net/ipv6/ip6_input.c:534)\n  ip6_input (net/ipv6/ip6_input.c:545)\n  ip6_mc_input (net/ipv6/ip6_input.c:635)\n  ipv6_rcv (net/ipv6/ip6_input.c:351)\n  </IRQ>\n\nIt is reachable by an unprivileged user via a network namespace.\n\nPass the caller's already validated idev instead of re-fetching it; the\nidev stays alive for the whole RCU critical section, so it is safe even\nafter dev->ip6_ptr has been cleared."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"e5ba3017e46f275ad347e762e8eecacec5efa41d","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"160d3f0d7a556ceae505dcab521a37057b4ce28f","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"62c719203cb521b64fab74da94a81bdde5c18808","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"a6450f7cfae57b382cbaf66a577765c9a88b3c58","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"63d1c23764de2309cedbb779c75188d257a09d9b","versionType":"git"},{"version":"aaa5f515b16b6b3e137779ffb4c9558bb58c1e75","status":"affected","lessThan":"d186e942365acece7c56d39da05dd63bf95b280a","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv6/ndisc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.0","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.0","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.148","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv6/ndisc.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/e5ba3017e46f275ad347e762e8eecacec5efa41d"},{"url":"https://git.kernel.org/stable/c/160d3f0d7a556ceae505dcab521a37057b4ce28f"},{"url":"https://git.kernel.org/stable/c/62c719203cb521b64fab74da94a81bdde5c18808"},{"url":"https://git.kernel.org/stable/c/a6450f7cfae57b382cbaf66a577765c9a88b3c58"},{"url":"https://git.kernel.org/stable/c/63d1c23764de2309cedbb779c75188d257a09d9b"},{"url":"https://git.kernel.org/stable/c/d186e942365acece7c56d39da05dd63bf95b280a"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-19T16:28:25.885Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.0","versionEndExcluding":"6.1.183"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.0","versionEndExcluding":"6.6.148"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.0","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.0","versionEndExcluding":"6.18.40"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.0","versionEndExcluding":"7.1.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.0","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}