{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-41018",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-41018"
  ],
  "published": "2024-07-29T06:37:18Z",
  "summary": "fs/ntfs3: Add a check for attr_names and oatbl",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/ntfs3: Add a check for attr_names and oatbl\n\nAdded out-of-bound checking for *ane (ATTR_NAME_ENTRY).",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.6.20-1+rpt1",
        "1:6.6.28-1+rpt1",
        "1:6.6.31-1+rpt1"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.6.20+rpt-rpi-2712",
            "binary_version": "1:6.6.20-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.20+rpt-rpi-v6",
            "binary_version": "1:6.6.20-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.20+rpt-rpi-v7",
            "binary_version": "1:6.6.20-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.20+rpt-rpi-v7l",
            "binary_version": "1:6.6.20-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.20+rpt-rpi-v8",
            "binary_version": "1:6.6.20-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.28+rpt-rpi-2712",
            "binary_version": "1:6.6.28-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.28+rpt-rpi-v6",
            "binary_version": "1:6.6.28-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.28+rpt-rpi-v7",
            "binary_version": "1:6.6.28-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.28+rpt-rpi-v7l",
            "binary_version": "1:6.6.28-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.28+rpt-rpi-v8",
            "binary_version": "1:6.6.28-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.31+rpt-rpi-2712",
            "binary_version": "1:6.6.31-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.31+rpt-rpi-v6",
            "binary_version": "1:6.6.31-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.31+rpt-rpi-v7",
            "binary_version": "1:6.6.31-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.31+rpt-rpi-v7l",
            "binary_version": "1:6.6.31-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.6.31+rpt-rpi-v8",
            "binary_version": "1:6.6.31-1+rpt1"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.6.20-1+rpt1": {
            "linux_commit": "6f16847710cc0502450788b9f12f0a14d3429668",
            "upstream_version": "6.6.20",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.6.43"
          },
          "1:6.6.28-1+rpt1": {
            "linux_commit": "0c341f47adc3578cd5f817aa20ee2b7f9ae6b23e",
            "upstream_version": "6.6.28",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.6.43"
          },
          "1:6.6.31-1+rpt1": {
            "linux_commit": "c1432b4bae5b6582f4d32ba381459f33c34d1424",
            "upstream_version": "6.6.31",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.6.43"
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-41018"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/f3124d51e4e7b56a732419d8dc270e807252334f"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/c114d2b88f8b226d4b2acf5a1ba0412cde6c31dd"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/9b71f820f7168f1eab8378c80c7ea8a022a475bc"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/702d4930eb06dcfda85a2fa67e8a1a27bfa2a845"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The vulnerable parser is reached only through the local mount path (`mount()` \u2192 `ntfs_fill_super()` \u2192 `ntfs_loadlog_and_replay()` \u2192 `log_replay()`), requiring the attacker to present a crafted NTFS block device or image to the local system. No network or remote-peer input reaches this code.\nAC:L - Every value driving the overflow (`rst->attr_names_len`, `open_attr_len`, and each `ATTR_NAME_ENTRY.off`/`name_bytes`) comes verbatim from the attacker-authored `$LogFile`, so the out-of-bounds walk and the controlled-offset write trigger deterministically on the first mount with no race and no reliance on conditions outside the attacker's control.\nPR:L - On the realistic target (shared workstation, kiosk, automotive/embedded head unit) an unprivileged local user with a session can get a crafted NTFS volume mounted through udisks2/polkit removable-media automount or an fstab/mount helper, so basic local user access suffices rather than real root.\nUI:N - In the automount scenario the attacker triggers the mount themselves by attaching the media; no separate victim has to open a file, run a command, or take any action for `log_replay()` to parse the malicious log.\nS:U - The corruption is confined to kernel heap memory within the same kernel security authority; there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - The unbounded `while (ane->off)` walk reads far past the end of the `attr_names` slab allocation, and the resulting heap corruption of adjacent slab objects (including planting a kernel heap pointer into neighbouring structures) is leverageable into broad kernel memory disclosure.\nI:H - `Add2Ptr(oatbl, le16_to_cpu(ane->off))` gives an attacker-chosen offset of up to 65535 bytes beyond a small `kmemdup()` allocation, at which the code writes an 8-byte kernel pointer plus two attacker-influenced bytes \u2014 a controlled out-of-bounds heap write suitable for overwriting adjacent objects and hijacking control flow.\nA:H - Even without full exploitation, the out-of-bounds reads and writes reliably corrupt slab memory or hit unmapped pages during mount, producing an oops or panic."
    }
  }
}
