---
id: CVE-2026-98532
title: 'ipv6: do not let ipv6_find_hdr() return an offset past the packet end'
summary: |-
  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 …
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    ca96b38730e31357ef4a9d76af1336958ac670d7
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    531255de8971c06d5d5986f85fdc2525d707ba71
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    543354c6efb27eae3372a3a9674aeaa2a86e2b2c
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    dc92cb972e86790b8078337ec41015b748b8f8e5
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    1c70275ca87e769e1a52abc644d61372d8c016cb
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    1d42828565889632068fbc2983c34d57c66af4e0
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    4254d5878c320c19961dd0b8e1d0aca4800d8b7d
  - >-
    Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b <
    ee319bd3a0e976af5087cbe59ebc50a66f31d202
  - Linux 3.8
published: '2026-10-18'
updated: '2026-10-18'
sourceUpdated: '2026-10-18T15:17:50.490Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98532'
references:
  - url: 'https://git.kernel.org/stable/c/ca96b38730e31357ef4a9d76af1336958ac670d7'
  - url: 'https://git.kernel.org/stable/c/531255de8971c06d5d5986f85fdc2525d707ba71'
  - url: 'https://git.kernel.org/stable/c/543354c6efb27eae3372a3a9674aeaa2a86e2b2c'
  - url: 'https://git.kernel.org/stable/c/dc92cb972e86790b8078337ec41015b748b8f8e5'
  - url: 'https://git.kernel.org/stable/c/1c70275ca87e769e1a52abc644d61372d8c016cb'
  - url: 'https://git.kernel.org/stable/c/1d42828565889632068fbc2983c34d57c66af4e0'
  - url: 'https://git.kernel.org/stable/c/4254d5878c320c19961dd0b8e1d0aca4800d8b7d'
  - url: 'https://git.kernel.org/stable/c/ee319bd3a0e976af5087cbe59ebc50a66f31d202'
tags:
  - cve.org
ingestedAt: '2026-10-18T15:45:12.278Z'
---

## Overview

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.

## Affected

- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < ca96b38730e31357ef4a9d76af1336958ac670d7`
- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < 531255de8971c06d5d5986f85fdc2525d707ba71`
- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < 543354c6efb27eae3372a3a9674aeaa2a86e2b2c`
- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < dc92cb972e86790b8078337ec41015b748b8f8e5`
- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < 1c70275ca87e769e1a52abc644d61372d8c016cb`
- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < 1d42828565889632068fbc2983c34d57c66af4e0`
- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < 4254d5878c320c19961dd0b8e1d0aca4800d8b7d`
- `Linux >= f8f626754ebeca613cf1af2e6f890cfde0e74d5b < ee319bd3a0e976af5087cbe59ebc50a66f31d202`
- `Linux 3.8`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
