← Back to CVE Explorer

CVE-2026-89781

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: fix out-of-bounds read in read_log_rec_buf() read_log_rec_buf() copies a log record into a caller buffer starting at u32 off = lsn_to_page_off(log, lsn) + log->record_header_len; log->record_header_len (and log->data_off, used for the following pages) comes verbatim from the on-disk restart area and is only checked for 8-byte alignment in is_rst_area_valid(), so off can exceed log->page_size. "tail = log->page_size - off" then underflows and memcpy() reads past the page_size-sized buffer returned by read_log_page(), spilling adjacent slab memory into the replay buffer. This is reachable by mounting a crafted NTFS image: BUG: KASAN: slab-out-of-bounds in read_log_rec_buf+0x216/0x580 Read of size 64 at addr ffff88800a877ff8 by task exploit/127 read_log_rec_buf fs/ntfs3/fslog.c:2299 log_replay fs/ntfs3/fslog.c:4216 ntfs_loadlog_and_replay fs/ntfs3/fsntfs.c:324 ntfs_fill_super fs/ntfs3/super.c:1392 get_tree_bdev_flags fs/super.c:1694 __x64_sys_mount fs/namespace.c:4360 The buggy address is located 4088 bytes to the right of the 4096-byte region [ffff88800a876000, ffff88800a877000) Reject an in-page offset outside the current page before the copy. [[email protected]: replaced the >= sign with >]

Severity
HIGH
CVSS score
8.4 (v3.1)
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-16 09:17:08.667000
Last modified
2026-10-19 09:18:21.517000
View original CVE JSON
{
  "id": "CVE-2026-89781",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-16T09:17:08.667",
  "lastModified": "2026-10-19T09:18:21.517",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/ntfs3: fix out-of-bounds read in read_log_rec_buf()\n\nread_log_rec_buf() copies a log record into a caller buffer starting at\n\n\tu32 off = lsn_to_page_off(log, lsn) + log->record_header_len;\n\nlog->record_header_len (and log->data_off, used for the following pages)\ncomes verbatim from the on-disk restart area and is only checked for\n8-byte alignment in is_rst_area_valid(), so off can exceed\nlog->page_size. \"tail = log->page_size - off\" then underflows and\nmemcpy() reads past the page_size-sized buffer returned by\nread_log_page(), spilling adjacent slab memory into the replay buffer.\n\nThis is reachable by mounting a crafted NTFS image:\n\n BUG: KASAN: slab-out-of-bounds in read_log_rec_buf+0x216/0x580\n Read of size 64 at addr ffff88800a877ff8 by task exploit/127\n  read_log_rec_buf fs/ntfs3/fslog.c:2299\n  log_replay fs/ntfs3/fslog.c:4216\n  ntfs_loadlog_and_replay fs/ntfs3/fsntfs.c:324\n  ntfs_fill_super fs/ntfs3/super.c:1392\n  get_tree_bdev_flags fs/super.c:1694\n  __x64_sys_mount fs/namespace.c:4360\n The buggy address is located 4088 bytes to the right of\n the 4096-byte region [ffff88800a876000, ffff88800a877000)\n\nReject an in-page offset outside the current page before the copy.\n\n[[email protected]: replaced the >= sign with >]"
    }
  ],
  "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": "df099bfdb57773ba7f40f8a9dcc82e75af277922",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "lessThan": "1b2d31f1083beb80c55d1152249f652c1445a559",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "lessThan": "700973cc65db405bde0368ccf88699390150943e",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "lessThan": "49f7cbc902b08b56eb7d2633163ecc57a0e7145a",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "lessThan": "74a83aa05f73033af719771ab1f0c269928b4865",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "lessThan": "53e56f7aa1d0f950a8bc2e4cdb3ba9fe45967531",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b46acd6a6a627d876898e1c84d3f84902264b445",
              "lessThan": "de603b9d377fab57a5e6432fa84a9f36b32c1636",
              "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.110",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.52",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.6",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "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/1b2d31f1083beb80c55d1152249f652c1445a559",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/49f7cbc902b08b56eb7d2633163ecc57a0e7145a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/53e56f7aa1d0f950a8bc2e4cdb3ba9fe45967531",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/700973cc65db405bde0368ccf88699390150943e",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/74a83aa05f73033af719771ab1f0c269928b4865",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/de603b9d377fab57a5e6432fa84a9f36b32c1636",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/df099bfdb57773ba7f40f8a9dcc82e75af277922",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}