{"id":"CVE-2026-98405","state":"PUBLISHED","title":"smb: client: fix missing iov bounds check in parse_posix_sids()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nsmb: client: fix missing iov bounds check in parse_posix_sids()\n\nIn parse_posix_sids(), sidsbuf_end is calculated using the server-supplied\nout_len without being validated against the actual length of the received\niov (iov_len).\n\nIf a server provides an inflated out_len, sidsbuf_end will point past the\nend of the iov. This defeats the bounds guards in posix_info_sid_size(),\nallowing out-of-bounds reads into adjacent kernel memory.\n\nFix this by rejecting responses where the calculated sidsbuf_end would\nexceed the received iov boundaries or cause pointer wraparound.","publishedAt":"2026-10-14T13:27:40.589Z","updatedAt":"2026-10-24T14:08:44.159Z","severity":{"score":8.1,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"a90f37e3d7acfd9824f162830583bbf7846fe252","status":"affected","lessThan":"d91b9a3b2b38e5ac1b51e9e5b23fe53ad7b49644","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"b862996e5105be1293da9cdc85da77b76021c3bd","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"2f8ed71aaaba3bc8b19cd9930cc62e63e142b299","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"eac6917a42899aad0617bbf04798c5dd946a1fe5","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"b09d092eb24ad0110f16a9b7c1ed5d2a0c1733dc","versionType":"git"},{"version":"6.6.32","status":"affected","lessThan":"6.6.158","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/smb2inode.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.8","versionType":"semver"},{"version":"6.6.158","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.112","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.54","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.8","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/smb2inode.c"]}],"references":["https://git.kernel.org/stable/c/d91b9a3b2b38e5ac1b51e9e5b23fe53ad7b49644","https://git.kernel.org/stable/c/b862996e5105be1293da9cdc85da77b76021c3bd","https://git.kernel.org/stable/c/2f8ed71aaaba3bc8b19cd9930cc62e63e142b299","https://git.kernel.org/stable/c/eac6917a42899aad0617bbf04798c5dd946a1fe5","https://git.kernel.org/stable/c/b09d092eb24ad0110f16a9b7c1ed5d2a0c1733dc"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:43.249Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/98xxx/CVE-2026-98405.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-98405","state":"PUBLISHED","datePublished":"2026-10-14T13:27:40.589Z","dateUpdated":"2026-10-24T14:08:44.159Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:25:14.347Z"},"containers":{"cna":{"title":"smb: client: fix missing iov bounds check in parse_posix_sids()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nsmb: client: fix missing iov bounds check in parse_posix_sids()\n\nIn parse_posix_sids(), sidsbuf_end is calculated using the server-supplied\nout_len without being validated against the actual length of the received\niov (iov_len).\n\nIf a server provides an inflated out_len, sidsbuf_end will point past the\nend of the iov. This defeats the bounds guards in posix_info_sid_size(),\nallowing out-of-bounds reads into adjacent kernel memory.\n\nFix this by rejecting responses where the calculated sidsbuf_end would\nexceed the received iov boundaries or cause pointer wraparound."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"a90f37e3d7acfd9824f162830583bbf7846fe252","status":"affected","lessThan":"d91b9a3b2b38e5ac1b51e9e5b23fe53ad7b49644","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"b862996e5105be1293da9cdc85da77b76021c3bd","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"2f8ed71aaaba3bc8b19cd9930cc62e63e142b299","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"eac6917a42899aad0617bbf04798c5dd946a1fe5","versionType":"git"},{"version":"858e74876c5cbff1dfd5bace99e32fbce2abd4b5","status":"affected","lessThan":"b09d092eb24ad0110f16a9b7c1ed5d2a0c1733dc","versionType":"git"},{"version":"6.6.32","status":"affected","lessThan":"6.6.158","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/smb2inode.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.8","versionType":"semver"},{"version":"6.6.158","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.112","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.54","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.8","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/smb2inode.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/d91b9a3b2b38e5ac1b51e9e5b23fe53ad7b49644"},{"url":"https://git.kernel.org/stable/c/b862996e5105be1293da9cdc85da77b76021c3bd"},{"url":"https://git.kernel.org/stable/c/2f8ed71aaaba3bc8b19cd9930cc62e63e142b299"},{"url":"https://git.kernel.org/stable/c/eac6917a42899aad0617bbf04798c5dd946a1fe5"},{"url":"https://git.kernel.org/stable/c/b09d092eb24ad0110f16a9b7c1ed5d2a0c1733dc"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:H","baseScore":8.1,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:N - A malicious SMB server supplies the malformed OutputBufferLength and SID payload in an SMB2 QUERY_INFO response over TCP; cifs_root_iget() or cifs_getattr() reaches smb2_query_path_info(), smb2_compound_op(), then parse_posix_sids().\nAC:L - The server can place a valid SID header at the iov boundary and set num_subauth so parse_posix_sids() copies up to 68 bytes beyond it. Once the POSIX mount exists, triggering is deterministic and requires no race or uncontrollable heap state.\nPR:N - Session setup and tree connect precede compound_send_recv(), but the attacker is the SMB server endpoint and needs no account or capability on the client to choose the QUERY_INFO response.\nUI:R - The victim must mount the attacker-controlled share with the posix option, which sets ctx->linux_ext; cifs_read_super() then calls cifs_root_iget(), which immediately issues the vulnerable POSIX metadata query.\nS:U - The out-of-bounds access occurs in the SMB client and affects the same host kernel executing parse_posix_sids(); it crosses no VM, IOMMU, or sandbox security boundary.\nC:H - An inflated end pointer defeats posix_info_sid_size() bounds checks, allowing each owner or group SID memcpy() to consume up to 68 bytes of adjacent kernel memory and pass those bytes into SID/idmap processing.\nI:N - posix_info_sid_size() caps num_subauth at 15, so each memcpy() remains within its destination struct smb_sid; the defect performs out-of-bounds reads but provides no out-of-bounds write or control-flow modification.\nA:H - By ending the received iov at a SID header while claiming a larger OutputBufferLength, the server makes posix_info_sid_size() and memcpy() access beyond the receive allocation, which can fault and oops or panic the client kernel."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-24T14:08:44.159Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.32","versionEndExcluding":"6.6.158"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"6.12.112"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"6.18.54"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"7.2.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}