{"id":"CVE-2026-74522","state":"PUBLISHED","title":"ksmbd: fix use-after-free in __close_file_table_ids()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix use-after-free in __close_file_table_ids()\n\nA ksmbd_file can remain alive after logical close while another session\nholds a temporary reference obtained through ksmbd_lookup_fd_inode().\nksmbd_close_fd() currently marks the file closed and drops the idr-owned\nreference, but leaves the pointer published in the closing session's idr\nuntil the final reference is dropped.\n\nIf the foreign holder performs the final ksmbd_fd_put(), __put_fd_final()\nsupplies the foreign session's file table to __ksmbd_close_fd(). The object\nis then freed without being removed from its owner's idr, and the owner\nsession later dereferences the stale pointer during file-table teardown.\n\nRemove the volatile id from the owner's idr while ksmbd_close_fd() still\nholds that table's lock, and clear volatile_id before dropping\nthe idr-owned reference. A later foreign final put then only performs\nphysical destruction and cannot remove the object from the wrong table.","publishedAt":"2026-08-15T12:27:39.945Z","updatedAt":"2026-08-19T16:38:25.036Z","severity":{"score":8.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"19bfd90d5aaf63217735d81964585c5306158e5f","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"67aaec2a1fdce3e1dde46c45b5d1ef8cf22f65cd","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"0c3918c2cee62ec6c9de8d5c73ebfe6f833961ac","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"9be4a66f019ea90bd9deca70511f4f9ffebf5c6f","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"cffbdc86393b0235383a20c8c59bc32f16036459","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"e7188199eff46a636f3436356f0aae039be6dd66","versionType":"git"},{"version":"df30cbfd3d8a70e61ce59f63ce5ed2261799ac10","status":"affected","versionType":"git"},{"version":"aaf1d5ebb358f546414965b39da90107a7ca7ce5","status":"affected","versionType":"git"},{"version":"5.15.38","status":"affected","lessThan":"5.16","versionType":"semver"},{"version":"5.17.6","status":"affected","lessThan":"5.18","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/server/vfs_cache.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.18","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.18","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.151","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.103","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.44","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.8","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/server/vfs_cache.c"]}],"references":["https://git.kernel.org/stable/c/19bfd90d5aaf63217735d81964585c5306158e5f","https://git.kernel.org/stable/c/67aaec2a1fdce3e1dde46c45b5d1ef8cf22f65cd","https://git.kernel.org/stable/c/0c3918c2cee62ec6c9de8d5c73ebfe6f833961ac","https://git.kernel.org/stable/c/9be4a66f019ea90bd9deca70511f4f9ffebf5c6f","https://git.kernel.org/stable/c/cffbdc86393b0235383a20c8c59bc32f16036459","https://git.kernel.org/stable/c/e7188199eff46a636f3436356f0aae039be6dd66"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:58.252Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/74xxx/CVE-2026-74522.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-74522","state":"PUBLISHED","datePublished":"2026-08-15T12:27:39.945Z","dateUpdated":"2026-08-19T16:38:25.036Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-15T05:44:03.911Z"},"containers":{"cna":{"title":"ksmbd: fix use-after-free in __close_file_table_ids()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix use-after-free in __close_file_table_ids()\n\nA ksmbd_file can remain alive after logical close while another session\nholds a temporary reference obtained through ksmbd_lookup_fd_inode().\nksmbd_close_fd() currently marks the file closed and drops the idr-owned\nreference, but leaves the pointer published in the closing session's idr\nuntil the final reference is dropped.\n\nIf the foreign holder performs the final ksmbd_fd_put(), __put_fd_final()\nsupplies the foreign session's file table to __ksmbd_close_fd(). The object\nis then freed without being removed from its owner's idr, and the owner\nsession later dereferences the stale pointer during file-table teardown.\n\nRemove the volatile id from the owner's idr while ksmbd_close_fd() still\nholds that table's lock, and clear volatile_id before dropping\nthe idr-owned reference. A later foreign final put then only performs\nphysical destruction and cannot remove the object from the wrong table."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"19bfd90d5aaf63217735d81964585c5306158e5f","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"67aaec2a1fdce3e1dde46c45b5d1ef8cf22f65cd","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"0c3918c2cee62ec6c9de8d5c73ebfe6f833961ac","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"9be4a66f019ea90bd9deca70511f4f9ffebf5c6f","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"cffbdc86393b0235383a20c8c59bc32f16036459","versionType":"git"},{"version":"8510a043d334ecdf83d4604782f288db6bf21d60","status":"affected","lessThan":"e7188199eff46a636f3436356f0aae039be6dd66","versionType":"git"},{"version":"df30cbfd3d8a70e61ce59f63ce5ed2261799ac10","status":"affected","versionType":"git"},{"version":"aaf1d5ebb358f546414965b39da90107a7ca7ce5","status":"affected","versionType":"git"},{"version":"5.15.38","status":"affected","lessThan":"5.16","versionType":"semver"},{"version":"5.17.6","status":"affected","lessThan":"5.18","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/server/vfs_cache.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.18","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.18","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.151","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.103","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.44","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.8","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/server/vfs_cache.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/19bfd90d5aaf63217735d81964585c5306158e5f"},{"url":"https://git.kernel.org/stable/c/67aaec2a1fdce3e1dde46c45b5d1ef8cf22f65cd"},{"url":"https://git.kernel.org/stable/c/0c3918c2cee62ec6c9de8d5c73ebfe6f833961ac"},{"url":"https://git.kernel.org/stable/c/9be4a66f019ea90bd9deca70511f4f9ffebf5c6f"},{"url":"https://git.kernel.org/stable/c/cffbdc86393b0235383a20c8c59bc32f16036459"},{"url":"https://git.kernel.org/stable/c/e7188199eff46a636f3436356f0aae039be6dd66"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:N - The bug is in ksmbd, the in-kernel SMB server reached remotely over TCP port 445 via SMB2 CREATE/CLOSE/SET_INFO rename and session teardown requests.\nAC:L - An attacker controls both sides of the race by issuing concurrent SMB2 CLOSE and rename operations on the same share, then logoff or disconnect; no victim-dependent timing or memory layout is required.\nPR:L - Exploitation requires a valid authenticated SMB session and share access to open, close, and rename files; it is not reachable on pre-authentication negotiate/echo paths.\nUI:N - No end-user action is required beyond the attacker driving SMB protocol operations on their own client connection(s).\nS:U - Impact is confined to kernel memory corruption and privilege escalation on the SMB server host; it does not cross a VM, container, or IOMMU security boundary.\nC:H - Use-after-free of a freed ksmbd_file slab object during session file-table teardown enables reading attacker-influenced heap contents and building arbitrary kernel memory read primitives.\nI:H - The UAF corrupts kernel heap metadata and ksmbd_file fields (pointers, list heads), enabling heap grooming and arbitrary write or control-flow hijack for code execution as root.\nA:H - The stale IDR entry is dereferenced during __close_file_table_ids() on logoff, tree disconnect, or connection teardown, causing kernel oops/panic and repeatable remote denial of service."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-19T16:38:25.036Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.18","versionEndExcluding":"6.1.183"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.18","versionEndExcluding":"6.6.151"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.18","versionEndExcluding":"6.12.103"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.18","versionEndExcluding":"6.18.44"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.18","versionEndExcluding":"7.1.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.18","versionEndExcluding":"7.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15.38"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17.6"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}