kernel: configfs: unhash the dentry before dropping the item in rmdir

cve CVE-2026-97949 3 sources, 4 claims · Watch

Red Hat writes:
kernel: configfs: unhash the dentry before dropping the item in rmdir the claim
Severity they disagree
unknown GitHub advisories
moderate Red Hat
CVSS
7 Red Hat
Vendor
Linux NVD
Product
Linux NVD
CWE
CWE-825 Red Hat

How far exploitation has got

  1. No public code known
  2. Proof of concept
  3. Proof of concept, verified
  4. A Metasploit module
  5. Exploited in the wild
  6. Used in ransomware campaigns

Timeline

2026-09-25first spoke of it: In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry...GitHub advisories
2026-09-25first spoke of it: In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry before dropping the item in rmdir configfs_get_config_item() treats a hashed dentry as proof that sd->s_element is a live config_item. configfs_rmdir() breaks that: simple_rmdir() leaves the dentry hashed, the last reference to the item is dropped right after, and the dentry is only unhashed by d_delete() once ->rmdir() has returned. configfs_symlink() resolves its target holding no lock on it, so get_target() can land in that window: BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90 get_target fs/configfs/symlink.c:128 [inline] configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185 Unhash in configfs_remove_dir(), while the item is still guaranteed to be there. A reference obtained just before that stays harmless, as create_link() rechecks CONFIGFS_USET_DROPPING, already set by configfs_detach_prep(). Both configfs_unregister_subsystem() paths d_drop() after detaching, so this only makes rmdir match them.NVD
2026-09-25first spoke of it: kernel: configfs: unhash the dentry before dropping the item in rmdirRed Hat

What it is to other things

In words only, so not counted until a person confirms one:

affectslinux/linux
NVD says “Linux · Linux”
made_bylinux
NVD says “Linux”
Every value, with what each source said and its receipt
PropertySourceSaidMeans here
CVSS
cvss
Red Hat7
receipt
Source
Red Hat
Its words
7.0
Read by
field:cvss3_score
Said since
2026-10-06 13:01 UTC
Last answered
2026-10-06 13:02 UTC
Original
open at the source
What the source handed over
{
  "CVE": "CVE-2026-97949",
  "CWE": "CWE-825",
  "advisories": [],
  "affected_packages": [],
  "bugzilla": "2541021",
  "bugzilla_description": "kernel: configfs: unhash the dentry before dropping the item in rmdir",
  "cvss3_score": "7.0",
  "cvss3_scoring_vector": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
  "cvss_score": null,
  "cvss_scoring_vector": null,
  "package_state": null,
  "public_date": "2026-09-25T00:00:00Z",
  "resource_url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2026-97949.json",
  "severity": "moderate"
}
—
CVSS vector
cvss_vector
Red HatCVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
receipt
Source
Red Hat
Its words
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Read by
field:cvss3_scoring_vector
Said since
2026-10-06 13:01 UTC
Last answered
2026-10-06 13:02 UTC
Original
open at the source
What the source handed over
{
  "CVE": "CVE-2026-97949",
  "CWE": "CWE-825",
  "advisories": [],
  "affected_packages": [],
  "bugzilla": "2541021",
  "bugzilla_description": "kernel: configfs: unhash the dentry before dropping the item in rmdir",
  "cvss3_score": "7.0",
  "cvss3_scoring_vector": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
  "cvss_score": null,
  "cvss_scoring_vector": null,
  "package_state": null,
  "public_date": "2026-09-25T00:00:00Z",
  "resource_url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2026-97949.json",
  "severity": "moderate"
}
—
CWE
cwe
Red HatCWE-825
receipt
Source
Red Hat
Its words
CWE-825
Read by
field:CWE
Said since
2026-10-06 13:01 UTC
Last answered
2026-10-06 13:02 UTC
Original
open at the source
What the source handed over
{
  "CVE": "CVE-2026-97949",
  "CWE": "CWE-825",
  "advisories": [],
  "affected_packages": [],
  "bugzilla": "2541021",
  "bugzilla_description": "kernel: configfs: unhash the dentry before dropping the item in rmdir",
  "cvss3_score": "7.0",
  "cvss3_scoring_vector": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
  "cvss_score": null,
  "cvss_scoring_vector": null,
  "package_state": null,
  "public_date": "2026-09-25T00:00:00Z",
  "resource_url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2026-97949.json",
  "severity": "moderate"
}
—
Product
product
NVDLinux
receipt
Source
NVD
Its words
Linux
Read by
field:cve.affected[].affectedData[].product
Said since
2026-09-29 17:49 UTC
Last answered
2026-10-06 12:41 UTC
Original
open at the source
2026-09-29 17:49 UTCLinux
2026-09-29 09:45 UTC—
What the source handed over
{
  "cve": {
    "affected": [
      {
        "affectedData": [
          {
            "defaultStatus": "unaffected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "lessThan": "5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "925d8564f1b2d9b46c5ab63b9bc942cea006da9b",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "f06c2d26d1999d37e93299db0ecead04ca7d0b9f",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              }
            ]
          },
          {
            "defaultStatus": "affected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "status": "affected",
                "version": "2.6.16"
              },
              {
                "lessThan": "2.6.16",
                "status": "unaffected",
                "version": "0",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "6.18.*",
                "status": "unaffected",
                "version": "6.18.53",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "7.2.*",
                "status": "unaffected",
                "version": "7.2.7",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "*",
                "status": "unaffected",
                "version": "7.3-rc3",
                "versionType": "original_commit_for_fix"
              }
            ]
          }
        ],
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
      }
    ],
    "cveTags": [],
    "descriptions": [
      {
        "lang": "en",
        "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nconfigfs: unhash the dentry before dropping the item in rmdir\n\nconfigfs_get_config_item() treats a hashed dentry as proof that\nsd->s_element is a live config_item.  configfs_rmdir() breaks that:\nsimple_rmdir() leaves the dentry hashed, the last reference to the item is\ndropped right after, and the dentry is only unhashed by d_delete() once\n->rmdir() has returned.  configfs_symlink() resolves its target holding no\nlock on it, so get_target() can land in that window:\n\n  BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90\n   get_target fs/configfs/symlink.c:128 [inline]\n   configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185\n\nUnhash in configfs_remove_dir(), while the item is still guaranteed to be\nthere.  A reference obtained just before that stays harmless, as\ncreate_link() rechecks CONFIGFS_USET_DROPPING, already set by\nconfigfs_detach_prep().  Both configfs_unregister_subsystem() paths\nd_drop() after detaching, so this only makes rmdir match them."
      }
    ],
    "id": "CVE-2026-97949",
    "lastModified": "2026-09-25T11:17:22.453",
    "metrics": {},
    "published": "2026-09-25T11:17:22.453",
    "references": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/925d8564f1b2d9b46c5ab63b9bc942cea006da9b"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/f06c2d26d1999d37e93299db0ecead04ca7d0b9f"
      }
    ],
    "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "vulnStatus": "Received"
  }
}
—
Severity
severity
conflict
GitHub advisoriesunknown
receipt
Source
GitHub advisories
Said since
2026-09-26 15:00 UTC
Last answered
2026-10-06 13:46 UTC
Original
open at the source

