{"api_version":"1","generated_at":"2026-08-22T05:31:13+00:00","cve":"CVE-2026-72381","urls":{"html":"https://cve.report/CVE-2026-72381","api":"https://cve.report/api/cve/CVE-2026-72381.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-72381","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-72381"},"summary":{"title":"ksmbd: fix use-after-free of fp->owner.name in durable handle owner check","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix use-after-free of fp->owner.name in durable handle owner check\n\nTwo concurrent SMB2 durable reconnects (DH2C/DHnC) on the same\npersistent_id race the fp->owner.name compare-read in\nksmbd_vfs_compare_durable_owner() against the kfree() in\nksmbd_reopen_durable_fd()'s reopen-success path. fp->owner.name is a\nstandalone kstrdup() buffer whose lifetime is independent of the fp\nrefcount, and the two sites share no lock: the compare reads the buffer\nwhile the reopen frees it, so the strcmp() can dereference freed memory.\n\nCommit 7ce4fc40018d (\"ksmbd: fix durable reconnect double-bind race in\nksmbd_reopen_durable_fd\") made the fp->conn claim atomic under\nglobal_ft.lock (closing the owner.name double-free and the ksmbd_file\nwrite-UAF), but the compare-read versus reopen-free pair was left\nunserialized.\n\n  BUG: KASAN: slab-use-after-free in strcmp+0x2c/0x80\n  Read of size 1 by task kworker\n    strcmp\n    ksmbd_vfs_compare_durable_owner\n    smb2_check_durable_oplock\n    smb2_open\n  Freed by task kworker:\n    kfree\n    ksmbd_reopen_durable_fd\n    smb2_open\n  Allocated by task kworker:\n    kstrdup\n    session_fd_check\n    smb2_session_logoff\n  The buggy address belongs to the cache kmalloc-8\n\nSerialize both sides of the race with fp->f_lock.  The global durable\nfile-table lock still protects the durable reconnect claim, but\nfp->owner.name is per-open state and does not need to block unrelated\ndurable table lookups or reconnects.  The teardown is left at its\nexisting location after the reopen-success point so that an __open_id()\nrollback still retains owner.name for a later legitimate reconnect to\nverify.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-15 06:22:11","updated_at":"2026-08-17 06:18:42"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"9.8","severity":"CRITICAL","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"9.8","severity":"CRITICAL","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"baseScore":9.8,"baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/38637163501fd9e2f684b8cd275d0db5d79f37c6","name":"https://git.kernel.org/stable/c/38637163501fd9e2f684b8cd275d0db5d79f37c6","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/ed98719be41389d416953b8ef9f07a07dfea6b2b","name":"https://git.kernel.org/stable/c/ed98719be41389d416953b8ef9f07a07dfea6b2b","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/93d4d46bf9d442a12ea87278049ec416962c627f","name":"https://git.kernel.org/stable/c/93d4d46bf9d442a12ea87278049ec416962c627f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/fb978d72052704c6b06c6b0f129fcd60b77169f5","name":"https://git.kernel.org/stable/c/fb978d72052704c6b06c6b0f129fcd60b77169f5","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/5a5ac2852cd326529d02f778bc1aa6184701f4d7","name":"https://git.kernel.org/stable/c/5a5ac2852cd326529d02f778bc1aa6184701f4d7","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-72381","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72381","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 712cdf917e77a6444ce3836874829d770db20ee6 fb978d72052704c6b06c6b0f129fcd60b77169f5 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected c7f0f0d01c88bdcb8b1694d7d321670013f7ed7d 93d4d46bf9d442a12ea87278049ec416962c627f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 00ce8d6789dae72d042a4522264964c72891ca37 5a5ac2852cd326529d02f778bc1aa6184701f4d7 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 49110a8ce654bbe56bef7c5e44cce31f4b102b8a ed98719be41389d416953b8ef9f07a07dfea6b2b git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 49110a8ce654bbe56bef7c5e44cce31f4b102b8a 38637163501fd9e2f684b8cd275d0db5d79f37c6 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected c908c853f304a4969b5aa10eba0b50350cc65b80 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.6.142 6.6.145 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.12.92 6.12.97 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.18.25 6.18.40 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 7.0.2 7.1 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 7.1","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.145 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.97 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.40 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.5 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"72381","cve":"CVE-2026-72381","epss":"0.006520000","percentile":"0.482820000","score_date":"2026-08-17","updated_at":"2026-08-18 00:11:47"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["fs/smb/server/vfs_cache.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"fb978d72052704c6b06c6b0f129fcd60b77169f5","status":"affected","version":"712cdf917e77a6444ce3836874829d770db20ee6","versionType":"git"},{"lessThan":"93d4d46bf9d442a12ea87278049ec416962c627f","status":"affected","version":"c7f0f0d01c88bdcb8b1694d7d321670013f7ed7d","versionType":"git"},{"lessThan":"5a5ac2852cd326529d02f778bc1aa6184701f4d7","status":"affected","version":"00ce8d6789dae72d042a4522264964c72891ca37","versionType":"git"},{"lessThan":"ed98719be41389d416953b8ef9f07a07dfea6b2b","status":"affected","version":"49110a8ce654bbe56bef7c5e44cce31f4b102b8a","versionType":"git"},{"lessThan":"38637163501fd9e2f684b8cd275d0db5d79f37c6","status":"affected","version":"49110a8ce654bbe56bef7c5e44cce31f4b102b8a","versionType":"git"},{"status":"affected","version":"c908c853f304a4969b5aa10eba0b50350cc65b80","versionType":"git"},{"lessThan":"6.6.145","status":"affected","version":"6.6.142","versionType":"semver"},{"lessThan":"6.12.97","status":"affected","version":"6.12.92","versionType":"semver"},{"lessThan":"6.18.40","status":"affected","version":"6.18.25","versionType":"semver"},{"lessThan":"7.1","status":"affected","version":"7.0.2","versionType":"semver"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["fs/smb/server/vfs_cache.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"7.1"},{"lessThan":"7.1","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.145","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.97","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.40","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.145","versionStartIncluding":"6.6.142","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.97","versionStartIncluding":"6.12.92","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.40","versionStartIncluding":"6.18.25","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.5","versionStartIncluding":"7.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2","versionStartIncluding":"7.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.0.2","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix use-after-free of fp->owner.name in durable handle owner check\n\nTwo concurrent SMB2 durable reconnects (DH2C/DHnC) on the same\npersistent_id race the fp->owner.name compare-read in\nksmbd_vfs_compare_durable_owner() against the kfree() in\nksmbd_reopen_durable_fd()'s reopen-success path. fp->owner.name is a\nstandalone kstrdup() buffer whose lifetime is independent of the fp\nrefcount, and the two sites share no lock: the compare reads the buffer\nwhile the reopen frees it, so the strcmp() can dereference freed memory.\n\nCommit 7ce4fc40018d (\"ksmbd: fix durable reconnect double-bind race in\nksmbd_reopen_durable_fd\") made the fp->conn claim atomic under\nglobal_ft.lock (closing the owner.name double-free and the ksmbd_file\nwrite-UAF), but the compare-read versus reopen-free pair was left\nunserialized.\n\n  BUG: KASAN: slab-use-after-free in strcmp+0x2c/0x80\n  Read of size 1 by task kworker\n    strcmp\n    ksmbd_vfs_compare_durable_owner\n    smb2_check_durable_oplock\n    smb2_open\n  Freed by task kworker:\n    kfree\n    ksmbd_reopen_durable_fd\n    smb2_open\n  Allocated by task kworker:\n    kstrdup\n    session_fd_check\n    smb2_session_logoff\n  The buggy address belongs to the cache kmalloc-8\n\nSerialize both sides of the race with fp->f_lock.  The global durable\nfile-table lock still protects the durable reconnect claim, but\nfp->owner.name is per-open state and does not need to block unrelated\ndurable table lookups or reconnects.  The teardown is left at its\nexisting location after the reopen-success point so that an __open_id()\nrollback still retains owner.name for a later legitimate reconnect to\nverify."}],"metrics":[{"cvssV3_1":{"baseScore":9.8,"baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},"scenarios":[{"lang":"en","value":"AV:N - The flaw is reached via ksmbd's in-kernel SMB2 server on TCP port 445; remote SMB2_CREATE durable-handle reconnect packets (DH2C/DHnC) traverse ksmbd_conn_handler_loop() -> smb2_check_user_session() -> smb2_open() -> parse_durable_handle_context() -> smb2_check_durable_oplock() / ksmbd_reopen_durable_fd().\nAC:L - The attacker controls both sides of the race by opening a durable handle, issuing SMB2_LOGOFF to preserve owner.name via session_fd_check(), then sending concurrent SMB2_CREATE durable reconnect requests for the same persistent_id from multiple connections; no timing or layout outside attacker control is required.\nPR:N - Exploitation requires only network reachability to ksmbd and valid SMB session credentials (guest or any share user) plus tree connect; no elevated host privileges, capabilities, or local access are needed beyond share-level SMB access obtainable through the protocol itself.\nUI:N - No victim user interaction is required beyond a server running ksmbd with durable handles enabled; the attacker programmatically drives the open, logoff, and concurrent reconnect SMB2 sequence over the network.\nS:U - Impact is confined to kernel heap memory corruption and privilege escalation within the same host security authority; this is not a VM escape, container boundary bypass, or IOMMU/DMA isolation break.\nC:H - strcmp() in ksmbd_vfs_compare_durable_owner() dereferences a freed kmalloc-8 fp->owner.name buffer while a concurrent ksmbd_reopen_durable_fd() kfree() runs; this slab use-after-free enables arbitrary kernel memory disclosure via heap reuse.\nI:H - Use-after-free of the standalone owner.name kstrdup buffer provides kernel heap corruption primitives; with heap grooming the freed slab can be reallocated for arbitrary kernel memory writes and control-flow hijacking.\nA:H - KASAN reports slab-use-after-free in strcmp on the owner.name buffer during concurrent smb2_open durable reconnects; the UAF can trigger kernel oops or panic on ksmbd worker threads and is repeatable by resending concurrent reconnect requests."}]}],"providerMetadata":{"dateUpdated":"2026-08-17T05:43:32.020Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/fb978d72052704c6b06c6b0f129fcd60b77169f5"},{"url":"https://git.kernel.org/stable/c/93d4d46bf9d442a12ea87278049ec416962c627f"},{"url":"https://git.kernel.org/stable/c/5a5ac2852cd326529d02f778bc1aa6184701f4d7"},{"url":"https://git.kernel.org/stable/c/ed98719be41389d416953b8ef9f07a07dfea6b2b"},{"url":"https://git.kernel.org/stable/c/38637163501fd9e2f684b8cd275d0db5d79f37c6"}],"title":"ksmbd: fix use-after-free of fp->owner.name in durable handle owner check","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-72381","datePublished":"2026-08-15T05:56:13.477Z","dateReserved":"2026-08-09T03:40:39.923Z","dateUpdated":"2026-08-17T05:43:32.020Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-15 06:22:11","lastModifiedDate":"2026-08-17 06:18:42","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":3.9,"impactScore":5.9}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"72381","Ordinal":"1","Title":"ksmbd: fix use-after-free of fp->owner.name in durable handle ow","CVE":"CVE-2026-72381","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"72381","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix use-after-free of fp->owner.name in durable handle owner check\n\nTwo concurrent SMB2 durable reconnects (DH2C/DHnC) on the same\npersistent_id race the fp->owner.name compare-read in\nksmbd_vfs_compare_durable_owner() against the kfree() in\nksmbd_reopen_durable_fd()'s reopen-success path. fp->owner.name is a\nstandalone kstrdup() buffer whose lifetime is independent of the fp\nrefcount, and the two sites share no lock: the compare reads the buffer\nwhile the reopen frees it, so the strcmp() can dereference freed memory.\n\nCommit 7ce4fc40018d (\"ksmbd: fix durable reconnect double-bind race in\nksmbd_reopen_durable_fd\") made the fp->conn claim atomic under\nglobal_ft.lock (closing the owner.name double-free and the ksmbd_file\nwrite-UAF), but the compare-read versus reopen-free pair was left\nunserialized.\n\n  BUG: KASAN: slab-use-after-free in strcmp+0x2c/0x80\n  Read of size 1 by task kworker\n    strcmp\n    ksmbd_vfs_compare_durable_owner\n    smb2_check_durable_oplock\n    smb2_open\n  Freed by task kworker:\n    kfree\n    ksmbd_reopen_durable_fd\n    smb2_open\n  Allocated by task kworker:\n    kstrdup\n    session_fd_check\n    smb2_session_logoff\n  The buggy address belongs to the cache kmalloc-8\n\nSerialize both sides of the race with fp->f_lock.  The global durable\nfile-table lock still protects the durable reconnect claim, but\nfp->owner.name is per-open state and does not need to block unrelated\ndurable table lookups or reconnects.  The teardown is left at its\nexisting location after the reopen-success point so that an __open_id()\nrollback still retains owner.name for a later legitimate reconnect to\nverify.","Type":"Description","Title":"ksmbd: fix use-after-free of fp->owner.name in durable handle ow"}]}}}