CVE-2025-37908 (GCVE-0-2025-37908)

Vulnerability from cvelistv5 – Published: 2025-05-20 15:21 – Updated: 2026-08-05 11:58
VLAI
Title
mm, slab: clean up slab->obj_exts always
Summary
In the Linux kernel, the following vulnerability has been resolved: mm, slab: clean up slab->obj_exts always When memory allocation profiling is disabled at runtime or due to an error, shutdown_mem_profiling() is called: slab->obj_exts which previously allocated remains. It won't be cleared by unaccount_slab() because of mem_alloc_profiling_enabled() not true. It's incorrect, slab->obj_exts should always be cleaned up in unaccount_slab() to avoid following error: [...]BUG: Bad page state in process... .. [...]page dumped because: page still charged to cgroup [andriy.shevchenko@linux.intel.com: fold need_slab_obj_ext() into its only user]
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 21c690a349baab895dc68ab70d291e1598d7109d , < dab2a13059a475b6392550f882276e170fe2fcff (git)
Affected: 21c690a349baab895dc68ab70d291e1598d7109d , < 01db0e1a48345aa1937f3bdfc7c7108d03ebcf7e (git)
Affected: 21c690a349baab895dc68ab70d291e1598d7109d , < be8250786ca94952a19ce87f98ad9906448bc9ef (git)
Create a notification for this product.
Linux Linux Affected: 6.10
Unaffected: 0 , < 6.10 (semver)
Unaffected: 6.12.28 , ≤ 6.12.* (semver)
Unaffected: 6.14.6 , ≤ 6.14.* (semver)
Unaffected: 6.15 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "mm/slub.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "dab2a13059a475b6392550f882276e170fe2fcff",
              "status": "affected",
              "version": "21c690a349baab895dc68ab70d291e1598d7109d",
              "versionType": "git"
            },
            {
              "lessThan": "01db0e1a48345aa1937f3bdfc7c7108d03ebcf7e",
              "status": "affected",
              "version": "21c690a349baab895dc68ab70d291e1598d7109d",
              "versionType": "git"
            },
            {
              "lessThan": "be8250786ca94952a19ce87f98ad9906448bc9ef",
              "status": "affected",
              "version": "21c690a349baab895dc68ab70d291e1598d7109d",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "mm/slub.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.10"
            },
            {
              "lessThan": "6.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.28",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.14.*",
              "status": "unaffected",
              "version": "6.14.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.28",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14.6",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm, slab: clean up slab-\u003eobj_exts always\n\nWhen memory allocation profiling is disabled at runtime or due to an\nerror, shutdown_mem_profiling() is called: slab-\u003eobj_exts which\npreviously allocated remains.\nIt won\u0027t be cleared by unaccount_slab() because of\nmem_alloc_profiling_enabled() not true. It\u0027s incorrect, slab-\u003eobj_exts\nshould always be cleaned up in unaccount_slab() to avoid following error:\n\n[...]BUG: Bad page state in process...\n..\n[...]page dumped because: page still charged to cgroup\n\n[andriy.shevchenko@linux.intel.com: fold need_slab_obj_ext() into its only user]"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable code is `unaccount_slab()` in core mm/slub, reached whenever a slab page is destroyed; an attacker must be on the system to drive slab allocation/destruction churn (file/socket/dentry creation plus memory pressure). There is no network protocol handler involved, so this is local.\nAC:L - Once memory allocation profiling has been shut down (sysctl toggle, or automatically via `shutdown_mem_profiling()` on a module-load tag-budget failure), every subsequent slab destruction deterministically leaks `obj_exts` and leaves a stale `page-\u003ememcg_data` \u2014 no race, no timing, and the attacker reliably forces slab teardown at will.\nPR:L - No privileges are needed for the trigger itself \u2014 any unprivileged local user can allocate and free enough objects to force `__free_slab()` \u2192 `unaccount_slab()` repeatedly. The precondition of profiling being disabled is pre-existing system state, not something the attacker must have rights to set.\nUI:N - The leak and the stale `memcg_data` are produced entirely by the attacker\u0027s own allocation/free activity in kernel context. No victim action of any kind is required.\nS:U - The leaked vector, the corrupted `page-\u003ememcg_data`, and any resulting corruption all stay within the kernel\u0027s own security authority. No hypervisor, IOMMU, or sandbox boundary is crossed.\nC:H - The `bad_page()` report emits the raw `slabobj_ext` heap pointer (`memcg:%lx`) plus a full hex dump of `struct page` into the kernel log, and when page checks are off the stale pointer is type-confused as a `struct mem_cgroup *` by `__folio_memcg()`, giving wild-pointer reads inside memcg accounting \u2014 memory corruption leverageable for disclosure.\nI:H - Slab folios re-enter the buddy allocator carrying a bogus `struct mem_cgroup *`, and `split_page_memcg()` propagates it to tail pages and calls `css_get_many()` through it, writing via a percpu refcount pointer read out of the attacker-groomable `slabobj_ext` array \u2014 a type-confusion write primitive.\nA:H - Every destroyed slab leaks its `obj_exts` vector, and with page sanity checks enabled `free_pages_prepare()` returns false so the entire slab folio is permanently leaked as well while the kernel is tainted \u2014 sustained slab churn drives unbounded memory exhaustion and OOM, on top of the crashes from the stale-pointer/`VM_BUG_ON_FOLIO` paths."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:58:14.367Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/dab2a13059a475b6392550f882276e170fe2fcff"
        },
        {
          "url": "https://git.kernel.org/stable/c/01db0e1a48345aa1937f3bdfc7c7108d03ebcf7e"
        },
        {
          "url": "https://git.kernel.org/stable/c/be8250786ca94952a19ce87f98ad9906448bc9ef"
        }
      ],
      "title": "mm, slab: clean up slab-\u003eobj_exts always",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-37908",
    "datePublished": "2025-05-20T15:21:41.121Z",
    "dateReserved": "2025-04-16T04:51:23.966Z",
    "dateUpdated": "2026-08-05T11:58:14.367Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-37908",
      "date": "2026-08-09",
      "epss": "0.00172",
      "percentile": "0.06858"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-37908\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-05-20T16:15:27.280\",\"lastModified\":\"2026-07-30T06:22:31.797\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmm, slab: clean up slab-\u003eobj_exts always\\n\\nWhen memory allocation profiling is disabled at runtime or due to an\\nerror, shutdown_mem_profiling() is called: slab-\u003eobj_exts which\\npreviously allocated remains.\\nIt won\u0027t be cleared by unaccount_slab() because of\\nmem_alloc_profiling_enabled() not true. It\u0027s incorrect, slab-\u003eobj_exts\\nshould always be cleaned up in unaccount_slab() to avoid following error:\\n\\n[...]BUG: Bad page state in process...\\n..\\n[...]page dumped because: page still charged to cgroup\\n\\n[andriy.shevchenko@linux.intel.com: fold need_slab_obj_ext() into its only user]\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm, slab: limpiar slab-\u0026gt;obj_exts siempre. Cuando el perfilado de asignaci\u00f3n de memoria se deshabilita en tiempo de ejecuci\u00f3n o debido a un error, se llama a shutdown_mem_profiling(): slab-\u0026gt;obj_exts, previamente asignado, permanece. No se borrar\u00e1 con unaccount_slab() debido a que mem_alloc_profiling_enabled() no es verdadero. Es incorrecto; slab-\u0026gt;obj_exts siempre debe limpiarse en unaccount_slab() para evitar el siguiente error: [...] ERROR: Estado de p\u00e1gina incorrecto en proceso... [...] p\u00e1gina volcada porque: la p\u00e1gina a\u00fan se carga al cgroup [andriy.shevchenko@linux.intel.com: integrar need_slab_obj_ext() en su \u00fanico usuario]\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"mm/slub.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"21c690a349baab895dc68ab70d291e1598d7109d\",\"lessThan\":\"dab2a13059a475b6392550f882276e170fe2fcff\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"21c690a349baab895dc68ab70d291e1598d7109d\",\"lessThan\":\"01db0e1a48345aa1937f3bdfc7c7108d03ebcf7e\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"21c690a349baab895dc68ab70d291e1598d7109d\",\"lessThan\":\"be8250786ca94952a19ce87f98ad9906448bc9ef\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"mm/slub.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.10\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.10\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.28\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.14.6\",\"lessThanOrEqual\":\"6.14.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.15\",\"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:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-459\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.10\",\"versionEndExcluding\":\"6.12.28\",\"matchCriteriaId\":\"302ECAAE-A0A0-4B20-8159-4BB8716F037C\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.14.6\",\"matchCriteriaId\":\"19E5095E-5950-43EA-8E78-FC860855293F\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"8D465631-2980-487A-8E65-40AE2B9F8ED1\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"4C9D071F-B28E-46EC-AC61-22B913390211\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.15:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"13FC0DDE-E513-465E-9E81-515702D49B74\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.15:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"8C7B5B0E-4EEB-48F5-B4CF-0935A7633845\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/01db0e1a48345aa1937f3bdfc7c7108d03ebcf7e\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/be8250786ca94952a19ce87f98ad9906448bc9ef\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/dab2a13059a475b6392550f882276e170fe2fcff\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-30T09:28:40+00:00",
      "cve": "CVE-2025-37908",
      "id": "CVE-2025-37908",
      "initial_release_date": "2025-05-20T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Linux kernel: improper slab object extension cleanup leads to system instability",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-37908.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-07-31T01:14:54Z",
      "cve": "CVE-2025-37908",
      "id": "CVE-2025-37908",
      "initial_release_date": "2025-05-21T00:47:16Z",
      "product_status:known_not_affected": "375",
      "product_status:recommended": "53",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-37908",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-37908.json",
      "version": "14"
    }
  }
}



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…