Live › vulnerability › CVE-2026-98968
Go to dashboardIn the Linux kernel's amt tunnel driver, a General Query queued in a qdisc keeps a raw pointer to a tunnel that can be freed first, so dequeuing it causes a use-after-free. The sources do not describe what an attacker can do beyond the memory corruption and crash shown in the KASAN trace.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-23 21:57 UTC. All times on this page are UTC.
Only hosts that run an amt (Automatic Multicast Tunneling) relay or gateway device with the amt driver loaded can hit this path, and the trigger shown needs a qdisc with a long delay on the amt device. Hosts without amt devices or without the driver can skip it. Whether the flaw is reachable by remote parties is unknown from the sources.
No product ranges from the sources yet.
uname -r and whether the amt driver is loaded with lsmod | grep amtip -d link show type amtEach row is the first time that source carried this signal. The analyst’s rows are its own findings.
In the Linux kernel, the following vulnerability has been resolved:
amt: send the relay's General Query directly from the receive path
An skb queued in a qdisc can outlive the tunnel it references through a raw pointer in skb->cb. For example, with igmp_qrv set to 1 on the relay a tunnel lives for 135s, so a netem delay of 180s on the amt device outlives it; when the tunnel expires and is freed, the subsequent dequeue triggers a use-after-free in amt_dev_xmit().
BUG: KASAN: slab-use-after-free in amt_dev_xmit+0x2763/0x2e20 Call Trace: amt_dev_xmit+0x2763/0x2e20 [drivers/net/amt.c:1262] dev_hard_start_xmit+0x22f/0x620 sch_direct_xmit+0x12e/0xac0 netem_dequeue+0x333/0xc50 net_tx_action+0x35c/0xa60
amt_send_igmp_gq() and amt_send_mld_gq() are only called from amt_request_handler(), inside the rcu_read_lock_bh() section of amt_rcv(). amt_request_handler() already has the tunnel the query is for: it found or created it inside that section. Queuing the query with dev_queue_xmit() only leads back into amt_dev_xmit(), which strips the Ethernet header and calls amt_send_membership_query() for that tunnel.
Make that call directly from the two senders instead, the same way amt_send_advertisement() transmits from the receive path. The query never waits in a qdisc, the tunnel is only dereferenced inside the RCU section that found or created it, and nothing is stored in skb->cb, so no lookup or refcount is needed. Remove the query branch of amt_dev_xmit(), amt_skb_cb() and struct amt_skb_cb, which have no users left.
Behaviour changes:
This page as .md · .json · in your agent: get_signal("CVE-2026-98968")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.