{
  "affected": [
    {
      "ranges": [
        {
          "events": [
            {
              "introduced": "27992ef80770d61a57f6c3a551735b08cefdffa3"
            },
            {
              "fixed": "7de93abfaae1b2dc94da8a07a36421bd073f1d8f"
            },
            {
              "fixed": "474ce83c96a55f2eeb14dee2be375eeadfdacdf5"
            },
            {
              "fixed": "51a8de6c50bf947c8f534cd73da4c8f0a13e7bed"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Linux",
        "name": "Kernel"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "6.15.0"
            },
            {
              "fixed": "6.18.25"
            }
          ],
          "type": "ECOSYSTEM"
        },
        {
          "events": [
            {
              "introduced": "6.19.0"
            },
            {
              "fixed": "7.0.2"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31694.json"
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nfuse: reject oversized dirents in page cache\n\nfuse_add_dirent_to_cache() computes a serialized dirent size from the\nserver-controlled namelen field and copies the dirent into a single\npage-cache page. The existing logic only checks whether the dirent fits\nin the remaining space of the current page and advances to a fresh page\nif not. It never checks whether the dirent itself exceeds PAGE_SIZE.\n\nAs a result, a malicious FUSE server can return a dirent with\nnamelen=4095, producing a serialized record size of 4120 bytes. On 4 KiB\npage systems this causes memcpy() to overflow the cache page by 24 bytes\ninto the following kernel page.\n\nReject dirents that cannot fit in a single page before copying them into\nthe readdir cache.",
  "id": "CVE-2026-31694",
  "modified": "2026-07-08T05:37:23.627814855Z",
  "published": "2026-05-01T13:53:36.048Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/474ce83c96a55f2eeb14dee2be375eeadfdacdf5"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/51a8de6c50bf947c8f534cd73da4c8f0a13e7bed"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/7de93abfaae1b2dc94da8a07a36421bd073f1d8f"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31694.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-31694"
    },
    {
      "type": "PACKAGE",
      "url": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
    }
  ],
  "schema_version": "1.7.5",
  "severity": [
    {
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ],
  "summary": "fuse: reject oversized dirents in page cache"
}