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

GHSA-GC6W-QCF3-4MHM

Vulnerability from github – Published: 2026-08-15 06:32 – Updated: 2026-08-17 06:33
VLAI
Details

In the Linux kernel, the following vulnerability has been resolved:

ntfs3: bound to_move in indx_insert_into_root before hdr_insert_head

indx_insert_into_root() promotes a full resident $INDEX_ROOT into $INDEX_ALLOCATION and copies all non-last resident root entries into a newly allocated INDEX_BUFFER via hdr_insert_head(). The source byte count 'to_move' is summed from the on-disk resident entry sizes and is independent of the destination buffer size, which comes from root->index_block_size (via indx->index_bits).

A crafted NTFS image that keeps a valid, full resident root but shrinks root->index_block_size down to 512 after the root has been populated makes hdr_insert_head() memcpy attacker-controlled resident entry bytes past the end of the kmalloc(1u << indx->index_bits) allocation returned by indx_new(). For a 512-byte destination and a resident root whose non-last entries total 560 bytes, the memcpy overruns by 120 bytes and a following memmove extends the highest written offset to 136 bytes past the allocation. The overflow bytes are a direct copy of on-disk entries (via kmemdup), so they are fully attacker-controlled.

The write is reachable from unprivileged open(O_CREAT) on a mounted crafted NTFS image: a single sufficiently long create in a directory whose resident root is already full forces root promotion and triggers the copy.

This is a controlled out-of-bounds write of 120-136 bytes past a kmalloc(index_block_size) allocation, with attacker-controlled content. It is a bounded adjacent-heap corruption primitive; it is not an arbitrary-address write. Successful exploitation into a named victim object depends on the surrounding slab layout.

Reject the copy at the sink. The destination's INDEX_HDR already reports hdr_total (the payload capacity of the new buffer) and hdr_used (the bytes already consumed by the terminal END entry installed by indx_new()); require that to_move fits in the remaining payload before calling hdr_insert_head(). On mismatch, fail with -EINVAL and mark the filesystem as having a detected on-disk inconsistency, which is the same behaviour as the surrounding validation in this function.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2026-72192"
  ],
  "database_specific": {
    "cwe_ids": [],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2026-08-15T06:21:37Z",
    "severity": "CRITICAL"
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nntfs3: bound to_move in indx_insert_into_root before hdr_insert_head\n\nindx_insert_into_root() promotes a full resident $INDEX_ROOT into\n$INDEX_ALLOCATION and copies all non-last resident root entries into\na newly allocated INDEX_BUFFER via hdr_insert_head(). The source\nbyte count \u0027to_move\u0027 is summed from the on-disk resident entry sizes\nand is independent of the destination buffer size, which comes from\nroot-\u003eindex_block_size (via indx-\u003eindex_bits).\n\nA crafted NTFS image that keeps a valid, full resident root but\nshrinks root-\u003eindex_block_size down to 512 after the root has been\npopulated makes hdr_insert_head() memcpy attacker-controlled resident\nentry bytes past the end of the kmalloc(1u \u003c\u003c indx-\u003eindex_bits)\nallocation returned by indx_new(). For a 512-byte destination and a\nresident root whose non-last entries total 560 bytes, the memcpy\noverruns by 120 bytes and a following memmove extends the highest\nwritten offset to 136 bytes past the allocation. The overflow bytes\nare a direct copy of on-disk entries (via kmemdup), so they are\nfully attacker-controlled.\n\nThe write is reachable from unprivileged open(O_CREAT) on a mounted\ncrafted NTFS image: a single sufficiently long create in a directory\nwhose resident root is already full forces root promotion and\ntriggers the copy.\n\nThis is a controlled out-of-bounds write of 120-136 bytes past a\nkmalloc(index_block_size) allocation, with attacker-controlled\ncontent. It is a bounded adjacent-heap corruption primitive; it is\nnot an arbitrary-address write. Successful exploitation into a named\nvictim object depends on the surrounding slab layout.\n\nReject the copy at the sink. The destination\u0027s INDEX_HDR already\nreports hdr_total (the payload capacity of the new buffer) and\nhdr_used (the bytes already consumed by the terminal END entry\ninstalled by indx_new()); require that to_move fits in the remaining\npayload before calling hdr_insert_head(). On mismatch, fail with\n-EINVAL and mark the filesystem as having a detected on-disk\ninconsistency, which is the same behaviour as the surrounding\nvalidation in this function.",
  "id": "GHSA-gc6w-qcf3-4mhm",
  "modified": "2026-08-17T06:33:15Z",
  "published": "2026-08-15T06:32:15Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-72192"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/0af83b8155cc848e9f5d2c36e20a70d024214649"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/194b00c99ba971fa7cf6acd747a36032c6de54eb"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/53c5f3b2da3774b41534728aba295c098c9efa19"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/9b6926ac9c970ae0b2c2fe6289b16e9aa10b6a67"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/aaa1f956c0fc41089a4a534da7df91552a08a47c"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/cb3161deebcaf8d36d3115abf452c633f2180fc1"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/d240f5f9d036b8180224954d9873f172b6be4dd8"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ]
}



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…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…