CVE-2026-68302 (GCVE-0-2026-68302)
Vulnerability from cvelistv5
Published
2026-08-10 12:02
Modified
2026-08-19 16:32
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: amt: re-read skb header pointers after every pull Several AMT receive and transmit paths cache a pointer into the skb head (ip_hdr(), ipv6_hdr(), eth_hdr() or the AMT message header) and then call a helper that can reallocate that head before the cached pointer is used again. pskb_may_pull(), ip_mc_may_pull(), ipv6_mc_may_pull(), iptunnel_pull_header(), ip_mc_check_igmp() and ipv6_mc_check_mld() can all free the old head and move the data, so a pointer taken before the call dangles afterwards and the later access is a use-after-free of the freed head. The affected sites are: amt_rcv() caches ip_hdr() before amt_parse_type() pulls, then reads iph->saddr. amt_dev_xmit() caches ip_hdr()/ipv6_hdr() before ip_mc_check_igmp()/ ipv6_mc_check_mld() and pskb_may_pull(), then reads the group address. amt_multicast_data_handler() caches eth_hdr() before pskb_may_pull(), then writes the L2 header. amt_membership_query_handler() caches the AMT header, the outer and inner eth_hdr() and ip_hdr() before iptunnel_pull_header() and several pulls, then reads and writes them. amt_igmpv3_report_handler() and amt_mldv2_report_handler() cache ip_hdr()/ipv6_hdr() and the current group record and read the record count from the report header inside the record loop, across the *_mc_may_pull() calls. amt_update_handler() caches ip_hdr() and the AMT membership-update header before pskb_may_pull(), iptunnel_pull_header(), ip_mc_check_igmp() and the report handler, then reads iph->daddr and amtmu->nonce / amtmu->response_mac. Fix each site by either snapshotting the scalar that is used after the pull before the first pull runs, or re-deriving the header pointer from the skb after the last pull that can move the head. Values that are stable across the pull (source and group address, the response MAC and nonce, the record count, the outer source MAC) are snapshotted; pointers that are written through or read repeatedly are re-derived.
Impacted products
Vendor Product Version
Linux Linux Version: cbc21dc1cfe949e37b2a54c71511579f1899e8d4
Version: cbc21dc1cfe949e37b2a54c71511579f1899e8d4
Version: cbc21dc1cfe949e37b2a54c71511579f1899e8d4
Version: cbc21dc1cfe949e37b2a54c71511579f1899e8d4
Version: cbc21dc1cfe949e37b2a54c71511579f1899e8d4
Version: cbc21dc1cfe949e37b2a54c71511579f1899e8d4
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/amt.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "37ff890f9c18dfbcf57e17199901d4fd1e4c174e",
              "status": "affected",
              "version": "cbc21dc1cfe949e37b2a54c71511579f1899e8d4",
              "versionType": "git"
            },
            {
              "lessThan": "9005b221cb1f9c3c1a2ef656fb0e8fa80c0a187e",
              "status": "affected",
              "version": "cbc21dc1cfe949e37b2a54c71511579f1899e8d4",
              "versionType": "git"
            },
            {
              "lessThan": "7746d588d42a4ac0117b68ed8e9b22a9da53dfb7",
              "status": "affected",
              "version": "cbc21dc1cfe949e37b2a54c71511579f1899e8d4",
              "versionType": "git"
            },
            {
              "lessThan": "ca0e8b661957f777591efe874cd9d9a63619cd99",
              "status": "affected",
              "version": "cbc21dc1cfe949e37b2a54c71511579f1899e8d4",
              "versionType": "git"
            },
            {
              "lessThan": "7f48e3ddad8e97545b25788b8203b3a539df1621",
              "status": "affected",
              "version": "cbc21dc1cfe949e37b2a54c71511579f1899e8d4",
              "versionType": "git"
            },
            {
              "lessThan": "3656a79f94c471827a08f2cacce5f94ad5e52c24",
              "status": "affected",
              "version": "cbc21dc1cfe949e37b2a54c71511579f1899e8d4",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/amt.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.16"
            },
            {
              "lessThan": "5.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.183",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.148",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.101",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.42",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.183",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.148",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.101",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.42",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.6",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\namt: re-read skb header pointers after every pull\n\nSeveral AMT receive and transmit paths cache a pointer into the skb head\n(ip_hdr(), ipv6_hdr(), eth_hdr() or the AMT message header) and then call\na helper that can reallocate that head before the cached pointer is used\nagain.  pskb_may_pull(), ip_mc_may_pull(), ipv6_mc_may_pull(),\niptunnel_pull_header(), ip_mc_check_igmp() and ipv6_mc_check_mld() can all\nfree the old head and move the data, so a pointer taken before the call\ndangles afterwards and the later access is a use-after-free of the freed\nhead.\n\nThe affected sites are:\n\n  amt_rcv() caches ip_hdr() before amt_parse_type() pulls, then reads\n  iph-\u003esaddr.\n\n  amt_dev_xmit() caches ip_hdr()/ipv6_hdr() before ip_mc_check_igmp()/\n  ipv6_mc_check_mld() and pskb_may_pull(), then reads the group address.\n\n  amt_multicast_data_handler() caches eth_hdr() before pskb_may_pull(),\n  then writes the L2 header.\n\n  amt_membership_query_handler() caches the AMT header, the outer and\n  inner eth_hdr() and ip_hdr() before iptunnel_pull_header() and several\n  pulls, then reads and writes them.\n\n  amt_igmpv3_report_handler() and amt_mldv2_report_handler() cache\n  ip_hdr()/ipv6_hdr() and the current group record and read the record\n  count from the report header inside the record loop, across the\n  *_mc_may_pull() calls.\n\n  amt_update_handler() caches ip_hdr() and the AMT membership-update\n  header before pskb_may_pull(), iptunnel_pull_header(),\n  ip_mc_check_igmp() and the report handler, then reads iph-\u003edaddr and\n  amtmu-\u003enonce / amtmu-\u003eresponse_mac.\n\nFix each site by either snapshotting the scalar that is used after the\npull before the first pull runs, or re-deriving the header pointer from\nthe skb after the last pull that can move the head.  Values that are\nstable across the pull (source and group address, the response MAC and\nnonce, the record count, the outer source MAC) are snapshotted; pointers\nthat are written through or read repeatedly are re-derived."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - AMT is a routable UDP tunnel (port 2268); all affected handlers run from amt_rcv(), the UDP encap receive callback, on packets from arbitrary remote hosts across the internet. No same-segment requirement exists.\nAC:L - The attacker chooses the packet sizes and fragmentation that make the skb non-linear or cloned, so the pskb_may_pull()/iptunnel_pull_header()/ip_mc_check_igmp() calls deterministically reallocate the skb head and strand the cached pointers; no race or uncontrollable state is involved.\nPR:N - AMT has no authentication: amt_request_handler() creates a tunnel for any source IP and returns the nonce/response MAC to the sender, so an unauthenticated remote host can complete the handshake and then reach the vulnerable update/report paths; gateway paths need only a spoofed relay source address.\nUI:N - Exploitation is entirely driven by inbound UDP packets processed in softirq context; no local user action or interaction is required on the target relay or gateway.\nS:U - The use-after-free corrupts kernel heap memory within the same kernel security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Stale header pointers are read after the head is freed, so freed heap contents are consumed as source/group addresses and record counts, and are copied into the destination MAC of frames delivered up the stack, leaking reallocated kernel memory to the attacker; UAF reads generally enable broader disclosure.\nI:H - amt_multicast_data_handler() and amt_membership_query_handler() write through the dangling pointers (eth-\u003eh_proto, ip_eth_mc_map()/ipv6_eth_mc_map() into eth-\u003eh_dest, ether_addr_copy of h_source), giving an attacker-influenced heap write into freed and likely reallocated memory, a classic control-flow hijack primitive.\nA:H - Use-after-free reads and writes on a freed skb head corrupt the slab and readily cause KASAN splats, oopses, or kernel panic, and the packets triggering it can be sent repeatedly by an unauthenticated remote attacker."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-19T16:32:55.916Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/37ff890f9c18dfbcf57e17199901d4fd1e4c174e"
        },
        {
          "url": "https://git.kernel.org/stable/c/9005b221cb1f9c3c1a2ef656fb0e8fa80c0a187e"
        },
        {
          "url": "https://git.kernel.org/stable/c/7746d588d42a4ac0117b68ed8e9b22a9da53dfb7"
        },
        {
          "url": "https://git.kernel.org/stable/c/ca0e8b661957f777591efe874cd9d9a63619cd99"
        },
        {
          "url": "https://git.kernel.org/stable/c/7f48e3ddad8e97545b25788b8203b3a539df1621"
        },
        {
          "url": "https://git.kernel.org/stable/c/3656a79f94c471827a08f2cacce5f94ad5e52c24"
        }
      ],
      "title": "amt: re-read skb header pointers after every pull",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-68302",
    "datePublished": "2026-08-10T12:02:36.313Z",
    "dateReserved": "2026-07-30T09:28:09.381Z",
    "dateUpdated": "2026-08-19T16:32:55.916Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…