GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-72470 (GCVE-0-2026-72470)

Vulnerability from cvelistv5 – Published: 2026-08-15 05:57 – Updated: 2026-08-17 05:44
VLAI
Title
fs/ntfs3: resize log->one_page_buf when adopting on-disk page size
Summary
In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: resize log->one_page_buf when adopting on-disk page size log_replay() allocates log->one_page_buf using the page size that was chosen from the host PAGE_SIZE: log->one_page_buf = kmalloc(log->page_size, GFP_NOFS); Later, when a restart area is found, the log page size recorded on disk is adopted: t32 = le32_to_cpu(log->rst_info.r_page->sys_page_size); if (log->page_size != t32) { log->l_size = log->orig_file_size; log->page_size = norm_file_page(t32, &log->l_size, t32 == DefaultLogPageSize); } If the on-disk page size is larger than the size used for the initial allocation, log->page_size grows but one_page_buf is left at its original, smaller size. A subsequent unaligned read_log_page() then reads log->page_size bytes into the undersized scratch buffer: page_buf = page_off ? log->one_page_buf : *buffer; err = ntfs_read_run_nb_ra(ni->mi.sbi, &ni->file.run, page_vbo, page_buf, log->page_size, NULL, &log->read_ahead); overflowing the allocation. This is reachable when mounting a dirty NTFS volume whose log was formatted with a page size larger than the buffer initially allocated on the mounting host (for example a 64K-log volume mounted on a host that allocated a 4K scratch buffer). Grow one_page_buf when the adopted on-disk page size exceeds the size used for the initial allocation. On krealloc() failure the original buffer is left intact and freed by the existing error path.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 2097a2537d9d1c29c0e20ed0dbf717a0ccd8f374 (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < f1422df595d69b997d23a8f11e12c528ccef7fad (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 4f129fc6f756f8541e5bff45b1804cc11b1ec712 (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < c99444f6dfca893f6d310aae4a53c620f98f7b4f (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 5a35454179fe1041d9cd286f5d320ce0d448c12a (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.15
Unaffected: 0 , < 5.15 (semver)
Unaffected: 6.6.145 , ≤ 6.6.* (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": [
            "fs/ntfs3/fslog.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "2097a2537d9d1c29c0e20ed0dbf717a0ccd8f374",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "f1422df595d69b997d23a8f11e12c528ccef7fad",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "4f129fc6f756f8541e5bff45b1804cc11b1ec712",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "c99444f6dfca893f6d310aae4a53c620f98f7b4f",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "5a35454179fe1041d9cd286f5d320ce0d448c12a",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/ntfs3/fslog.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.15"
            },
            {
              "lessThan": "5.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.145",
              "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.6.145",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.97",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.40",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.5",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/ntfs3: resize log-\u003eone_page_buf when adopting on-disk page size\n\nlog_replay() allocates log-\u003eone_page_buf using the page size that was\nchosen from the host PAGE_SIZE:\n\n\tlog-\u003eone_page_buf = kmalloc(log-\u003epage_size, GFP_NOFS);\n\nLater, when a restart area is found, the log page size recorded on disk\nis adopted:\n\n\tt32 = le32_to_cpu(log-\u003erst_info.r_page-\u003esys_page_size);\n\tif (log-\u003epage_size != t32) {\n\t\tlog-\u003el_size = log-\u003eorig_file_size;\n\t\tlog-\u003epage_size = norm_file_page(t32, \u0026log-\u003el_size,\n\t\t\t\t\t\tt32 == DefaultLogPageSize);\n\t}\n\nIf the on-disk page size is larger than the size used for the initial\nallocation, log-\u003epage_size grows but one_page_buf is left at its\noriginal, smaller size. A subsequent unaligned read_log_page() then\nreads log-\u003epage_size bytes into the undersized scratch buffer:\n\n\tpage_buf = page_off ? log-\u003eone_page_buf : *buffer;\n\terr = ntfs_read_run_nb_ra(ni-\u003emi.sbi, \u0026ni-\u003efile.run, page_vbo, page_buf,\n\t\t\t\t  log-\u003epage_size, NULL, \u0026log-\u003eread_ahead);\n\noverflowing the allocation. This is reachable when mounting a dirty\nNTFS volume whose log was formatted with a page size larger than the\nbuffer initially allocated on the mounting host (for example a 64K-log\nvolume mounted on a host that allocated a 4K scratch buffer).\n\nGrow one_page_buf when the adopted on-disk page size exceeds the size\nused for the initial allocation. On krealloc() failure the original\nbuffer is left intact and freed by the existing error path."
        }
      ],
      "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 flaw is triggered only during local block-device mount via the mount/fsmount syscall path (ntfs_fill_super \u2192 ntfs_loadlog_and_replay \u2192 log_replay); ntfs3 is not reachable from network-facing kernel services.\nAC:L - An attacker fully controls the crafted NTFS $LogFile on disk (sys_page_size larger than host PAGE_SIZE, valid restart area, and LSNs yielding unaligned read_log_page), so the overflow is reliably reproducible without races or victim-specific memory layout.\nPR:L - Exploitation requires mounting the malicious volume, which needs CAP_SYS_ADMIN; per kernel CNA guidance this is Low because unprivileged users can obtain that capability inside a user namespace and mount a loop-backed NTFS image.\nUI:N - No victim interaction is required when the attacker mounts their own crafted NTFS image (loop device or block device they control); log replay runs automatically during mount before any separate user file access.\nS:U - Impact is confined to kernel memory corruption and privilege escalation on the mounting host; it does not cross a VM, container, or IOMMU security boundary into another authority.\nC:H - The heap overflow writes attacker-controlled $LogFile data up to the adopted log page size (e.g., 64 KiB) beyond a smaller kmalloc buffer, corrupting adjacent kernel objects and enabling arbitrary memory disclosure primitives.\nI:H - ntfs_read_run_nb_ra writes log-\u003epage_size bytes into an undersized one_page_buf, causing an out-of-bounds heap write of attacker-controlled data that can be leveraged for arbitrary kernel modification or code execution.\nA:H - Corrupting kmalloc heap metadata or adjacent objects during log replay typically causes kernel oops/panic or hang, denying service on mount of a malicious NTFS volume even when full exploitation is not attempted."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:44:35.099Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/2097a2537d9d1c29c0e20ed0dbf717a0ccd8f374"
        },
        {
          "url": "https://git.kernel.org/stable/c/f1422df595d69b997d23a8f11e12c528ccef7fad"
        },
        {
          "url": "https://git.kernel.org/stable/c/4f129fc6f756f8541e5bff45b1804cc11b1ec712"
        },
        {
          "url": "https://git.kernel.org/stable/c/c99444f6dfca893f6d310aae4a53c620f98f7b4f"
        },
        {
          "url": "https://git.kernel.org/stable/c/5a35454179fe1041d9cd286f5d320ce0d448c12a"
        }
      ],
      "title": "fs/ntfs3: resize log-\u003eone_page_buf when adopting on-disk page size",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-72470",
    "datePublished": "2026-08-15T05:57:12.472Z",
    "dateReserved": "2026-08-09T03:40:39.934Z",
    "dateUpdated": "2026-08-17T05:44:35.099Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-72470",
      "date": "2026-09-04",
      "epss": "0.00138",
      "percentile": "0.03484"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-72470\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-15T06:22:21.103\",\"lastModified\":\"2026-08-17T06:19:14.900\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nfs/ntfs3: resize log-\u003eone_page_buf when adopting on-disk page size\\n\\nlog_replay() allocates log-\u003eone_page_buf using the page size that was\\nchosen from the host PAGE_SIZE:\\n\\n\\tlog-\u003eone_page_buf = kmalloc(log-\u003epage_size, GFP_NOFS);\\n\\nLater, when a restart area is found, the log page size recorded on disk\\nis adopted:\\n\\n\\tt32 = le32_to_cpu(log-\u003erst_info.r_page-\u003esys_page_size);\\n\\tif (log-\u003epage_size != t32) {\\n\\t\\tlog-\u003el_size = log-\u003eorig_file_size;\\n\\t\\tlog-\u003epage_size = norm_file_page(t32, \u0026log-\u003el_size,\\n\\t\\t\\t\\t\\t\\tt32 == DefaultLogPageSize);\\n\\t}\\n\\nIf the on-disk page size is larger than the size used for the initial\\nallocation, log-\u003epage_size grows but one_page_buf is left at its\\noriginal, smaller size. A subsequent unaligned read_log_page() then\\nreads log-\u003epage_size bytes into the undersized scratch buffer:\\n\\n\\tpage_buf = page_off ? log-\u003eone_page_buf : *buffer;\\n\\terr = ntfs_read_run_nb_ra(ni-\u003emi.sbi, \u0026ni-\u003efile.run, page_vbo, page_buf,\\n\\t\\t\\t\\t  log-\u003epage_size, NULL, \u0026log-\u003eread_ahead);\\n\\noverflowing the allocation. This is reachable when mounting a dirty\\nNTFS volume whose log was formatted with a page size larger than the\\nbuffer initially allocated on the mounting host (for example a 64K-log\\nvolume mounted on a host that allocated a 4K scratch buffer).\\n\\nGrow one_page_buf when the adopted on-disk page size exceeds the size\\nused for the initial allocation. On krealloc() failure the original\\nbuffer is left intact and freed by the existing error path.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"fs/ntfs3/fslog.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"2097a2537d9d1c29c0e20ed0dbf717a0ccd8f374\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"f1422df595d69b997d23a8f11e12c528ccef7fad\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"4f129fc6f756f8541e5bff45b1804cc11b1ec712\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"c99444f6dfca893f6d310aae4a53c620f98f7b4f\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"5a35454179fe1041d9cd286f5d320ce0d448c12a\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"fs/ntfs3/fslog.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.15\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.15\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.145\",\"lessThanOrEqual\":\"6.6.*\",\"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: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}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/2097a2537d9d1c29c0e20ed0dbf717a0ccd8f374\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/4f129fc6f756f8541e5bff45b1804cc11b1ec712\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/5a35454179fe1041d9cd286f5d320ce0d448c12a\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c99444f6dfca893f6d310aae4a53c620f98f7b4f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f1422df595d69b997d23a8f11e12c528ccef7fad\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-17T13:42:32+00:00",
      "cve": "CVE-2026-72470",
      "id": "CVE-2026-72470",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: fs/ntfs3: resize log-\u003eone_page_buf when adopting on-disk page size",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-72470.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…