CVE-2026-72470 (GCVE-0-2026-72470)
Vulnerability from cvelistv5
Published
2026-08-15 05:57
Modified
2026-08-17 05:44
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
Linux Linux Version: b46acd6a6a627d876898e1c84d3f84902264b445
Version: b46acd6a6a627d876898e1c84d3f84902264b445
Version: b46acd6a6a627d876898e1c84d3f84902264b445
Version: b46acd6a6a627d876898e1c84d3f84902264b445
Version: b46acd6a6a627d876898e1c84d3f84902264b445
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"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…