CVE-2026-72451 (GCVE-0-2026-72451)

Vulnerability from cvelistv5 – Published: 2026-08-15 05:56 – Updated: 2026-08-17 05:44
VLAI
Title
xfrm: Fix xfrm state cache insertion race
Summary
In the Linux kernel, the following vulnerability has been resolved: xfrm: Fix xfrm state cache insertion race The xfrm input state cache insertion code checks the validity of the state before acquiring the global xfrm_state_lock. Thus it's possible for someone else to kill the state after it passed the validity check, and then the insertion will add the dead state to the cache. Fix this by moving the validity check inside the lock. This entire function is called on the input path, where BH must be off (e.g., the caller of this function xfrm_input acquires its spinlocks without disabling BH). So there is no need to disable BH here or take the RCU read lock. Remove both and replace them with an assertion that trips if BH is accidentally enabled on some future calling path.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 5e4334dc39443645415450163ff5ff1ee7e79784 , < 6dab4dec9a49121d079981ac913569f232c06b06 (git)
Affected: 81a331a0e72ddc2f75092603d9577bd1a0ca23ad , < a1a3360a0c44b8b5c134db2a9d0667b61c9cf523 (git)
Affected: 81a331a0e72ddc2f75092603d9577bd1a0ca23ad , < 041859fd55c81ea55e76d051e39b7b79975b8c7d (git)
Affected: 81a331a0e72ddc2f75092603d9577bd1a0ca23ad , < ddd3d0132920319ac426e12456013eadbae67e15 (git)
Affected: 6.12.13 , < 6.12.97 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 6.13
Unaffected: 0 , < 6.13 (semver)
Unaffected: 6.12.97 , ≤ 6.12.* (semver)
Unaffected: 6.18.40 , ≤ 6.18.* (semver)
Unaffected: 7.1.5 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/xfrm/xfrm_state.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6dab4dec9a49121d079981ac913569f232c06b06",
              "status": "affected",
              "version": "5e4334dc39443645415450163ff5ff1ee7e79784",
              "versionType": "git"
            },
            {
              "lessThan": "a1a3360a0c44b8b5c134db2a9d0667b61c9cf523",
              "status": "affected",
              "version": "81a331a0e72ddc2f75092603d9577bd1a0ca23ad",
              "versionType": "git"
            },
            {
              "lessThan": "041859fd55c81ea55e76d051e39b7b79975b8c7d",
              "status": "affected",
              "version": "81a331a0e72ddc2f75092603d9577bd1a0ca23ad",
              "versionType": "git"
            },
            {
              "lessThan": "ddd3d0132920319ac426e12456013eadbae67e15",
              "status": "affected",
              "version": "81a331a0e72ddc2f75092603d9577bd1a0ca23ad",
              "versionType": "git"
            },
            {
              "lessThan": "6.12.97",
              "status": "affected",
              "version": "6.12.13",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/xfrm/xfrm_state.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.13"
            },
            {
              "lessThan": "6.13",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.97",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.40",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.5",
              "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.12.97",
                  "versionStartIncluding": "6.12.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.40",
                  "versionStartIncluding": "6.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.5",
                  "versionStartIncluding": "6.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.13",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: Fix xfrm state cache insertion race\n\nThe xfrm input state cache insertion code checks the validity of\nthe state before acquiring the global xfrm_state_lock.  Thus it\u0027s\npossible for someone else to kill the state after it passed the\nvalidity check, and then the insertion will add the dead state\nto the cache.\n\nFix this by moving the validity check inside the lock.\n\nThis entire function is called on the input path, where BH must\nbe off (e.g., the caller of this function xfrm_input acquires\nits spinlocks without disabling BH).\n\nSo there is no need to disable BH here or take the RCU read lock.\nRemove both and replace them with an assertion that trips if BH\nis accidentally enabled on some future calling path."
        }
      ],
      "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 - The flaw is hit on the inbound IPsec path (xfrm_input/xfrm_input_state_lookup) when processing remote ESP/AH or UDP-encap ESP packets on internet-facing VPN gateways, cloud IPsec endpoints, and other systems terminating IPsec from the network.\nAC:L - An attacker can drive both sides of the race by flooding inbound IPsec packets while concurrently deleting or expiring the same SA (netlink XFRM_MSG_DELSA with CAP_NET_ADMIN in a user namespace, or kernel hard-expiry timers during rekey).\nPR:N - Remote exploitation needs no privileges on the victim: crafted ESP/AH packets trigger the lookup while the kernel or IKE stack concurrently tears down the matching SA via timers, rekey, or administrative SA deletion.\nUI:N - No victim user interaction is required beyond normal IPsec operation on hosts that already receive and decrypt IPsec traffic; exploitation is driven entirely by attacker-sent packets and concurrent SA teardown.\nS:U - The bug corrupts kernel memory on the IPsec endpoint itself and enables standard kernel privilege escalation; it does not cross VM, container, or IOMMU security boundaries.\nC:H - A deleted xfrm_state can be inserted into the per-CPU input cache and later referenced after free, creating a use-after-free that enables heap spraying and arbitrary kernel memory disclosure via stale structure fields.\nI:H - Subsequent cache hits dereference the freed xfrm_state (spin_lock, type-\u003einput function pointers, crypto context pointers), providing controllable heap corruption primitives suitable for arbitrary kernel code execution.\nA:H - Dereferencing freed xfrm_state objects during input processing can cause kernel oops/panic, and successful exploitation can crash or hang the system; use-after-free on the softirq receive path inherently threatens availability."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:44:20.831Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/6dab4dec9a49121d079981ac913569f232c06b06"
        },
        {
          "url": "https://git.kernel.org/stable/c/a1a3360a0c44b8b5c134db2a9d0667b61c9cf523"
        },
        {
          "url": "https://git.kernel.org/stable/c/041859fd55c81ea55e76d051e39b7b79975b8c7d"
        },
        {
          "url": "https://git.kernel.org/stable/c/ddd3d0132920319ac426e12456013eadbae67e15"
        }
      ],
      "title": "xfrm: Fix xfrm state cache insertion race",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-72451",
    "datePublished": "2026-08-15T05:56:59.561Z",
    "dateReserved": "2026-08-09T03:40:39.931Z",
    "dateUpdated": "2026-08-17T05:44:20.831Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-72451",
      "date": "2026-09-01",
      "epss": "0.00663",
      "percentile": "0.49231"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-72451\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-15T06:22:19.087\",\"lastModified\":\"2026-08-17T06:19:12.670\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nxfrm: Fix xfrm state cache insertion race\\n\\nThe xfrm input state cache insertion code checks the validity of\\nthe state before acquiring the global xfrm_state_lock.  Thus it\u0027s\\npossible for someone else to kill the state after it passed the\\nvalidity check, and then the insertion will add the dead state\\nto the cache.\\n\\nFix this by moving the validity check inside the lock.\\n\\nThis entire function is called on the input path, where BH must\\nbe off (e.g., the caller of this function xfrm_input acquires\\nits spinlocks without disabling BH).\\n\\nSo there is no need to disable BH here or take the RCU read lock.\\nRemove both and replace them with an assertion that trips if BH\\nis accidentally enabled on some future calling path.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"net/xfrm/xfrm_state.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5e4334dc39443645415450163ff5ff1ee7e79784\",\"lessThan\":\"6dab4dec9a49121d079981ac913569f232c06b06\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"81a331a0e72ddc2f75092603d9577bd1a0ca23ad\",\"lessThan\":\"a1a3360a0c44b8b5c134db2a9d0667b61c9cf523\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"81a331a0e72ddc2f75092603d9577bd1a0ca23ad\",\"lessThan\":\"041859fd55c81ea55e76d051e39b7b79975b8c7d\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"81a331a0e72ddc2f75092603d9577bd1a0ca23ad\",\"lessThan\":\"ddd3d0132920319ac426e12456013eadbae67e15\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"6.12.13\",\"lessThan\":\"6.12.97\",\"versionType\":\"semver\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"net/xfrm/xfrm_state.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.13\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.13\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.97\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.40\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.5\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":9.8,\"baseSeverity\":\"CRITICAL\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/041859fd55c81ea55e76d051e39b7b79975b8c7d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/6dab4dec9a49121d079981ac913569f232c06b06\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/a1a3360a0c44b8b5c134db2a9d0667b61c9cf523\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ddd3d0132920319ac426e12456013eadbae67e15\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-19T17:49:35+00:00",
      "cve": "CVE-2026-72451",
      "id": "CVE-2026-72451",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_affected": "14",
      "product_status:known_not_affected": "260",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: xfrm: Fix xfrm state cache insertion race",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-72451.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…