This source has not kept a receipt for this claim yet. The next update that reads it will.

—
Severity
severity
conflict
Red Hatmoderate
A flaw that is harder to exploit, or whose impact is limited.
receipt
Source
Red Hat
Its words
moderate
Read by
field:severity
Said since
2026-10-06 13:01 UTC
Last answered
2026-10-06 13:02 UTC
Original
open at the source
What the source handed over
{
  "CVE": "CVE-2026-97949",
  "CWE": "CWE-825",
  "advisories": [],
  "affected_packages": [],
  "bugzilla": "2541021",
  "bugzilla_description": "kernel: configfs: unhash the dentry before dropping the item in rmdir",
  "cvss3_score": "7.0",
  "cvss3_scoring_vector": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
  "cvss_score": null,
  "cvss_scoring_vector": null,
  "package_state": null,
  "public_date": "2026-09-25T00:00:00Z",
  "resource_url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2026-97949.json",
  "severity": "moderate"
}
medium
Status
status
NVDReceived
receipt
Source
NVD
Its words
Received
Read by
field:cve.vulnStatus
Said since
2026-09-29 09:45 UTC
Last answered
2026-10-06 12:41 UTC
Original
open at the source
What the source handed over
{
  "cve": {
    "affected": [
      {
        "affectedData": [
          {
            "defaultStatus": "unaffected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "lessThan": "5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "925d8564f1b2d9b46c5ab63b9bc942cea006da9b",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "f06c2d26d1999d37e93299db0ecead04ca7d0b9f",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              }
            ]
          },
          {
            "defaultStatus": "affected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "status": "affected",
                "version": "2.6.16"
              },
              {
                "lessThan": "2.6.16",
                "status": "unaffected",
                "version": "0",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "6.18.*",
                "status": "unaffected",
                "version": "6.18.53",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "7.2.*",
                "status": "unaffected",
                "version": "7.2.7",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "*",
                "status": "unaffected",
                "version": "7.3-rc3",
                "versionType": "original_commit_for_fix"
              }
            ]
          }
        ],
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
      }
    ],
    "cveTags": [],
    "descriptions": [
      {
        "lang": "en",
        "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nconfigfs: unhash the dentry before dropping the item in rmdir\n\nconfigfs_get_config_item() treats a hashed dentry as proof that\nsd->s_element is a live config_item.  configfs_rmdir() breaks that:\nsimple_rmdir() leaves the dentry hashed, the last reference to the item is\ndropped right after, and the dentry is only unhashed by d_delete() once\n->rmdir() has returned.  configfs_symlink() resolves its target holding no\nlock on it, so get_target() can land in that window:\n\n  BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90\n   get_target fs/configfs/symlink.c:128 [inline]\n   configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185\n\nUnhash in configfs_remove_dir(), while the item is still guaranteed to be\nthere.  A reference obtained just before that stays harmless, as\ncreate_link() rechecks CONFIGFS_USET_DROPPING, already set by\nconfigfs_detach_prep().  Both configfs_unregister_subsystem() paths\nd_drop() after detaching, so this only makes rmdir match them."
      }
    ],
    "id": "CVE-2026-97949",
    "lastModified": "2026-09-25T11:17:22.453",
    "metrics": {},
    "published": "2026-09-25T11:17:22.453",
    "references": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/925d8564f1b2d9b46c5ab63b9bc942cea006da9b"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/f06c2d26d1999d37e93299db0ecead04ca7d0b9f"
      }
    ],
    "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "vulnStatus": "Received"
  }
}
—
Vendor
vendor
NVDLinux
receipt
Source
NVD
Its words
Linux
Read by
field:cve.affected[].affectedData[].vendor
Said since
2026-09-29 17:49 UTC
Last answered
2026-10-06 12:41 UTC
Original
open at the source
2026-09-29 17:49 UTCLinux
2026-09-29 09:45 UTC—
What the source handed over
{
  "cve": {
    "affected": [
      {
        "affectedData": [
          {
            "defaultStatus": "unaffected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "lessThan": "5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "925d8564f1b2d9b46c5ab63b9bc942cea006da9b",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "f06c2d26d1999d37e93299db0ecead04ca7d0b9f",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              }
            ]
          },
          {
            "defaultStatus": "affected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "status": "affected",
                "version": "2.6.16"
              },
              {
                "lessThan": "2.6.16",
                "status": "unaffected",
                "version": "0",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "6.18.*",
                "status": "unaffected",
                "version": "6.18.53",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "7.2.*",
                "status": "unaffected",
                "version": "7.2.7",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "*",
                "status": "unaffected",
                "version": "7.3-rc3",
                "versionType": "original_commit_for_fix"
              }
            ]
          }
        ],
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
      }
    ],
    "cveTags": [],
    "descriptions": [
      {
        "lang": "en",
        "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nconfigfs: unhash the dentry before dropping the item in rmdir\n\nconfigfs_get_config_item() treats a hashed dentry as proof that\nsd->s_element is a live config_item.  configfs_rmdir() breaks that:\nsimple_rmdir() leaves the dentry hashed, the last reference to the item is\ndropped right after, and the dentry is only unhashed by d_delete() once\n->rmdir() has returned.  configfs_symlink() resolves its target holding no\nlock on it, so get_target() can land in that window:\n\n  BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90\n   get_target fs/configfs/symlink.c:128 [inline]\n   configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185\n\nUnhash in configfs_remove_dir(), while the item is still guaranteed to be\nthere.  A reference obtained just before that stays harmless, as\ncreate_link() rechecks CONFIGFS_USET_DROPPING, already set by\nconfigfs_detach_prep().  Both configfs_unregister_subsystem() paths\nd_drop() after detaching, so this only makes rmdir match them."
      }
    ],
    "id": "CVE-2026-97949",
    "lastModified": "2026-09-25T11:17:22.453",
    "metrics": {},
    "published": "2026-09-25T11:17:22.453",
    "references": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/925d8564f1b2d9b46c5ab63b9bc942cea006da9b"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/f06c2d26d1999d37e93299db0ecead04ca7d0b9f"
      }
    ],
    "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "vulnStatus": "Received"
  }
}
—
Every claim, by kind

vulnerability

kernel: configfs: unhash the dentry before dropping the item in rmdir
zetlyn/cve-redhat · 2026-09-25
cvss 7 cvss_vector CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H cwe CWE-825 severity moderate source
In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry before dropping the item in rmdir configfs_get_config_item() treats a hashed dentry as proof that sd->s_element is a live config_item. configfs_rmdir() breaks that: simple_rmdir() leaves the dentry hashed, the last reference to the item is dropped right after, and the dentry is only unhashed by d_delete() once ->rmdir() has returned. configfs_symlink() resolves its target holding no lock on it, so get_target() can land in that window: BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90 get_target fs/configfs/symlink.c:128 [inline] configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185 Unhash in configfs_remove_dir(), while the item is still guaranteed to be there. A reference obtained just before that stays harmless, as create_link() rechecks CONFIGFS_USET_DROPPING, already set by configfs_detach_prep(). Both configfs_unregister_subsystem() paths d_drop() after detaching, so this only makes rmdir match them.
zetlyn/cve-nvd · 2026-09-25
product Linux status Received vendor Linux source
In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry...
zetlyn/cve-ghsa · 2026-09-25
severity unknown source
In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry...
zetlyn/cve-ghsa · 2026-09-25
severity unknown source