CVE-2026-98531

Source
https://cve.org/CVERecord?id=CVE-2026-98531
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98531.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-98531
Downstream
Published
2026-10-18T15:17:49Z
Modified
2026-10-19T02:46:25Z
Summary
ipv6: sr: enforce exact attribute length for SEG6_ATTR_DST
Details

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.

Database specific
{
    "cna_assigner":  "Linux",
    "osv_generated_from":  "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98531.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
915d7e5e5930b4f01d0971d93b9b25ed17d221aa
Fixed
050a0aa3c80907b8c60a396b7e04d48d8b1a9e70
Fixed
209eefebee54c4a5f01d68b61e8ac9881eca2de9
Fixed
e3ac68c1cdc2535d127b2bfd50c263d16c8e4199
Fixed
66bf65fa109326e4c4ddeb0b94093379f72838fd
Fixed
195813bb7324c338eaba0aaa02b18681ee65b670
Fixed
6fcfc362344edea745a69f3a705de50b731f3418
Fixed
94214cf0a08dd2c5f37aeeea46078d9dfe8e4a0e
Fixed
2d959c75c27f90e9ec489d18ce5ee6b852ad4741

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98531.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.10.0
Fixed
5.10.271
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.222
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.189
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.158
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.112
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.55
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.2.9

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98531.json"