CVE-2026-80995
nicheUse-after-free in Linux kernel MCTP route lookup enables local privilege escalation
The Linux kernel's MCTP (Management Component Transport Protocol) route-lookup path dereferences a route's underlying network device without holding a reference, so the device can be torn down and freed concurrently (mctp_dev_put() kfree's mdev->addrs) while mctp_dev_saddr() reads rt->dev->addrs[0] and mctp_dst_from_route() increments an already-zero refcount. An unprivileged local user with access to an AF_MCTP socket — no CAP_NET_RAW required — can trigger this use-after-free on the receive/forwarding path, potentially escalating privileges to root or crashing the kernel (CVSS 3.1: 7.8, with high confidentiality, integrity, and availability impact). This regresses the same bug class as CVE-2023-3439 because the source-address lookup was moved ahead of the point where the destination takes its device reference. Affected systems are those running kernel builds containing the regressed MCTP code; the fix takes a refcount_inc_not_zero() reference on the device, skips devices that are already dead, and drops the reference once the destination holds its own. No public PoC is known, the CVE is not in CISA's KEV, and no exploitation in the wild has been reported.
What to do: Patch to a kernel containing the upstream fix that takes a device reference with refcount_inc_not_zero() in mctp_route_lookup() and skips already-dead devices. If patching is delayed, check whether the mctp module is loaded or MCTP interfaces/routes exist and unload or disable AF_MCTP where it is not needed. On systems where MCTP is in use, restrict untrusted local user accounts, since exploitation requires only an unprivileged local AF_MCTP socket and no CAP_NET_RAW.
| Linux kernel (net/mctp subsystem) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: net: mctp: hold a reference to the route device in mctp_route_lookup() mctp_route_lookup() uses rt->dev without holding a reference on it. mctp_route_lookup_single() returns the route under RCU only, so the route's device can be torn down concurrently: mctp_dev_put() drops the last reference and synchronously kfree()s mdev->addrs. mctp_dev_saddr() then reads rt->dev->addrs[0], giving a use-after-free reachable by an unprivileged local AF_MCTP user on the receive/forwarding path (no CAP_NET_RAW required): BUG: KASAN: slab-use-after-free in mctp_route_lookup Read of size 1 at addr ... by task mctp_uaf/... mctp_route_lookup mctp_pkttype_receive Freed by task ...: kfree mctp_dev_put mctp_dev_notify In the same window mctp_dst_from_route() -> mctp_dev_hold() also increments a refcount that has already reached zero ("refcount_t: addition on 0 ... mctp_dev_hold"). This reintroduces the use-after-free class of CVE-2023-3439: the source address lookup was moved ahead of the point where the destination takes its device reference. Take a reference with refcount_inc_not_zero() before touching rt->dev, skip a device that is already dead, and drop the reference once the destination has taken its own.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.