Description
In the Linux kernel, the following vulnerability has been resolved:

ipv6: do not let ipv6_find_hdr() return an offset past the packet end

ipv6_find_hdr() walks the extension header chain, skipping each header by
the length that header itself declares. ipv6_optlen() returns up to 2048,
and the skip is never checked against skb->len, so the offset stored in
*offset can point past the end of the packet.

openvswitch installs that offset as the transport header, and
update_ipv6_checksum() then reads and writes the transport checksum field
out of bounds:

BUG: KASAN: slab-use-after-free in inet_proto_csum_replace16+0x445/0x470
Read of size 2 at addr ffff88810b754b06 by task ovs_ipv6_oob/629
CPU: 4 UID: 1000 PID: 629 Comm: ovs_ipv6_oob Tainted: G N 7.3.0-rc3+ #348
Call Trace:
inet_proto_csum_replace16+0x445/0x470
set_ipv6_addr+0x3dd/0x460
do_execute_actions+0x6a3d/0x7c40
ovs_execute_actions+0xfd/0x480
ovs_packet_cmd_execute+0xc38/0xf20
genl_rcv_msg+0x59e/0x870
netlink_rcv_skb+0x18b/0x450
genl_rcv+0x2d/0x40
netlink_unicast+0x6bc/0xa20

The buggy address belongs to the object at ffff88810b754980
which belongs to the cache skbuff_small_head of size 704
The buggy address is located 390 bytes inside of
freed 704-byte region [ffff88810b754980, ffff88810b754c40)

Other callers use that offset too, so bound it here rather than in one
caller.

Reject a header whose declared length does not fit in the packet.
ipv6_find_hdr() already fails with -EBADMSG on a malformed chain, so this
adds no new failure mode.
Published: 2026-10-18
Score: 8.1 High
EPSS: < 1% Very Low
KEV: No
Impact: Out‑of‑bounds memory corruption that can cause kernel panic or privilege escalation
Action: Patch Now
AI Analysis

Impact

In the Linux kernel's ipv6_find_hdr() function, each IPv6 extension header's declared length is used to move through the packet without verifying that the cumulative offset remains inside the packet's actual size, allowing the function to return an offset past the end of the packet; this offset is then consumed by Open vSwitch, which sets the transport header and later calls update_ipv6_checksum(), causing out‑of‑bounds reads and writes that lead to a slab‑use‑after‑free and other memory‑corruption errors. Based on the description, the likely attack vector is the network transmission of crafted IPv6 packets containing malformed or oversized extension headers, which can trigger the vulnerability and potentially cause a kernel panic or privilege escalation. This flaw is a classic example of a CWE‑787 out‑of‑bounds write.

Affected Systems

Affected systems include any Linux kernel build that contains the unpatched ipv6_find_hdr() function. The CVE entry does not provide explicit affected version numbers; users should refer to vendor advisories for their precise kernel release. All kernels compiled before the official patch are potentially vulnerable, and every installation of Open vSwitch that relies on that kernel routine is also affected, since the bug is exercised when it processes IPv6 packets.

Risk and Exploitability

The vulnerability can be triggered by sending crafted IPv6 packets with malformed or oversized extension headers to a host or device running Open vSwitch. The exploit requires network access to the target; it does not depend on local user privileges. While no public exploit is documented, the EPSS score is less than 1 %, and the CVSS score is 8.1, indicating high severity. The vulnerability is not listed in the CISA KEV catalog, but its exploitation could lead to denial of service or privilege escalation if an attacker can repeatedly trigger the faulty code path.

Generated by OpenCVE AI on October 24, 2026 at 15:43 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that contains the patch for ipv6_find_hdr()
  • Upgrade Open vSwitch to the latest release that incorporates the updated kernel headers
  • If a kernel upgrade cannot be performed immediately, block or filter incoming IPv6 traffic that contains malformed extension headers to reduce the risk of the memory corruption being triggered

Generated by OpenCVE AI on October 24, 2026 at 15:43 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4850-1 linux-6.12 security update
Ubuntu USN Ubuntu USN USN-8961-1 Linux kernel vulnerabilities
History

Sat, 24 Oct 2026 14:15:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

cvssV3_1

{'score': 8.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H'}


Tue, 20 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-787
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Important


Sun, 18 Oct 2026 15:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: ipv6: do not let ipv6_find_hdr() return an offset past the packet end ipv6_find_hdr() walks the extension header chain, skipping each header by the length that header itself declares. ipv6_optlen() returns up to 2048, and the skip is never checked against skb->len, so the offset stored in *offset can point past the end of the packet. openvswitch installs that offset as the transport header, and update_ipv6_checksum() then reads and writes the transport checksum field out of bounds: BUG: KASAN: slab-use-after-free in inet_proto_csum_replace16+0x445/0x470 Read of size 2 at addr ffff88810b754b06 by task ovs_ipv6_oob/629 CPU: 4 UID: 1000 PID: 629 Comm: ovs_ipv6_oob Tainted: G N 7.3.0-rc3+ #348 Call Trace: inet_proto_csum_replace16+0x445/0x470 set_ipv6_addr+0x3dd/0x460 do_execute_actions+0x6a3d/0x7c40 ovs_execute_actions+0xfd/0x480 ovs_packet_cmd_execute+0xc38/0xf20 genl_rcv_msg+0x59e/0x870 netlink_rcv_skb+0x18b/0x450 genl_rcv+0x2d/0x40 netlink_unicast+0x6bc/0xa20 The buggy address belongs to the object at ffff88810b754980 which belongs to the cache skbuff_small_head of size 704 The buggy address is located 390 bytes inside of freed 704-byte region [ffff88810b754980, ffff88810b754c40) Other callers use that offset too, so bound it here rather than in one caller. Reject a header whose declared length does not fit in the packet. ipv6_find_hdr() already fails with -EBADMSG on a malformed chain, so this adds no new failure mode.
Title ipv6: do not let ipv6_find_hdr() return an offset past the packet end
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-24T14:09:19.064Z

Reserved: 2026-09-25T10:25:14.355Z

Link: CVE-2026-98532

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-18T16:17:04.790

Modified: 2026-10-24T14:16:46.340

Link: CVE-2026-98532

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-18T00:00:00Z

Links: CVE-2026-98532 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-24T15:45:07Z

Weaknesses