<Vulnerability name="CVE-2026-64538">
    <DocumentDistribution xml:lang="en">Copyright © 2012 Red Hat, Inc. All rights reserved.</DocumentDistribution>
    <ThreatSeverity>Moderate</ThreatSeverity>
    <PublicDate>2026-07-27T00:00:00</PublicDate>
    <Bugzilla id="2507822" url="https://bugzilla.redhat.com/show_bug.cgi?id=2507822" xml:lang="en:us">
kernel: ipv6: Fix null-ptr-deref in fib6_nh_mtu_change()
    </Bugzilla>
    <CVSS3 status="draft">
        <CVSS3BaseScore>5.3</CVSS3BaseScore>
        <CVSS3ScoringVector>CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H</CVSS3ScoringVector>
    </CVSS3>
    <CWE>CWE-476</CWE>
    <Details xml:lang="en:us" source="Mitre">
In the Linux kernel, the following vulnerability has been resolved:

ipv6: Fix null-ptr-deref in fib6_nh_mtu_change().

fib6_nh_mtu_change() re-fetches idev via __in6_dev_get(arg-&gt;dev) and
dereferences idev-&gt;cnf.mtu6 without a NULL check. addrconf_ifdown()
clears dev-&gt;ip6_ptr with RCU_INIT_POINTER() after rt6_disable_ip() has
released tb6_lock, so the RA-driven MTU walk can observe a NULL idev and
oops. The caller rt6_mtu_change_route() guards its own __in6_dev_get(),
but this re-fetch is unguarded; nexthop-backed routes survive
addrconf_ifdown()'s flush, so the walk still reaches it after ip6_ptr is
nulled.

Return 0 when idev is NULL, matching rt6_mtu_change_route() and the
fib6_mtu() fix in commit 5ad509c1fdad ("ipv6: Fix null-ptr-deref in
fib6_mtu().").

  Oops: general protection fault, ... KASAN: null-ptr-deref in range
        [0x00000000000002a8-0x00000000000002af]
  RIP: 0010:fib6_nh_mtu_change+0x203/0x990
   rt6_mtu_change_route+0x141/0x1d0
   __fib6_clean_all+0xd0/0x160
   rt6_mtu_change+0xb4/0x100
   ndisc_router_discovery+0x24b5/0x2cb0
   icmpv6_rcv+0x12e9/0x1710
   ipv6_rcv+0x39b/0x410
    </Details>
    <Details xml:lang="en:us" source="Red Hat">
A flaw was found in the Linux kernel's IPv6 networking component. A null pointer dereference vulnerability exists in the `fib6_nh_mtu_change()` function. This can occur when the `idev` (in6_device) pointer is cleared during network interface shutdown, but the `fib6_nh_mtu_change()` function attempts to dereference it without a proper null check. An attacker could potentially trigger this condition, leading to a kernel crash and a Denial of Service (DoS).
    </Details>
    <Statement xml:lang="en:us">
A flaw was found in the Linux kernel IPv6 routing implementation. The fib6_nh_mtu_change() function re-fetches the associated inet6_dev (idev) pointer via __in6_dev_get() and dereferences idev-&gt;cnf.mtu6 without a NULL check. When a network interface is brought down, addrconf_ifdown() clears the device IPv6 pointer (dev-&gt;ip6_ptr) while nexthop-backed routes can still reference the interface during the teardown window. If an incoming ICMPv6 Router Advertisement drives an MTU update on one of these routes, via icmpv6_rcv(), ndisc_router_discovery(), and rt6_mtu_change(), while the interface teardown race is in progress, fib6_nh_mtu_change() can observe a NULL idev and crash. This is classified as CWE-476 (NULL Pointer Dereference) and results in a kernel oops or crash, a denial of service only. There is no confidentiality or integrity impact, since the fault occurs on a NULL pointer read with no further data exposure or corruption. Triggering the flaw requires an attacker on the same local network segment (adjacent) sending ICMPv6 Router Advertisement traffic while the target interface happens to be undergoing teardown, a timing condition outside the attacker's control. Fixed upstream in the Linux kernel via commit 46c3b8191aad3d032776bf3bebf03efdf5f4b905.
    </Statement>
    <Mitigation xml:lang="en:us">
There is no mitigation for this issue other than applying the fix. Exploitation requires an attacker on the same local network segment as the target, and requires a network interface carrying nexthop-backed IPv6 routes to be undergoing teardown at the same time an ICMPv6 Router Advertisement is processed against it, a race window that is not reliably controllable by an attacker.
    </Mitigation>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:10">
        <ProductName>Red Hat Enterprise Linux 10</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>kernel</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:10">
        <ProductName>Red Hat Enterprise Linux 10</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>libkrun</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:6">
        <ProductName>Red Hat Enterprise Linux 6</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>kernel</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:7">
        <ProductName>Red Hat Enterprise Linux 7</ProductName>
        <FixState>Not affected</FixState>
        <PackageName>kernel</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:7">
        <ProductName>Red Hat Enterprise Linux 7</ProductName>
        <FixState>Not affected</FixState>
        <PackageName>kernel-rt</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:8">
        <ProductName>Red Hat Enterprise Linux 8</ProductName>
        <FixState>Not affected</FixState>
        <PackageName>kernel</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:8">
        <ProductName>Red Hat Enterprise Linux 8</ProductName>
        <FixState>Not affected</FixState>
        <PackageName>kernel-rt</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:9">
        <ProductName>Red Hat Enterprise Linux 9</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>kernel</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:9">
        <ProductName>Red Hat Enterprise Linux 9</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>kernel-rt</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:enterprise_linux_nvidia:">
        <ProductName>Red Hat Enterprise Linux for NVIDIA 26</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>kernel</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openshift:4">
        <ProductName>Red Hat OpenShift Container Platform 4</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>rhcos</PackageName>
    </PackageState>
    <References xml:lang="en:us">
https://www.cve.org/CVERecord?id=CVE-2026-64538
https://nvd.nist.gov/vuln/detail/CVE-2026-64538
https://lore.kernel.org/linux-cve-announce/2026072735-CVE-2026-64538-1a88@gregkh/T
    </References>
</Vulnerability>