Linux: smb: client: fix OOB struct field reads in move_smb2_ea_to_cifs()
What fixes it
- 61812323c037a94e2e7f0db7ee740c34b126bffeLinuxCVE List
- 34a3942e787b9c59758115bd65fe1ec89d68c7a4LinuxCVE List
- 13efcd37a9b3d6ffa1579c3dda3e29c893ed9bcaLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
smb: client: fix OOB struct field reads in move_smb2_ea_to_cifs()
In move_smb2_ea_to_cifs(), the while (src_size > 0) loop condition is insufficient. It allows iteration to continue even if the remaining src_size is too small to contain a complete smb2_ea_info structure. Consequently, reads of ea_name_length and ea_value_length can occur out-of-bounds.
Fix this by ensuring src_size >= sizeof(*src) before attempting to read any structure fields. Additionally, reject any next_entry_offset that is smaller than sizeof(*src) or that would advance the pointer beyond the available buffer.
Note that for calls where the server returns a malformed EA list, the error returned to userspace changes from -ENODATA (getxattr) or -ERANGE (listxattr) to -EIO. This correctly signals a server protocol error rather than misleadingly indicating "attribute not present" or "output buffer too small".
Text from CVE List
Affected versions 12
- Linuxaffected: 95907fea4fd8ccc736e0a428e52159b4d42b9958 before 61812323c037a94e2e7f0db7ee740c34b126bffeCVE List
- Linuxaffected: 95907fea4fd8ccc736e0a428e52159b4d42b9958 before d3546cecbf81d98bf3b472d341f981eb48c04f47CVE List
- Linuxaffected: 95907fea4fd8ccc736e0a428e52159b4d42b9958 before 34a3942e787b9c59758115bd65fe1ec89d68c7a4CVE List
- Linuxaffected: 95907fea4fd8ccc736e0a428e52159b4d42b9958 before 13efcd37a9b3d6ffa1579c3dda3e29c893ed9bcaCVE List
- Linuxaffected: 95907fea4fd8ccc736e0a428e52159b4d42b9958 before eeb5ef6083e1cefa2ef75041b5597ff228b8d7bbCVE List
- Linuxaffected: 4.14CVE List
- Linuxunaffected: all versions before 4.14CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.54 through 6.18.*CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/61812323c037a94e2e7f0db7ee740c34b126bffeReferencevia CVE List
- git.kernel.org/stable/c/d3546cecbf81d98bf3b472d341f981eb48c04f47Referencevia CVE List
- git.kernel.org/stable/c/34a3942e787b9c59758115bd65fe1ec89d68c7a4Referencevia CVE List
- git.kernel.org/stable/c/13efcd37a9b3d6ffa1579c3dda3e29c893ed9bcaReferencevia CVE List
- git.kernel.org/stable/c/eeb5ef6083e1cefa2ef75041b5597ff228b8d7bbReferencevia CVE List