GHSA-MXHQ-W28G-HR4Q
Vulnerability from github – Published: 2026-08-15 06:32 – Updated: 2026-08-17 06:33In 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.
{
"affected": [],
"aliases": [
"CVE-2026-72470"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-08-15T06:22:21Z",
"severity": "HIGH"
},
"details": "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.",
"id": "GHSA-mxhq-w28g-hr4q",
"modified": "2026-08-17T06:33:31Z",
"published": "2026-08-15T06:32:25Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-72470"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/2097a2537d9d1c29c0e20ed0dbf717a0ccd8f374"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/4f129fc6f756f8541e5bff45b1804cc11b1ec712"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/5a35454179fe1041d9cd286f5d320ce0d448c12a"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/c99444f6dfca893f6d310aae4a53c620f98f7b4f"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/f1422df595d69b997d23a8f11e12c528ccef7fad"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
]
}
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.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.