CVE-2026-98231 (GCVE-0-2026-98231)

Vulnerability from cvelistv5 – Published: 2026-10-06 08:45 – Updated: 2026-10-06 08:45
VLAI
Title
xfrm: serialize state GC with device state flush
Summary
In the Linux kernel, the following vulnerability has been resolved: xfrm: serialize state GC with device state flush The deferred-device pass in xfrm_dev_state_flush() finds states under xfrm_state_dev_gc_lock, but drops the lock before calling xfrm_dev_state_free() because the driver callback may sleep. The device GC list does not hold an xfrm_state reference, so the state GC worker can destroy the same state concurrently. The race can proceed as follows: CPU 0 CPU 1 find x on the device GC list drop xfrm_state_dev_gc_lock read x->xso.dev xfrm_state_gc_destroy(x) xfrm_dev_state_free(x) xfrm_state_free(x) continue xfrm_dev_state_free(x) Both paths can invoke the driver callback and drop the device reference. CPU 0 can also access the xfrm_state after CPU 1 has freed it. KASAN reported: BUG: KASAN: slab-use-after-free in xfrm_dev_state_free+0x24c/0x2a0 Read of size 8 at addr ffff88810bbaa960 by task poc/102 Call Trace: xfrm_dev_state_free+0x24c/0x2a0 xfrm_dev_state_flush+0x353/0x400 xfrm_dev_event+0x26d/0x3a0 notifier_call_chain+0xc0/0x280 __dev_notify_flags+0x169/0x250 netif_change_flags+0xe7/0x160 dev_change_flags+0x96/0x220 devinet_ioctl+0x7f4/0x1880 Allocated by task 87: xfrm_state_alloc+0x1e/0x5c0 xfrm_add_sa+0xe7f/0x5820 xfrm_user_rcv_msg+0x4f3/0x940 Freed by task 57: kmem_cache_free+0xcb/0x3d0 xfrm_state_gc_task+0x4a8/0x650 process_one_work+0x63a/0x1070 Serialize xfrm_state destruction against the deferred-device pass with a mutex. Keep xfrm_state_dev_gc_lock limited to list operations and retain the existing callback and device-reference release ordering.
Severity
No CVSS data available.
Assigner
Linux CNA under the mitre root
CNA scorecard D 54/100 over 6633 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: d5f53edd43daf3e6e1633a49c561387f8f99e13f , < 937108dc0258d6ac69926b00bc53598c98986ee1 (git)
Affected: 07b87f9eea0c30675084d50c82532d20168da009 , < 39e41af3653ee45c985190dd97426f318918d201 (git)
Affected: 07b87f9eea0c30675084d50c82532d20168da009 , < 75fc4561772e2f9811abf39ed10443e6f4a4bc6c (git)
Affected: 07b87f9eea0c30675084d50c82532d20168da009 , < 84e378395494963b1e581cf223a7cbeec8c0e2d6 (git)
Affected: 07b87f9eea0c30675084d50c82532d20168da009 , < 89fefad9f971bc637fb22373078144f2563c4be9 (git)
Affected: 8ecee44464a4926c9bef989a1490b7394785f584 (git)
Affected: 6.6.44 , < 6.6.158 (semver)
Affected: 6.10.3 , < 6.11 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 6.11
Unaffected: 0 , < 6.11 (semver)
Unaffected: 6.6.158 , ≤ 6.6.* (semver)
Unaffected: 6.12.112 , ≤ 6.12.* (semver)
Unaffected: 6.18.54 , ≤ 6.18.* (semver)
Unaffected: 7.2.8 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc4 , ≤ * (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": "937108dc0258d6ac69926b00bc53598c98986ee1",
              "status": "affected",
              "version": "d5f53edd43daf3e6e1633a49c561387f8f99e13f",
              "versionType": "git"
            },
            {
              "lessThan": "39e41af3653ee45c985190dd97426f318918d201",
              "status": "affected",
              "version": "07b87f9eea0c30675084d50c82532d20168da009",
              "versionType": "git"
            },
            {
              "lessThan": "75fc4561772e2f9811abf39ed10443e6f4a4bc6c",
              "status": "affected",
              "version": "07b87f9eea0c30675084d50c82532d20168da009",
              "versionType": "git"
            },
            {
              "lessThan": "84e378395494963b1e581cf223a7cbeec8c0e2d6",
              "status": "affected",
              "version": "07b87f9eea0c30675084d50c82532d20168da009",
              "versionType": "git"
            },
            {
              "lessThan": "89fefad9f971bc637fb22373078144f2563c4be9",
              "status": "affected",
              "version": "07b87f9eea0c30675084d50c82532d20168da009",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ecee44464a4926c9bef989a1490b7394785f584",
              "versionType": "git"
            },
            {
              "lessThan": "6.6.158",
              "status": "affected",
              "version": "6.6.44",
              "versionType": "semver"
            },
            {
              "lessThan": "6.11",
              "status": "affected",
              "version": "6.10.3",
              "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.11"
            },
            {
              "lessThan": "6.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.158",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.112",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.54",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc4",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.158",
                  "versionStartIncluding": "6.6.44",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.112",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.54",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.8",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc4",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.10.3",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: serialize state GC with device state flush\n\nThe deferred-device pass in xfrm_dev_state_flush() finds states under\nxfrm_state_dev_gc_lock, but drops the lock before calling\nxfrm_dev_state_free() because the driver callback may sleep.  The device\nGC list does not hold an xfrm_state reference, so the state GC worker can\ndestroy the same state concurrently.\n\nThe race can proceed as follows:\n\n  CPU 0                               CPU 1\n  find x on the device GC list\n  drop xfrm_state_dev_gc_lock\n  read x-\u003exso.dev\n                                      xfrm_state_gc_destroy(x)\n                                      xfrm_dev_state_free(x)\n                                      xfrm_state_free(x)\n  continue xfrm_dev_state_free(x)\n\nBoth paths can invoke the driver callback and drop the device reference.\nCPU 0 can also access the xfrm_state after CPU 1 has freed it.\n\nKASAN reported:\n\n  BUG: KASAN: slab-use-after-free in xfrm_dev_state_free+0x24c/0x2a0\n  Read of size 8 at addr ffff88810bbaa960 by task poc/102\n\n  Call Trace:\n   xfrm_dev_state_free+0x24c/0x2a0\n   xfrm_dev_state_flush+0x353/0x400\n   xfrm_dev_event+0x26d/0x3a0\n   notifier_call_chain+0xc0/0x280\n   __dev_notify_flags+0x169/0x250\n   netif_change_flags+0xe7/0x160\n   dev_change_flags+0x96/0x220\n   devinet_ioctl+0x7f4/0x1880\n\n  Allocated by task 87:\n   xfrm_state_alloc+0x1e/0x5c0\n   xfrm_add_sa+0xe7f/0x5820\n   xfrm_user_rcv_msg+0x4f3/0x940\n\n  Freed by task 57:\n   kmem_cache_free+0xcb/0x3d0\n   xfrm_state_gc_task+0x4a8/0x650\n   process_one_work+0x63a/0x1070\n\nSerialize xfrm_state destruction against the deferred-device pass with a\nmutex.  Keep xfrm_state_dev_gc_lock limited to list operations and retain\nthe existing callback and device-reference release ordering."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-06T08:45:05.183Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/937108dc0258d6ac69926b00bc53598c98986ee1"
        },
        {
          "url": "https://git.kernel.org/stable/c/39e41af3653ee45c985190dd97426f318918d201"
        },
        {
          "url": "https://git.kernel.org/stable/c/75fc4561772e2f9811abf39ed10443e6f4a4bc6c"
        },
        {
          "url": "https://git.kernel.org/stable/c/84e378395494963b1e581cf223a7cbeec8c0e2d6"
        },
        {
          "url": "https://git.kernel.org/stable/c/89fefad9f971bc637fb22373078144f2563c4be9"
        }
      ],
      "title": "xfrm: serialize state GC with device state flush",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98231",
    "datePublished": "2026-10-06T08:45:05.183Z",
    "dateReserved": "2026-09-25T10:25:14.328Z",
    "dateUpdated": "2026-10-06T08:45:05.183Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-98231",
      "date": "2026-10-09",
      "epss": "0.002",
      "percentile": "0.09011"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "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": "937108dc0258d6ac69926b00bc53598c98986ee1",
                    "status": "affected",
                    "version": "d5f53edd43daf3e6e1633a49c561387f8f99e13f",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "39e41af3653ee45c985190dd97426f318918d201",
                    "status": "affected",
                    "version": "07b87f9eea0c30675084d50c82532d20168da009",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "75fc4561772e2f9811abf39ed10443e6f4a4bc6c",
                    "status": "affected",
                    "version": "07b87f9eea0c30675084d50c82532d20168da009",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "84e378395494963b1e581cf223a7cbeec8c0e2d6",
                    "status": "affected",
                    "version": "07b87f9eea0c30675084d50c82532d20168da009",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "89fefad9f971bc637fb22373078144f2563c4be9",
                    "status": "affected",
                    "version": "07b87f9eea0c30675084d50c82532d20168da009",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "8ecee44464a4926c9bef989a1490b7394785f584",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6.6.158",
                    "status": "affected",
                    "version": "6.6.44",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "6.11",
                    "status": "affected",
                    "version": "6.10.3",
                    "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.11"
                  },
                  {
                    "lessThan": "6.11",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.158",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.112",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.54",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.8",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc4",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: serialize state GC with device state flush\n\nThe deferred-device pass in xfrm_dev_state_flush() finds states under\nxfrm_state_dev_gc_lock, but drops the lock before calling\nxfrm_dev_state_free() because the driver callback may sleep.  The device\nGC list does not hold an xfrm_state reference, so the state GC worker can\ndestroy the same state concurrently.\n\nThe race can proceed as follows:\n\n  CPU 0                               CPU 1\n  find x on the device GC list\n  drop xfrm_state_dev_gc_lock\n  read x-\u003exso.dev\n                                      xfrm_state_gc_destroy(x)\n                                      xfrm_dev_state_free(x)\n                                      xfrm_state_free(x)\n  continue xfrm_dev_state_free(x)\n\nBoth paths can invoke the driver callback and drop the device reference.\nCPU 0 can also access the xfrm_state after CPU 1 has freed it.\n\nKASAN reported:\n\n  BUG: KASAN: slab-use-after-free in xfrm_dev_state_free+0x24c/0x2a0\n  Read of size 8 at addr ffff88810bbaa960 by task poc/102\n\n  Call Trace:\n   xfrm_dev_state_free+0x24c/0x2a0\n   xfrm_dev_state_flush+0x353/0x400\n   xfrm_dev_event+0x26d/0x3a0\n   notifier_call_chain+0xc0/0x280\n   __dev_notify_flags+0x169/0x250\n   netif_change_flags+0xe7/0x160\n   dev_change_flags+0x96/0x220\n   devinet_ioctl+0x7f4/0x1880\n\n  Allocated by task 87:\n   xfrm_state_alloc+0x1e/0x5c0\n   xfrm_add_sa+0xe7f/0x5820\n   xfrm_user_rcv_msg+0x4f3/0x940\n\n  Freed by task 57:\n   kmem_cache_free+0xcb/0x3d0\n   xfrm_state_gc_task+0x4a8/0x650\n   process_one_work+0x63a/0x1070\n\nSerialize xfrm_state destruction against the deferred-device pass with a\nmutex.  Keep xfrm_state_dev_gc_lock limited to list operations and retain\nthe existing callback and device-reference release ordering."
          }
        ],
        "id": "CVE-2026-98231",
        "lastModified": "2026-10-06T09:18:10.540",
        "metrics": {},
        "published": "2026-10-06T09:18:10.540",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/39e41af3653ee45c985190dd97426f318918d201"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/75fc4561772e2f9811abf39ed10443e6f4a4bc6c"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/84e378395494963b1e581cf223a7cbeec8c0e2d6"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/89fefad9f971bc637fb22373078144f2563c4be9"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/937108dc0258d6ac69926b00bc53598c98986ee1"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-10-09T16:43:08+00:00",
      "cve": "CVE-2026-98231",
      "id": "CVE-2026-98231",
      "initial_release_date": "2026-10-06T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "93",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: xfrm: serialize state GC with device state flush",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-98231.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-10-08T16:49:45Z",
      "cve": "CVE-2026-98231",
      "id": "CVE-2026-98231",
      "initial_release_date": "2026-10-08T16:49:45Z",
      "product_status:known_not_affected": "347",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-98231",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-98231.json",
      "version": "2"
    }
  }
}



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…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…