CVE-2024-26630 (GCVE-0-2024-26630)

Vulnerability from cvelistv5 – Published: 2024-03-13 15:50 – Updated: 2026-08-05 11:26
VLAI
Title
mm: cachestat: fix folio read-after-free in cache walk
Summary
In the Linux kernel, the following vulnerability has been resolved: mm: cachestat: fix folio read-after-free in cache walk In cachestat, we access the folio from the page cache's xarray to compute its page offset, and check for its dirty and writeback flags. However, we do not hold a reference to the folio before performing these actions, which means the folio can concurrently be released and reused as another folio/page/slab. Get around this altogether by just using xarray's existing machinery for the folio page offsets and dirty/writeback states. This changes behavior for tmpfs files to now always report zeroes in their dirty and writeback counters. This is okay as tmpfs doesn't follow conventional writeback cache behavior: its pages get "cleaned" during swapout, after which they're no longer resident etc.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator (v2.0.3)
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: cf264e1329fb0307e044f7675849f9f38b44c11a , < ba60fdf75e89ea762bb617be578dc47f27655117 (git)
Affected: cf264e1329fb0307e044f7675849f9f38b44c11a , < fe7e008e0ce728252e4ec652cceebcc62211657c (git)
Affected: cf264e1329fb0307e044f7675849f9f38b44c11a , < 3a75cb05d53f4a6823a32deb078de1366954a804 (git)
Create a notification for this product.
Linux Linux Affected: 6.5
Unaffected: 0 , < 6.5 (semver)
Unaffected: 6.6.21 , ≤ 6.6.* (semver)
Unaffected: 6.7.9 , ≤ 6.7.* (semver)
Unaffected: 6.8 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-26630",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-03-13T19:45:46.313433Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-04T17:49:39.851Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T00:07:19.749Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "mm/filemap.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ba60fdf75e89ea762bb617be578dc47f27655117",
              "status": "affected",
              "version": "cf264e1329fb0307e044f7675849f9f38b44c11a",
              "versionType": "git"
            },
            {
              "lessThan": "fe7e008e0ce728252e4ec652cceebcc62211657c",
              "status": "affected",
              "version": "cf264e1329fb0307e044f7675849f9f38b44c11a",
              "versionType": "git"
            },
            {
              "lessThan": "3a75cb05d53f4a6823a32deb078de1366954a804",
              "status": "affected",
              "version": "cf264e1329fb0307e044f7675849f9f38b44c11a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "mm/filemap.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.5"
            },
            {
              "lessThan": "6.5",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.21",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.7.*",
              "status": "unaffected",
              "version": "6.7.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.8",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.21",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.7.9",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm: cachestat: fix folio read-after-free in cache walk\n\nIn cachestat, we access the folio from the page cache\u0027s xarray to compute\nits page offset, and check for its dirty and writeback flags.  However, we\ndo not hold a reference to the folio before performing these actions,\nwhich means the folio can concurrently be released and reused as another\nfolio/page/slab.\n\nGet around this altogether by just using xarray\u0027s existing machinery for\nthe folio page offsets and dirty/writeback states.\n\nThis changes behavior for tmpfs files to now always report zeroes in their\ndirty and writeback counters.  This is okay as tmpfs doesn\u0027t follow\nconventional writeback cache behavior: its pages get \"cleaned\" during\nswapout, after which they\u0027re no longer resident etc."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerability is reached only through the local `cachestat(2)` system call on an open file descriptor. There is no remote or adjacent-network path to `filemap_cachestat()`.\nAC:L - Although this is a race, the attacker drives both sides of it: one thread loops on `cachestat()` while another loops `POSIX_FADV_DONTNEED`/truncate on a file it owns (e.g. a memfd) plus a slab-spray thread, so the window is created and retried at will with no dependence on conditions outside the attacker\u0027s control.\nPR:L - The syscall performs no capability or permission check beyond `fdget()` \u2014 any unprivileged local user with any open file descriptor can call it, and `CONFIG_CACHESTAT_SYSCALL` is `default y` in stock kernels.\nUI:N - The attacker\u0027s own processes populate the page cache, evict it, and call the syscall; no victim action is needed at any point.\nS:U - The read-after-free occurs in kernel memory and the disclosed data is returned to the calling process within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Reading the freed-and-reused `struct page` leaks stale metadata whose reuse the attacker can groom, and the pointer-sized `folio-\u003eindex` value (SLUB\u0027s `slab.freelist`) is recoverable exactly from the returned `nr_cache` counter, giving repeatable full kernel-heap address disclosure and KASLR defeat.\nI:N - Every access to the freed folio on this path is a read; the results are accumulated into a stack `struct cachestat` copied to the caller\u0027s own buffer, so no kernel memory is modified and no write primitive is created.\nA:H - This is a use-after-free, which crashes even when not exploited: a stale `PG_head` bit sends the read to `page[1]`, which can fault on an unpopulated vmemmap section on memory-hole/hotplug systems, and KASAN-instrumented kernels panic on the UAF report."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:26:23.659Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117"
        },
        {
          "url": "https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c"
        },
        {
          "url": "https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804"
        }
      ],
      "title": "mm: cachestat: fix folio read-after-free in cache walk",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-26630",
    "datePublished": "2024-03-13T15:50:32.480Z",
    "dateReserved": "2024-02-19T14:20:24.135Z",
    "dateUpdated": "2026-08-05T11:26:23.659Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2024-26630",
      "date": "2026-08-10",
      "epss": "0.00302",
      "percentile": "0.22445"
    },
    "fkie_nvd": {
      "descriptions": "[{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmm: cachestat: fix folio read-after-free in cache walk\\n\\nIn cachestat, we access the folio from the page cache\u0027s xarray to compute\\nits page offset, and check for its dirty and writeback flags.  However, we\\ndo not hold a reference to the folio before performing these actions,\\nwhich means the folio can concurrently be released and reused as another\\nfolio/page/slab.\\n\\nGet around this altogether by just using xarray\u0027s existing machinery for\\nthe folio page offsets and dirty/writeback states.\\n\\nThis changes behavior for tmpfs files to now always report zeroes in their\\ndirty and writeback counters.  This is okay as tmpfs doesn\u0027t follow\\nconventional writeback cache behavior: its pages get \\\"cleaned\\\" during\\nswapout, after which they\u0027re no longer resident etc.\"}, {\"lang\": \"es\", \"value\": \"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm: cachestat: corrige read-after-free la publicaci\\u00f3n en cache walk En cachestat, accedemos a la publicaci\\u00f3n desde la matriz x de la cach\\u00e9 de la p\\u00e1gina para calcular su desplazamiento de p\\u00e1gina y comprobar si est\\u00e1 sucia y banderas de reescritura. Sin embargo, no mantenemos una referencia al folio antes de realizar estas acciones, lo que significa que el folio se puede liberar y reutilizar simult\\u00e1neamente como otro folio/p\\u00e1gina/losa. Evite esto por completo simplemente utilizando la maquinaria existente de xarray para los desplazamientos de p\\u00e1ginas de folio y los estados sucios/de reescritura. Esto cambia el comportamiento de los archivos tmpfs para que ahora siempre informen ceros en sus contadores sucios y de reescritura. Esto est\\u00e1 bien ya que tmpfs no sigue el comportamiento de cach\\u00e9 de reescritura convencional: sus p\\u00e1ginas se \\\"limpian\\\" durante el intercambio, despu\\u00e9s del cual ya no residen, etc.\"}]",
      "id": "CVE-2024-26630",
      "lastModified": "2024-11-21T09:02:43.470",
      "published": "2024-03-13T16:15:30.047",
      "references": "[{\"url\": \"https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}, {\"url\": \"https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}, {\"url\": \"https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}, {\"url\": \"https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\"}, {\"url\": \"https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\"}, {\"url\": \"https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\"}]",
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Awaiting Analysis"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2024-26630\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-03-13T16:15:30.047\",\"lastModified\":\"2026-08-04T11:16:50.653\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmm: cachestat: fix folio read-after-free in cache walk\\n\\nIn cachestat, we access the folio from the page cache\u0027s xarray to compute\\nits page offset, and check for its dirty and writeback flags.  However, we\\ndo not hold a reference to the folio before performing these actions,\\nwhich means the folio can concurrently be released and reused as another\\nfolio/page/slab.\\n\\nGet around this altogether by just using xarray\u0027s existing machinery for\\nthe folio page offsets and dirty/writeback states.\\n\\nThis changes behavior for tmpfs files to now always report zeroes in their\\ndirty and writeback counters.  This is okay as tmpfs doesn\u0027t follow\\nconventional writeback cache behavior: its pages get \\\"cleaned\\\" during\\nswapout, after which they\u0027re no longer resident etc.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm: cachestat: corrige read-after-free la publicaci\u00f3n en cache walk En cachestat, accedemos a la publicaci\u00f3n desde la matriz x de la cach\u00e9 de la p\u00e1gina para calcular su desplazamiento de p\u00e1gina y comprobar si est\u00e1 sucia y banderas de reescritura. Sin embargo, no mantenemos una referencia al folio antes de realizar estas acciones, lo que significa que el folio se puede liberar y reutilizar simult\u00e1neamente como otro folio/p\u00e1gina/losa. Evite esto por completo simplemente utilizando la maquinaria existente de xarray para los desplazamientos de p\u00e1ginas de folio y los estados sucios/de reescritura. Esto cambia el comportamiento de los archivos tmpfs para que ahora siempre informen ceros en sus contadores sucios y de reescritura. Esto est\u00e1 bien ya que tmpfs no sigue el comportamiento de cach\u00e9 de reescritura convencional: sus p\u00e1ginas se \\\"limpian\\\" durante el intercambio, despu\u00e9s del cual ya no residen, etc.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"mm/filemap.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"cf264e1329fb0307e044f7675849f9f38b44c11a\",\"lessThan\":\"ba60fdf75e89ea762bb617be578dc47f27655117\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"cf264e1329fb0307e044f7675849f9f38b44c11a\",\"lessThan\":\"fe7e008e0ce728252e4ec652cceebcc62211657c\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"cf264e1329fb0307e044f7675849f9f38b44c11a\",\"lessThan\":\"3a75cb05d53f4a6823a32deb078de1366954a804\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"mm/filemap.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.5\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.5\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.21\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.7.9\",\"lessThanOrEqual\":\"6.7.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.8\",\"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:N/A:H\",\"baseScore\":7.1,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.2},{\"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:N/A:H\",\"baseScore\":7.1,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.2}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2024-03-13T19:45:46.313433Z\",\"id\":\"CVE-2024-26630\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-416\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.5\",\"versionEndExcluding\":\"6.6.21\",\"matchCriteriaId\":\"BC0DAF43-2BA8-4BDC-84DA-C9482F59F45B\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.7\",\"versionEndExcluding\":\"6.7.9\",\"matchCriteriaId\":\"1C538467-EDA0-4A9A-82EB-2925DE9FF827\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"B9F4EA73-0894-400F-A490-3A397AB7A517\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"056BD938-0A27-4569-B391-30578B309EE3\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.8:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"F02056A5-B362-4370-9FF8-6F0BD384D520\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.8:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"62075ACE-B2A0-4B16-829D-B3DA5AE5CC41\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.8:rc5:*:*:*:*:*:*\",\"matchCriteriaId\":\"A780F817-2A77-4130-A9B7-5C25606314E3\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.8:rc6:*:*:*:*:*:*\",\"matchCriteriaId\":\"AEB9199B-AB8F-4877-8964-E2BA95B5F15C\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-04T19:11:54+00:00",
      "cve": "CVE-2024-26630",
      "id": "CVE-2024-26630",
      "initial_release_date": "2024-03-13T00:00:00+00:00",
      "product_status:fixed": "279",
      "product_status:known_affected": "22",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: mm: cachestat: fix folio read-after-free in cache walk",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-26630.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-07-25T16:57:02Z",
      "cve": "CVE-2024-26630",
      "id": "CVE-2024-26630",
      "initial_release_date": "2024-03-15T03:28:27Z",
      "product_status:known_not_affected": "292",
      "product_status:recommended": "29",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-26630",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-26630.json",
      "version": "21"
    },
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T00:07:19.749Z\"}}, {\"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-26630\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-03-13T19:45:46.313433Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-05-23T19:01:17.623Z\"}, \"title\": \"CISA ADP Vulnrichment\"}], \"cna\": {\"title\": \"mm: cachestat: fix folio read-after-free in cache walk\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.1, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerability is reached only through the local `cachestat(2)` system call on an open file descriptor. There is no remote or adjacent-network path to `filemap_cachestat()`.\\nAC:L - Although this is a race, the attacker drives both sides of it: one thread loops on `cachestat()` while another loops `POSIX_FADV_DONTNEED`/truncate on a file it owns (e.g. a memfd) plus a slab-spray thread, so the window is created and retried at will with no dependence on conditions outside the attacker\u0027s control.\\nPR:L - The syscall performs no capability or permission check beyond `fdget()` \\u2014 any unprivileged local user with any open file descriptor can call it, and `CONFIG_CACHESTAT_SYSCALL` is `default y` in stock kernels.\\nUI:N - The attacker\u0027s own processes populate the page cache, evict it, and call the syscall; no victim action is needed at any point.\\nS:U - The read-after-free occurs in kernel memory and the disclosed data is returned to the calling process within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\\nC:H - Reading the freed-and-reused `struct page` leaks stale metadata whose reuse the attacker can groom, and the pointer-sized `folio-\u003eindex` value (SLUB\u0027s `slab.freelist`) is recoverable exactly from the returned `nr_cache` counter, giving repeatable full kernel-heap address disclosure and KASLR defeat.\\nI:N - Every access to the freed folio on this path is a read; the results are accumulated into a stack `struct cachestat` copied to the caller\u0027s own buffer, so no kernel memory is modified and no write primitive is created.\\nA:H - This is a use-after-free, which crashes even when not exploited: a stale `PG_head` bit sends the read to `page[1]`, which can fault on an unpopulated vmemmap section on memory-hole/hotplug systems, and KASAN-instrumented kernels panic on the UAF report.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"cf264e1329fb0307e044f7675849f9f38b44c11a\", \"lessThan\": \"ba60fdf75e89ea762bb617be578dc47f27655117\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"cf264e1329fb0307e044f7675849f9f38b44c11a\", \"lessThan\": \"fe7e008e0ce728252e4ec652cceebcc62211657c\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"cf264e1329fb0307e044f7675849f9f38b44c11a\", \"lessThan\": \"3a75cb05d53f4a6823a32deb078de1366954a804\", \"versionType\": \"git\"}], \"programFiles\": [\"mm/filemap.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.5\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.5\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.21\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.7.9\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.7.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"mm/filemap.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/ba60fdf75e89ea762bb617be578dc47f27655117\"}, {\"url\": \"https://git.kernel.org/stable/c/fe7e008e0ce728252e4ec652cceebcc62211657c\"}, {\"url\": \"https://git.kernel.org/stable/c/3a75cb05d53f4a6823a32deb078de1366954a804\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmm: cachestat: fix folio read-after-free in cache walk\\n\\nIn cachestat, we access the folio from the page cache\u0027s xarray to compute\\nits page offset, and check for its dirty and writeback flags.  However, we\\ndo not hold a reference to the folio before performing these actions,\\nwhich means the folio can concurrently be released and reused as another\\nfolio/page/slab.\\n\\nGet around this altogether by just using xarray\u0027s existing machinery for\\nthe folio page offsets and dirty/writeback states.\\n\\nThis changes behavior for tmpfs files to now always report zeroes in their\\ndirty and writeback counters.  This is okay as tmpfs doesn\u0027t follow\\nconventional writeback cache behavior: its pages get \\\"cleaned\\\" during\\nswapout, after which they\u0027re no longer resident etc.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.21\", \"versionStartIncluding\": \"6.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.7.9\", \"versionStartIncluding\": \"6.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8\", \"versionStartIncluding\": \"6.5\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:26:23.659Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-26630\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:26:23.659Z\", \"dateReserved\": \"2024-02-19T14:20:24.135Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-03-13T15:50:32.480Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.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…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…