Live › vulnerability › CVE-2026-98531
Go to dashboardA short SEG6_ATTR_DST netlink attribute makes the kernel copy 16 bytes past the end of a buffer into the SRv6 tunnel source address. That value is then returned to userspace through SEG6_CMD_GET_TUNSRC, leaking uninitialized kernel heap memory.
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.
Systems running a Linux kernel with SRv6 (seg6) Generic Netlink support, where local processes can send SEG6 netlink commands. Hosts that do not use SRv6 or do not allow untrusted local processes to open netlink sockets are less exposed. The sources do not say whether the seg6 module is built in by default.
No product ranges from the sources yet.
uname -r and compare against the kernel release that contains the upstream fix for this CVE; the sources do not name the fixed versionlsmod | grep seg6 or grep -i seg6 /proc/net/ipv6_route to see whether SRv6 (seg6) support is in useEach 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:
ipv6: sr: enforce exact attribute length for SEG6_ATTR_DST
In seg6_genl_policy, SEG6_ATTR_DST is defined with .type = NLA_BINARY and .len = sizeof(struct in6_addr). For NLA_BINARY, .len only enforces the maximum payload length and permits shorter payloads (e.g., 0 bytes). When seg6_genl_set_tunsrc() copies sizeof(struct in6_addr) bytes via kmemdup(val, sizeof(*val), GFP_KERNEL), a short SEG6_ATTR_DST attribute triggers a 16-byte out-of-bounds read past skb->tail into uninitialized skb->head memory, which is stored in sdata->tun_src and leaked back to userspace via SEG6_CMD_GET_TUNSRC.
Switch SEG6_ATTR_DST in seg6_genl_policy to NLA_POLICY_EXACT_LEN(sizeof(struct in6_addr)) so that generic netlink validation rejects any attribute whose length is not exactly sizeof(struct in6_addr) with -ERANGE.
Tested in QEMU against Linux 7.3.0-rc3 by sending a SEG6_CMD_SET_TUNSRC Generic Netlink message with a 0-byte SEG6_ATTR_DST attribute followed by SEG6_CMD_GET_TUNSRC. On the unfixed kernel, SEG6_CMD_SET_TUNSRC succeeds (err = 0) and SEG6_CMD_GET_TUNSRC leaks 16 bytes of uninitialized kernel heap memory (tun_src = 836a61ecc4d25a1042a8d60411cfb378); with this patch applied, SEG6_CMD_SET_TUNSRC is rejected by netlink policy validation with -ERANGE (-34) and tun_src remains zeroed.
This page as .md · .json · in your agent: get_signal("CVE-2026-98531")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.