net: openvswitch: validate transport header presence in set_ipv6_addr
In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: validate transport header presence in set_ipv6_addr When executing IPv6 address rewrite actions on IPv6 fragments, set_ipv6_addr() calls update_ipv6_checksum(). If parse_ipv6hdr() processes a non-first IPv6 fragment, it sets key->ip.proto to NEXTHDR_FRAGMENT and returns early without calling skb_set_transport_header(). update_ipv6_checksum() unconditionally evaluates skb_transport_offset() on entry before checking l4_proto. Because skb->transport_header is uninitialized, this triggers a warning under CONFIG_DEBUG_NET=y although it is completely harmless. Fix this by returning early in update_ipv6_checksum() if l4_proto is NEXTHDR_FRAGMENT. This avoids reading the uninitialized transport offset for fragments while preserving the debug warning for any other protocol where the transport header is unexpectedly missing. See the syzbot trace: !skb_transport_header_was_set(skb) WARNING: ./include/linux/skbuff.h:3075 at skb_transport_header include/linux/skbuff.h:3075 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at skb_transport_offset include/linux/skbuff.h:3250 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at update_ipv6_checksum net/openvswitch/actions.c:361 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at set_ipv6_addr+0x462/0x660 net/openvswitch/actions.c:399, CPU#1: syz-executor463/5635 [...] RIP: 001
- Products
- Linux
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-99088
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 10:25 UTC · Revision 1
Source evidence
net: openvswitch: validate transport header presence in set_ipv6_addr
core-cve · Original sourcePublished 26 Oct 2026, 14:51 UTC
In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: validate transport header presence in set_ipv6_addr When executing IPv6 address rewrite actions on IPv6 fragments, set_ipv6_addr() calls update_ipv6_checksum(). If parse_ipv6hdr() processes a non-first IPv6 fragment, it sets key->ip.proto to NEXTHDR_FRAGMENT and returns early without calling skb_set_transport_header(). update_ipv6_checksum() unconditionally evaluates skb_transport_offset() on entry before checking l4_proto. Because skb->transport_header is uninitialized, this triggers a warning under CONFIG_DEBUG_NET=y although it is completely harmless. Fix this by returning early in update_ipv6_checksum() if l4_proto is NEXTHDR_FRAGMENT. This avoids reading the uninitialized transport offset for fragments while preserving the debug warning for any other protocol where the transport header is unexpectedly missing. See the syzbot trace: !skb_transport_header_was_set(skb) WARNING: ./include/linux/skbuff.h:3075 at skb_transport_header include/linux/skbuff.h:3075 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at skb_transport_offset include/linux/skbuff.h:3250 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at update_ipv6_checksum net/openvswitch/actions.c:361 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at set_ipv6_addr+0x462/0x660 net/openvswitch/actions.c:399, CPU#1: syz-executor463/5635 [...] RIP: 001
cve:CVE-2026-99088
Linux
Fixed versions: Not specified
Linux
Fixed versions: Not specified
Complete source record
{
"id": "948e1ac0179a0213c1557f55e192c2ece7b34e29e333456928e358d56a402676",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-99088",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "net: openvswitch: validate transport header presence in set_ipv6_addr",
"summary": "In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: validate transport header presence in set_ipv6_addr When executing IPv6 address rewrite actions on IPv6 fragments, set_ipv6_addr() calls update_ipv6_checksum(). If parse_ipv6hdr() processes a non-first IPv6 fragment, it sets key->ip.proto to NEXTHDR_FRAGMENT and returns early without calling skb_set_transport_header(). update_ipv6_checksum() unconditionally evaluates skb_transport_offset() on entry before checking l4_proto. Because skb->transport_header is uninitialized, this triggers a warning under CONFIG_DEBUG_NET=y although it is completely harmless. Fix this by returning early in update_ipv6_checksum() if l4_proto is NEXTHDR_FRAGMENT. This avoids reading the uninitialized transport offset for fragments while preserving the debug warning for any other protocol where the transport header is unexpectedly missing. See the syzbot trace: !skb_transport_header_was_set(skb) WARNING: ./include/linux/skbuff.h:3075 at skb_transport_header include/linux/skbuff.h:3075 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at skb_transport_offset include/linux/skbuff.h:3250 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at update_ipv6_checksum net/openvswitch/actions.c:361 [inline], CPU#1: syz-executor463/5635 WARNING: ./include/linux/skbuff.h:3075 at set_ipv6_addr+0x462/0x660 net/openvswitch/actions.c:399, CPU#1: syz-executor463/5635 [...] RIP: 001",
"evidence": "cve:CVE-2026-99088",
"products": [
{
"name": {
"value": "Linux",
"evidence": "/containers/cna/affected/0/product"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": []
},
{
"name": {
"value": "Linux",
"evidence": "/containers/cna/affected/1/product"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2026-99088",
"aliases": [
"CVE-2026-99088"
],
"metrics": [],
"affected": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "3fdbd1ce11e5c0d7cafbe44c942c5cad61113d7b",
"lessThan": "b7b80d204abdc258006f9e17c92b363ab13bb599",
"versionType": "git"
},
{
"status": "affected",
"version": "3fdbd1ce11e5c0d7cafbe44c942c5cad61113d7b",
"lessThan": "6774af7cd17be8f0d0f70de3a749d381b4f2e9da",
"versionType": "git"
},
{
"status": "affected",
"version": "3fdbd1ce11e5c0d7cafbe44c942c5cad61113d7b",
"lessThan": "2594795fd832f0253826d64ff8976b8ff5fbfe9f",
"versionType": "git"
},
{
"status": "affected",
"version": "3fdbd1ce11e5c0d7cafbe44c942c5cad61113d7b",
"lessThan": "6b8897ba0733f88f0360ea48a970f373f9142de0",
"versionType": "git"
},
{
"status": "affected",
"version": "3fdbd1ce11e5c0d7cafbe44c942c5cad61113d7b",
"lessThan": "3c6a4b11330fe424557538a98fca9f0a4c5bf313",
"versionType": "git"
}
],
"programFiles": [
"net/openvswitch/actions.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "3.8"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "3.8",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.6.160",
"versionType": "semver",
"lessThanOrEqual": "6.6.*"
},
{
"status": "unaffected",
"version": "6.12.113",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.18.57",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.11",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"net/openvswitch/actions.c"
],
"defaultStatus": "affected"
}
],
"modified": "2026-10-26T14:51:58.460Z",
"provider": "cve",
"references": [
"https://git.kernel.org/stable/c/b7b80d204abdc258006f9e17c92b363ab13bb599",
"https://git.kernel.org/stable/c/6774af7cd17be8f0d0f70de3a749d381b4f2e9da",
"https://git.kernel.org/stable/c/2594795fd832f0253826d64ff8976b8ff5fbfe9f",
"https://git.kernel.org/stable/c/6b8897ba0733f88f0360ea48a970f373f9142de0",
"https://git.kernel.org/stable/c/3c6a4b11330fe424557538a98fca9f0a4c5bf313"
],
"provider_metadata": {
"cna": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-10-26T14:51:58.460Z"
}
}
},
"related_cves": [
{
"value": "CVE-2026-99088",
"evidence": "/cveMetadata/cveId"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-cve",
"document_id": 311605,
"published_at": "2026-10-26T14:51:58.46+00:00"
}