CVE-2026-97594
📛 CVE Title
landlock: Fix use-after-free of the source's parent directory
Description
In the Linux kernel, the following vulnerability has been resolved: landlock: Fix use-after-free of the source's parent directory current_check_refer_path() reads old_dentry->d_parent without holding a reference nor a lock on it, and then dereferences it in collect_domain_accesses() and in the audit record. A reference on a child does not pin its parent: __d_move() reassigns dentry->d_parent and drops the reference the child held on its former parent. hook_path_rename() is not affected because the rename path calls lock_rename() before the hook, so the source cannot be reparented under it. hook_path_link() has no such protection: filename_linkat() holds a reference on the source dentry but neither locks nor references its parent, so a concurrent rename(2) can reparent the source while security_path_link() runs, and the former parent can then be removed and freed while the hook walks it. A process can trigger this after entering a Landlock domain that handles at least one filesystem access right. The process can then race a linkat(2) loop against rename(2) and rmdir(2): BUG: KASAN: slab-use-after-free in collect_domain_accesses+0x278/0x290 Read of size 4 at addr ffff888160bd53f4 by task llrepro2/549 collect_domain_accesses+0x278/0x290 current_check_refer_path+0x952/0x1120 security_path_link+0x1be/0x320 filename_linkat+0x342/0x6d0 __x64_sys_linkat+0xfa/0x150 Freed by task 562: kmem_cache_free+0x139/0x4c0 i_callback+0x4b/0x80 rcu_core+0x7dc/0x10a0 Take a reference on the dentry selected as the source parent, using dget() for the common-mount-root case and dget_parent() otherwise. Release it after the hierarchy walk and synchronous audit logging. [mic: Clarify the caller, reachability, and reference handling]
Overview
- State
- PUBLISHED
- Assigner (CNA)
- Linux
- CVSS severity
- HIGH
- CVSS score
- 7.8 / 10
- CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H- Effective score
- 7.8 / 10 HIGH source: CNA overview
- CWE(s)
- —
- Reserved
- 2026-09-24
- Published
- 2026-09-25 10:22 UTC
- Last updated
- 2026-09-25 14:41 UTC
- Source
- https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/97xxx/CVE-2026-97594.json
- Linked Threat
- CVE-2026-97594 — landlock: Fix use-after-free of the source's parent directory
NVD triage scoring NVD CVE 2.0
Layer NVD adds on top of the CNA's CVE record — published / last-modified timestamps, exploitability / impact subscores, and the FIRST.org EPSS probability that this CVE will be exploited in the wild in the next 30 days.
- NVD published
- 2026-09-25 11:17:10 UTC
- NVD last modified
- 2026-09-25 15:18:00 UTC
- NVD CVSS v3.1
- 7.8 / 10 HIGH source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- NVD CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H- Exploitability subscore
- 1.8 / 10
- Impact subscore
- 5.9 / 10
NVD / KEV / EPSS data refreshed 2026-09-26 04:37 UTC. Re-run the 🛰 Backfill from NVD button above to refresh.
European Union Vulnerability Database ENISA EUVD
ENISA's official EU repository for curated vulnerability intelligence. Carries a separate identifier (EUVD-YYYY-NNNN) and frequently exposes an earlier-published description + CVSS than NVD does.
- EUVD ID
-
EUVD-2026-86902 - Assigner
- Linux
- Published
- Sep 25, 2026, 10:22:10 AM
- Updated
- Sep 25, 2026, 2:41:27 PM
- EUVD base score (CVSS 3.1)
-
7.8 / 10
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - EUVD-reported EPSS
- 0.1600
- Vendors
- Linux
- Products
-
Linux (patch: 6.18.53)Linux (5.19)Linux (patch: 7.2.7)Linux (patch: 0)Linux (b91c3e4ea756b12b7d992529226edce1cfd854d7 <379efd2ce8b26fd35feb13ccc2f671ff105a5052)Linux (b91c3e4ea756b12b7d992529226edce1cfd854d7 <2c6dc792538260a8087ac5b22c31b3b8e47c85d6)Linux (b91c3e4ea756b12b7d992529226edce1cfd854d7 <ba29c46ccfe3ebadfb8aa18149186c49f84b14f8)Linux (patch: 7.3-rc3)
- Aliases
-
GHSA-236x-phcf-6qmf
ENISA description: In the Linux kernel, the following vulnerability has been resolved: landlock: Fix use-after-free of the source's parent directory current_check_refer_path() reads old_dentry->d_parent without holding a reference nor a lock on it, and then dereferences it in collect_domain_accesses() and in the audit record. A reference on a child does not pin its parent: __d_move() reassigns dentry->d_parent and drops the reference the child held on its former parent. hook_path_rename() is not affected because the rename path calls lock_rename() before the hook, so the source cannot be reparented under it. hook_path_link() has no such protection: filename_linkat() holds a reference on the source dentry but neither locks nor references its parent, so a concurrent rename(2) can reparent the source while security_path_link() runs, and the former parent can then be removed and freed while the hook walks it. A process can trigger this after entering a Landlock domain that handles at least one filesystem access right. The process can then race a linkat(2) loop against rename(2) and rmdir(2): BUG: KASAN: slab-use-after-free in collect_domain_accesses+0x278/0x290 Read of size 4 at addr ffff888160bd53f4 by task llrepro2/549 collect_domain_accesses+0x278/0x290 current_check_refer_path+0x952/0x1120 security_path_link+0x1be/0x320 filename_linkat+0x342/0x6d0 __x64_sys_linkat+0xfa/0x150 Freed by task 562: kmem_cache_free+0x139/0x4c0 i_callback+0x4b/0x80 rcu_core+0x7dc/0x10a0 Take a reference on the dentry selected as the source parent, using dget() for the common-mount-root case and dget_parent() otherwise. Release it after the hierarchy walk and synchronous audit logging. [mic: Clarify the caller, reachability, and reference handling]
Affected products (2)
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| Linux | Linux |
b91c3e4ea756b12b7d992529226edce1cfd854d7 (affected),
b91c3e4ea756b12b7d992529226edce1cfd854d7 (affected),
b91c3e4ea756b12b7d992529226edce1cfd854d7 (affected)
|
— |
| Linux | Linux |
5.19 (affected),
0 (unaffected),
6.18.53 (unaffected),
7.2.7 (unaffected),
7.3-rc3 (unaffected)
|
— |
Vendor references (3)
References embedded in the original CVE record by the assigning CNA.
Web references (0)
DuckDuckGo results ranked by threat-intel / vendor advisory domains. Generated by the 🔎 Find references (web) button above — same flow as the Remediations search.
No web references attached yet.
NVD-tagged references (3)
Reference list NVD curates from the CNA record, vendor advisories, and third-party reports. The tag chips below are NVD's analyst-assigned categories.
- https://git.kernel.org/stable/c/2c6dc792538260a8087ac5b22c31b3b8e47c85d6 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- https://git.kernel.org/stable/c/379efd2ce8b26fd35feb13ccc2f671ff105a5052 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- https://git.kernel.org/stable/c/ba29c46ccfe3ebadfb8aa18149186c49f84b14f8 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Remediations (10)
Remediations are stored against the linked Threat row; the list below is deduplicated across both pages.
-
web:msrc.microsoft.com
The Microsoft Security Response Center (MSRC) investigates all reports of security vulnerabilities affecting Microsoft products and services, and provides the information here as part of the ongoing effort to help you manage security risks and help keep your systems protected.
2026-09-27 22:56 UTC -
web:patchmypc.com
You can find the production release history below for 2026 . View the 2025 Catalog Release History.
2026-09-27 22:56 UTC -
web:security-tracker.debian.org
Vulnerable and fixed packages The table below lists information on source packages.
2026-09-27 22:56 UTC -
web:senserva.com
Every Microsoft security patch (KB) and the CVEs it fixes, with severity, CVSS, and CISA KEV status. Cross-linked to the CVE reference.
2026-09-27 22:56 UTC -
web:support.microsoft.com
This Hotpatch update for Windows 11, version 25H2 and 24H2 (KB5079420), improves functionality, performance, and reliability. To learn more about differences between security updates, optional non-security preview updates, out-of-band (OOB) updates, and continuous innovation, see Windows monthly updates explained. For information on Windows update terminology, see the different types of ...
2026-09-27 22:56 UTC -
web:support.microsoft.com
This update for Windows 11, version 25H2 and 24H2 (KB5084597) incudes security improvements. To learn more about differences between security updates, optional non-security preview updates, out-of-band (OOB) updates, and continuous innovation, see Windows monthly updates explained. For information on Windows update terminology, see the different types of Windows software updates. To view the ...
2026-09-27 22:56 UTC -
web:vulners.com
The Linux kernel contains a use-after-free vulnerability in the landlock LSM. The current_check_refer_path() function reads old_dentry->d_parent without holding a reference or lock, leading to a race condition during filename_linkat(). Because hoo...
2026-09-27 22:56 UTC -
web:www.action1.com
This CISO-focused summary highlights the vulnerabilities and critical infrastructure risks that should take priority for remediation following Microsoft's September 2026 Patch Tuesday release.
2026-09-27 22:56 UTC -
web:www.oracle.com
This Critical Patch Update contains 1448 new security patches across the product families listed below. Please note that a My Oracle Support (MOS) note summarizing the content of this Critical Patch Update and other Oracle Software Security Assurance activities is located at July 2026 Critical Patch Update: Executive Summary and Analysis.
2026-09-27 22:56 UTC -
web:zecurit.com
Get the complete breakdown of Microsoft's September 2026 Patch Tuesday. We analyze the latest security updates and all critical CVEs .
2026-09-27 22:56 UTC
AI Forensic Analysis
Only Available for Registered Users. Sign in to view.
Raw JSON
The full cvelistV5 record. Download as CVE-2026-97594.json.
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"security/landlock/fs.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "379efd2ce8b26fd35feb13ccc2f671ff105a5052",
"status": "affected",
"version": "b91c3e4ea756b12b7d992529226edce1cfd854d7",
"versionType": "git"
},
{
"lessThan": "ba29c46ccfe3ebadfb8aa18149186c49f84b14f8",
"status": "affected",
"version": "b91c3e4ea756b12b7d992529226edce1cfd854d7",
"versionType": "git"
},
{
"lessThan": "2c6dc792538260a8087ac5b22c31b3b8e47c85d6",
"status": "affected",
"version": "b91c3e4ea756b12b7d992529226edce1cfd854d7",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"security/landlock/fs.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.19"
},
{
"lessThan": "5.19",
"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"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.53",
"versionStartIncluding": "5.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.7",
"versionStartIncluding": "5.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3-rc3",
"versionStartIncluding": "5.19",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nlandlock: Fix use-after-free of the source's parent directory\n\ncurrent_check_refer_path() reads old_dentry->d_parent without holding a\nreference nor a lock on it, and then dereferences it in\ncollect_domain_accesses() and in the audit record.\n\nA reference on a child does not pin its parent: __d_move() reassigns\ndentry->d_parent and drops the reference the child held on its former\nparent. hook_path_rename() is not affected because the rename path\ncalls lock_rename() before the hook, so the source cannot be reparented\nunder it. hook_path_link() has no such protection: filename_linkat()\nholds a reference on the source dentry but neither locks nor references\nits parent, so a concurrent rename(2) can reparent the source while\nsecurity_path_link() runs, and the former parent can then be removed and\nfreed while the hook walks it.\n\nA process can trigger this after entering a Landlock domain that handles\nat least one filesystem access right. The process can then race a\nlinkat(2) loop against rename(2) and rmdir(2):\n\n BUG: KASAN: slab-use-after-free in collect_domain_accesses+0x278/0x290\n Read of size 4 at addr ffff888160bd53f4 by task llrepro2/549\n collect_domain_accesses+0x278/0x290\n current_check_refer_path+0x952/0x1120\n security_path_link+0x1be/0x320\n filename_linkat+0x342/0x6d0\n __x64_sys_linkat+0xfa/0x150\n Freed by task 562:\n kmem_cache_free+0x139/0x4c0\n i_callback+0x4b/0x80\n rcu_core+0x7dc/0x10a0\n\nTake a reference on the dentry selected as the source parent, using\ndget() for the common-mount-root case and dget_parent() otherwise.\nRelease it after the hierarchy walk and synchronous audit logging.\n\n[mic: Clarify the caller, reachability, and reference handling]"
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The trigger is a local linkat(2) syscall: filename_linkat() -> security_path_link() -> hook_path_link() -> current_check_refer_path(), raced against local rename(2)/rmdir(2). No remote protocol supplies any of the input.\nAC:L - The attacker runs every side of the race: a linkat() loop on their own file, plus rename() to reparent the source and rmdir() to free the old parent, all in directories they create (e.g. /tmp). No condition outside the attacker's control is needed; the window can be retried at will.\nPR:L - An ordinary unprivileged user can enter a Landlock domain that handles any FS right (landlock_create_ruleset + landlock_restrict_self after PR_SET_NO_NEW_PRIVS, no capability needed); that makes landlock_get_applicable_subject() non-NULL and reaches the unpinned d_parent read.\nUI:N - The attacker's own syscalls on files and directories they own trigger the bug; no other user or administrator has to do anything.\nS:U - The corruption happens in kernel memory under the same kernel authority; exploiting it is standard local privilege escalation, not a crossing into a separate authority such as a hypervisor.\nC:H - collect_domain_accesses() dereferences the freed old_parent dentry and follows its d_parent/d_inode pointers into the Landlock inode blob via find_rule(). If the attacker reallocates the freed slab, they control pointers that the kernel then follows and reads.\nI:H - collect_domain_accesses() calls dget() and later dput() on the freed dentry. That writes the lockref inside the freed or reallocated object and can run dentry teardown on it, a write primitive that can lead to a double free or control-flow hijack.\nA:H - The KASAN report in the commit shows a slab use-after-free in collect_domain_accesses(). On production kernels the refcount changes on freed memory or the stale pointer walk can oops or panic the kernel."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-25T14:41:27.794Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/379efd2ce8b26fd35feb13ccc2f671ff105a5052"
},
{
"url": "https://git.kernel.org/stable/c/ba29c46ccfe3ebadfb8aa18149186c49f84b14f8"
},
{
"url": "https://git.kernel.org/stable/c/2c6dc792538260a8087ac5b22c31b3b8e47c85d6"
}
],
"title": "landlock: Fix use-after-free of the source's parent directory",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-97594",
"datePublished": "2026-09-25T10:22:10.548Z",
"dateReserved": "2026-09-24T16:01:01.157Z",
"dateUpdated": "2026-09-25T14:41:27.794Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}