8.1
/ 10
HIGH
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:H
Description
In the Linux kernel, the following vulnerability has been resolved:
smb: client: fix OOB read in smb2_ioctl_query_info QUERY_INFO path
smb2_ioctl_query_info() has two response-copy branches: PASSTHRU_FSCTL
and the default QUERY_INFO path. The QUERY_INFO branch clamps
qi.input_buffer_length to the server-reported OutputBufferLength and then
copies qi.input_buffer_length bytes from qi_rsp->Buffer to userspace, but
it never verifies that the flexible-array payload actually fits within
rsp_iov[1].iov_len.
A malicious server can return OutputBufferLength larger than the actual
QUERY_INFO response, causing copy_to_user() to walk past the response
buffer and expose adjacent kernel heap to userspace.
Guard the QUERY_INFO copy with a bounds check on the actual Buffer
payload. Use struct_size(qi_rsp, Buffer, qi.input_buffer_length)
rather than an open-coded addition so the guard cannot overflow on
32-bit builds.
smb: client: fix OOB read in smb2_ioctl_query_info QUERY_INFO path
smb2_ioctl_query_info() has two response-copy branches: PASSTHRU_FSCTL
and the default QUERY_INFO path. The QUERY_INFO branch clamps
qi.input_buffer_length to the server-reported OutputBufferLength and then
copies qi.input_buffer_length bytes from qi_rsp->Buffer to userspace, but
it never verifies that the flexible-array payload actually fits within
rsp_iov[1].iov_len.
A malicious server can return OutputBufferLength larger than the actual
QUERY_INFO response, causing copy_to_user() to walk past the response
buffer and expose adjacent kernel heap to userspace.
Guard the QUERY_INFO copy with a bounds check on the actual Buffer
payload. Use struct_size(qi_rsp, Buffer, qi.input_buffer_length)
rather than an open-coded addition so the guard cannot overflow on
32-bit builds.
Basic Information
ID
CVE-2026-31708
Source
Linux
Published
May 1, 2026 at 13:56
Modified
May 3, 2026 at 05:45
Affected Product
Vendor
Linux
Product
Linux
Version
f5778c398713692a16150ae96e5c8270bab8399f
Affected Versions
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux 5.1
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux f5778c398713692a16150ae96e5c8270bab8399f
Linux Linux 5.1
References
- git.kernel.org /stable/c/a34d456934fe42e4da5d2cc07787bf418bee99c6
- git.kernel.org /stable/c/ac2f14e4705d020f04e806efa0d49ab8dc2b145f
- git.kernel.org /stable/c/078fae8f50adebb903ccf2252b44391324571e78
- git.kernel.org /stable/c/85fd46ee26a11841c670449508025965f61ce131
- git.kernel.org /stable/c/a58c5af19ff0d6f44f6e9fe31e33a2c92223f77e