{
  "schemaVersion": 1,
  "attribution": [
    {
      "source": "CISA Known Exploited Vulnerabilities",
      "url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
      "licence": "US government work"
    },
    {
      "source": "GitHub Advisory Database",
      "url": "https://github.com/advisories",
      "licence": "CC BY 4.0"
    },
    {
      "source": "Have I Been Pwned",
      "url": "https://haveibeenpwned.com/",
      "licence": "CC BY 4.0"
    },
    {
      "source": "CVE Program (CVE records)",
      "url": "https://www.cve.org/Legal/TermsOfUse",
      "licence": "CVE Terms of Use",
      "notice": "Copyright © 1999-2026, The MITRE Corporation. CVE is a trademark and the CVE logo is a registered trademark of The MITRE Corporation.",
      "terms": "CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE™). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy."
    },
    {
      "source": "FIRST EPSS",
      "url": "https://www.first.org/epss/",
      "licence": "free to use; FIRST requests attribution"
    }
  ],
  "record": {
    "id": "CVE-2026-98982",
    "sourceURL": "https://www.cve.org/CVERecord?id=CVE-2026-98982",
    "idYear": 2026,
    "status": "PUBLISHED",
    "publishedAt": "2026-10-23T12:19:59.784Z",
    "updatedAt": "2026-10-23T12:19:59.784Z",
    "importedAt": "2026-10-24T01:58:41.756Z",
    "snapshot": {
      "id": "cve_2026-10-24_midnight_baseline",
      "at": "2026-10-24T00:00:00.000Z",
      "source": "https://github.com/CVEProject/cvelistV5/releases/tag/cve_2026-10-24_0100Z"
    },
    "facts": {
      "title": "namespace: don't let a pseudo dentry become the root of a mount",
      "summary": "In the Linux kernel, the following vulnerability has been resolved:\n\nnamespace: don't let a pseudo dentry become the root of a mount\n\nd_alloc_pseudo() hands out dentries for pipes, sockets and other files\nthat are never anyone's child or parent. They carry DCACHE_NORCU and\ndentry_free() frees them right away because no lockless path walk can\never reach them. That holds as long as such a dentry isn't the root of\na mount. But bind mounting /proc/self/fd/<fd> of such a file does\nexactly that.\n\nMost callers of alloc_file_pseudo() put their files on kernel-internal\nmounts and may_copy_tree() refuses those. bpf_token_create() doesn't. It\nplaces the token file on the bpffs mount the caller handed it and that\nmount is in the caller's mount namespace so the clone goes through:\n\n  mount --bind /proc/self/fd/<token> <file>\n  open_tree(tokfd, \"\", AT_EMPTY_PATH | OPEN_TREE_CLONE) + move_mount()\n\n__follow_mount_rcu() then loads ->mnt_root of that mount, reads d_seq\nand d_flags of the dentry and only then checks mount_lock. The dentry\ncan be gone by then. The final mntput() of an unmounted parent unhooks\na child that stayed attached to it under mount_lock alone. When the\nchild's holder does the final put right after that the root is dput()\nand freed immediately while a walker that found the mount hashed still\nlooks at it.\n\nRefuse to clone a mount with a DCACHE_NORCU dentry as its root. Nothing\nsensible can be done with a bind mount of a bpf token anyway.",
      "affected": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "35f96de04127d332a5c5e8a155d31f452f88c76d",
              "status": "affected",
              "versionType": "git",
              "lessThan": "a256e31e0c54c4c37d2523aa52faabdcdd2ebc07"
            },
            {
              "version": "35f96de04127d332a5c5e8a155d31f452f88c76d",
              "status": "affected",
              "versionType": "git",
              "lessThan": "7e1c466011ba9e64d43075396badc03191bcee44"
            },
            {
              "version": "35f96de04127d332a5c5e8a155d31f452f88c76d",
              "status": "affected",
              "versionType": "git",
              "lessThan": "00287afa7cd989efdbf5822b7efac33cce7d489a"
            },
            {
              "version": "35f96de04127d332a5c5e8a155d31f452f88c76d",
              "status": "affected",
              "versionType": "git",
              "lessThan": "b138e16fb1e81376cea89f727dda7bfccd140de4"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "versions": [
            {
              "version": "6.9",
              "status": "affected"
            },
            {
              "version": "0",
              "status": "unaffected",
              "versionType": "semver",
              "lessThan": "6.9"
            },
            {
              "version": "6.12.113",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "version": "6.18.57",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "version": "7.2.11",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "version": "7.3",
              "status": "unaffected",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ]
        }
      ]
    }
  }
}