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

CVE-2026-89615 (GCVE-0-2026-89615)

Vulnerability from cvelistv5 – Published: 2026-09-11 19:45 – Updated: 2026-09-14 12:01
VLAI
Title
fs/ntfs3: bound page_lcns[] index by the log record
Summary
In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: bound page_lcns[] index by the log record The copy_lcns loop and the redo shorten loop index page_lcns[] at j + i, where i runs up to the log record's lcns_follow. That count is checked only against the record's own length, not the target entry, so check_dp_table() (which validates the entry's lcns_follow) does not cover it: the copy_lcns entry may even be freshly allocated after that check, and find_dp() bounds j but not i. A crafted record thus overflows page_lcns[] of an otherwise valid entry. Add dp_range_ok() and reject, before each loop, any record whose run does not fit the entry. These are the only two page_lcns[] accesses indexed by the record rather than the entry, so together with the entry validation every access is now bounded. [almaz.alexandrovich@paragon-software.com: original patch contained changes to the problem already handled, applied partly]
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 31fdd11f75da9823500168cecb07aa45130915a3 (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < bb742d1030864c0fe140666f639428ba4e90b2ca (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 61ca8cbbf68f77f25b699ed4358bd232f94ed43b (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < f4c1bc6d7331f344ffcea93c2a37badcbe15baa6 (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 7ccb94901f38a062034b56b43c774050b113758f (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 1135ebc225996b3ac1a295652b19a0a706737a6c (git)
Affected: b46acd6a6a627d876898e1c84d3f84902264b445 , < 6f7b9dbdc1b7520206abce0049bdd143eb536e75 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.15
Unaffected: 0 , < 5.15 (semver)
Unaffected: 5.15.221 , ≤ 5.15.* (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.109 , ≤ 6.12.* (semver)
Unaffected: 6.18.50 , ≤ 6.18.* (semver)
Unaffected: 7.2.4 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (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": "31fdd11f75da9823500168cecb07aa45130915a3",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "bb742d1030864c0fe140666f639428ba4e90b2ca",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "61ca8cbbf68f77f25b699ed4358bd232f94ed43b",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "f4c1bc6d7331f344ffcea93c2a37badcbe15baa6",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "7ccb94901f38a062034b56b43c774050b113758f",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "1135ebc225996b3ac1a295652b19a0a706737a6c",
              "status": "affected",
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "versionType": "git"
            },
            {
              "lessThan": "6f7b9dbdc1b7520206abce0049bdd143eb536e75",
              "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": "5.15.*",
              "status": "unaffected",
              "version": "5.15.221",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.109",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.50",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.221",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.188",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.109",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.50",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.4",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "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: bound page_lcns[] index by the log record\n\nThe copy_lcns loop and the redo shorten loop index page_lcns[] at j + i,\nwhere i runs up to the log record\u0027s lcns_follow. That count is checked only\nagainst the record\u0027s own length, not the target entry, so check_dp_table()\n(which validates the entry\u0027s lcns_follow) does not cover it: the copy_lcns\nentry may even be freshly allocated after that check, and find_dp() bounds j\nbut not i. A crafted record thus overflows page_lcns[] of an otherwise valid\nentry.\n\nAdd dp_range_ok() and reject, before each loop, any record whose run does\nnot fit the entry. These are the only two page_lcns[] accesses indexed by\nthe record rather than the entry, so together with the entry validation\nevery access is now bounded.\n\n[almaz.alexandrovich@paragon-software.com: original patch contained changes to the problem already handled, applied partly]"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.4,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The page_lcns[] overflow is reached only in log_replay() on the local ntfs3 mount path (path_mount\u2192ntfs_fill_super\u2192ntfs_loadlog_and_replay\u2192log_replay). ksmbd/nfsd never parse $LogFile; journal replay runs at fill_super, not while serving exported files.\nAC:L - An attacker fully controls crafted $LogFile LOG_REC_HDR fields (target_vcn, lcns_follow) and the target DIR_PAGE_ENTRY. find_dp() only bounds the base index j; the redo shorten loop then indexes page_lcns[j+i-1] with i up to the record\u0027s lcns_follow, so the OOB access is deterministic with no race.\nPR:N - No account or privilege on the victim is required: a crafted NTFS volume on USB/removable media, a disk image, or shared storage is sufficient for udisks2/systemd automount or an administrator mount to run $LogFile replay as root.\nUI:N - Desktop, kiosk, and shared-workstation automounters mount attacker-supplied NTFS media and run log_replay() inside ntfs_fill_super() without the user opening files or confirming a dialog; attaching the crafted volume is sufficient to trigger the overflow.\nS:U - Heap out-of-bounds page_lcns[] access occurs in the host kernel during ntfs3 journal replay in the mounting process; impact stays within one kernel security authority and is not a VM escape or IOMMU/DMA bypass.\nC:H - The redo shorten loop reads dp-\u003epage_lcns[j+i-1] with i taken from the log record\u0027s lcns_follow (u16, up to 65535 entries / ~512KB past the DIR_PAGE_ENTRY). That unbounded slab out-of-bounds read of adjacent heap is Confidentiality High per kernel OOB-read guidance.\nI:H - On unfixed kernels the copy_lcns analysis loop wrote attacker-controlled __le64 values past page_lcns[], a heap OOB write. Independently, OOB page_lcns[] reads in the redo pass control dlen passed to do_action() memcpy/memmove into MFT and index buffers, enabling further kernel writes.\nA:H - Indexing far past the kmalloc-backed DIR_PAGE_ENTRY in log_replay() on mount can fault unmapped adjacent slab memory, causing a kernel oops or panic. The crash is repeatable on every mount of the crafted NTFS volume."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-14T12:01:31.040Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/31fdd11f75da9823500168cecb07aa45130915a3"
        },
        {
          "url": "https://git.kernel.org/stable/c/bb742d1030864c0fe140666f639428ba4e90b2ca"
        },
        {
          "url": "https://git.kernel.org/stable/c/61ca8cbbf68f77f25b699ed4358bd232f94ed43b"
        },
        {
          "url": "https://git.kernel.org/stable/c/f4c1bc6d7331f344ffcea93c2a37badcbe15baa6"
        },
        {
          "url": "https://git.kernel.org/stable/c/7ccb94901f38a062034b56b43c774050b113758f"
        },
        {
          "url": "https://git.kernel.org/stable/c/1135ebc225996b3ac1a295652b19a0a706737a6c"
        },
        {
          "url": "https://git.kernel.org/stable/c/6f7b9dbdc1b7520206abce0049bdd143eb536e75"
        }
      ],
      "title": "fs/ntfs3: bound page_lcns[] index by the log record",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-89615",
    "datePublished": "2026-09-11T19:45:15.397Z",
    "dateReserved": "2026-09-11T19:38:34.735Z",
    "dateUpdated": "2026-09-14T12:01:31.040Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-89615",
      "date": "2026-09-16",
      "epss": "0.00154",
      "percentile": "0.04918"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-89615\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-09-11T20:19:46.653\",\"lastModified\":\"2026-09-14T13:19:15.393\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nfs/ntfs3: bound page_lcns[] index by the log record\\n\\nThe copy_lcns loop and the redo shorten loop index page_lcns[] at j + i,\\nwhere i runs up to the log record\u0027s lcns_follow. That count is checked only\\nagainst the record\u0027s own length, not the target entry, so check_dp_table()\\n(which validates the entry\u0027s lcns_follow) does not cover it: the copy_lcns\\nentry may even be freshly allocated after that check, and find_dp() bounds j\\nbut not i. A crafted record thus overflows page_lcns[] of an otherwise valid\\nentry.\\n\\nAdd dp_range_ok() and reject, before each loop, any record whose run does\\nnot fit the entry. These are the only two page_lcns[] accesses indexed by\\nthe record rather than the entry, so together with the entry validation\\nevery access is now bounded.\\n\\n[almaz.alexandrovich@paragon-software.com: original patch contained changes to the problem already handled, applied partly]\"}],\"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\":\"31fdd11f75da9823500168cecb07aa45130915a3\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"bb742d1030864c0fe140666f639428ba4e90b2ca\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"61ca8cbbf68f77f25b699ed4358bd232f94ed43b\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"f4c1bc6d7331f344ffcea93c2a37badcbe15baa6\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"7ccb94901f38a062034b56b43c774050b113758f\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"1135ebc225996b3ac1a295652b19a0a706737a6c\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b46acd6a6a627d876898e1c84d3f84902264b445\",\"lessThan\":\"6f7b9dbdc1b7520206abce0049bdd143eb536e75\",\"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\":\"5.15.221\",\"lessThanOrEqual\":\"5.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.188\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.157\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.109\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.50\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2.4\",\"lessThanOrEqual\":\"7.2.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.3-rc1\",\"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:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":8.4,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.5,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1135ebc225996b3ac1a295652b19a0a706737a6c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/31fdd11f75da9823500168cecb07aa45130915a3\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/61ca8cbbf68f77f25b699ed4358bd232f94ed43b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/6f7b9dbdc1b7520206abce0049bdd143eb536e75\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/7ccb94901f38a062034b56b43c774050b113758f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/bb742d1030864c0fe140666f639428ba4e90b2ca\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f4c1bc6d7331f344ffcea93c2a37badcbe15baa6\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-13T06:59:20+00:00",
      "cve": "CVE-2026-89615",
      "id": "CVE-2026-89615",
      "initial_release_date": "2026-09-11T19:45:15.397000+00:00",
      "product_status:known_affected": "2",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Linux kernel: NTFS3 driver buffer overflow via crafted log record",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89615.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-16T00:01:39Z",
      "cve": "CVE-2026-89615",
      "id": "CVE-2026-89615",
      "initial_release_date": "2026-09-12T16:25:00Z",
      "product_status:known_affected": "114",
      "product_status:known_not_affected": "239",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-89615",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-89615.json",
      "version": "4"
    }
  }
}



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…