← Back to CVE Explorer

CVE-2026-98570

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: net: ipv6: keep room for the mac header in dst_dev_overhead() The seg6, ioam6 and rpl lwtunnels size their skb_cow_head() request as the length they are about to push plus dst_dev_overhead(), then push the new headers and rebuild the mac header below them with skb_mac_header_rebuild(). That rebuild needs skb->mac_len of headroom, but dst_dev_overhead() leaves LL_RESERVED_SPACE() of the egress device, 16 bytes for plain Ethernet. Where the mac header is longer than that, as it is on ingress through a VLAN device with reorder_hdr off, the rebuild runs out of room: skb_set_mac_header(skb, -skb->mac_len) computes a negative offset, stores it unchecked in the u16 skb->mac_header, and the memmove that follows writes skb->mac_len bytes about 64 KB past skb->head. Forwarding plain ping6 traffic through such a device reproduces it on all five seg6 encapsulation modes and on the rpl and ioam6 inline paths; skb->mac_header comes back as 65534 on a 704-byte head. Return the larger of the two. The helper already returns skb->mac_len when it has no dst, so this only makes the other branch agree, and it covers every caller rather than each call site in turn.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-10-18 16:17:09.233000
Last modified
2026-10-19 10:19:15.053000
View original CVE JSON
{
  "id": "CVE-2026-98570",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-10-18T16:17:09.233",
  "lastModified": "2026-10-19T10:19:15.053",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: ipv6: keep room for the mac header in dst_dev_overhead()\n\nThe seg6, ioam6 and rpl lwtunnels size their skb_cow_head() request as\nthe length they are about to push plus dst_dev_overhead(), then push the\nnew headers and rebuild the mac header below them with\nskb_mac_header_rebuild().  That rebuild needs skb->mac_len of headroom,\nbut dst_dev_overhead() leaves LL_RESERVED_SPACE() of the egress device,\n16 bytes for plain Ethernet.\n\nWhere the mac header is longer than that, as it is on ingress through a\nVLAN device with reorder_hdr off, the rebuild runs out of room:\nskb_set_mac_header(skb, -skb->mac_len) computes a negative offset,\nstores it unchecked in the u16 skb->mac_header, and the memmove that\nfollows writes skb->mac_len bytes about 64 KB past skb->head.\nForwarding plain ping6 traffic through such a device reproduces it on\nall five seg6 encapsulation modes and on the rpl and ioam6 inline paths;\nskb->mac_header comes back as 65534 on a 704-byte head.\n\nReturn the larger of the two.  The helper already returns skb->mac_len\nwhen it has no dst, so this only makes the other branch agree, and it\ncovers every caller rather than each call site in turn."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "include/net/dst.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "dce525185bc92864e5a318040285ee070563fe34",
              "lessThan": "36c07127924f11fc5741a780abcaaf808fe9ef13",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "dce525185bc92864e5a318040285ee070563fe34",
              "lessThan": "87cd6b717e4069dca34e0866e57eaeb44d3b173e",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "8471e228448a818e4c27cab4b681b2e758e46cf5",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c432cd18a07b623651ed15ea167bd303467004cc",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "634710a372ba65bee667c2f6e58a97658c639eab",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c447c5a9c47bb4858ab12bf90879fe595d2b7f46",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "ab9de9c48316d2622d3bf353916b99971570e2c9",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "2fcc9f3798ef82399564d247458e69abd10e683b",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "371d8dc298b4f59e99b4564ac5d906fce0932c69",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b26f015dfb07b6be12d005a0ed0c5c43b7bedbf3",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0b11dc50590e10590b39dcda79835cd32f49d00",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "4c12c3c8abd8b888945d31e7bdbb0d8b73032fc5",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "25d8e065c7972dc98fd7a4cac322d5367eaede88",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "4a855c5aec41bf84922224ab7a74e088776e3ac4",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "a9f0407414e16176fdbbbd298c9e18d6dfdf96bc",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "6.12.16",
              "lessThan": "6.13",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "6.13.4",
              "lessThan": "6.14",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "5.15.179",
              "lessThan": "5.16",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "6.1.130",
              "lessThan": "6.2",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "6.6.81",
              "lessThan": "6.7",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "5.10.235",
              "lessThan": "5.11",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "include/net/dst.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6.14",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "6.14",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.9",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/36c07127924f11fc5741a780abcaaf808fe9ef13",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/87cd6b717e4069dca34e0866e57eaeb44d3b173e",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}