smb: client: fix overflow in passthrough ioctl bounds check
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.5, 5.10.261, 5.15.212, 6.1.178, 6.6.145, and 3 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: smb: client: fix overflow in passthrough ioctl bounds check smb2_ioctl_query_info() validates the PASSTHRU_FSCTL response payload before copying it to userspace. The payload offset and length both come from 32-bit fields. The bounds check currently adds OutputOffset and qi.input_buffer_length directly, so the addition can wrap in 32-bit arithmetic before the result is compared against the response buffer length. A malicious server can use a large OutputOffset and a small OutputCount to make the wrapped sum pass the bounds check. The later copy_to_user() then reads from io_rsp + OutputOffset, outside the response buffer. Use size_add() for the offset plus length check so overflow is treated as out of bounds.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in 175357ee0c596cb82054650dfa32fda51ad35aaa; From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in dbd126539c098dba3159ce7d34b10b2daddcbd0f; From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in 63feb687e89a3a52a31e6e01764117cc500f1974; From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in 160045fc943f6c46b227644261252c8a22b8a87a; From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in b30771b69eafae750afb7385fbcc3d77ed3f3670; From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in 1627e7d5c9b09721a141d07cedb178882f1ded67; From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in 1a638c55f2db6cb2296e5e3138015dd8fd9d4aa9; From 2b1116bbe898aefdf584838448c6869f69851e0f · fixed in a4f27ad055392fa164f5649e89a3637b033c5fcc; From 5.4.69 · fixed in 5.5
- Linux Linux
5.5
- KernelLinux
From 5.5.0 · fixed in 5.10.261; From 5.11.0 · fixed in 5.15.212; From 5.16.0 · fixed in 6.1.178; From 6.2.0 · fixed in 6.6.145; From 6.7.0 · fixed in 6.12.97; From 6.13.0 · fixed in 6.18.40; From 6.19.0 · fixed in 7.1.5
References 8
git.kernel.org
- stable/c/175357ee0c596cb82054650dfa32fda51ad35aaa
- stable/c/dbd126539c098dba3159ce7d34b10b2daddcbd0f
- stable/c/63feb687e89a3a52a31e6e01764117cc500f1974
- stable/c/160045fc943f6c46b227644261252c8a22b8a87a
- stable/c/b30771b69eafae750afb7385fbcc3d77ed3f3670
- stable/c/1627e7d5c9b09721a141d07cedb178882f1ded67
- stable/c/1a638c55f2db6cb2296e5e3138015dd8fd9d4aa9
- stable/c/a4f27ad055392fa164f5649e89a3637b033c5fcc