Description
In the Linux kernel, the following vulnerability has been resolved: smb: client: fix in-place encryption corruption in SMB2_write() SMB2_write() places write payload in iov[1..n] as part of rq_iov. smb3_init_transform_rq() pointer-shares rq_iov, so crypt_message() encrypts iov[1] in-place, replacing the original plaintext with ciphertext. On a replayable error, the retry sends the same iov[1] which now contains ciphertext instead of the original data, resulting in corruption. The corruption is most likely to be observed when connections are unstable, as reconnects trigger write retries that re-send the already-encrypted data. This affects SFU mknod, MF symlinks, etc. On kernels before 6.10 (prior to the netfs conversion), sync writes also used this path and were similarly affected. The async write path wasn't unaffected as it uses rq_iter which gets deep-copied. Fix by moving the write payload into rq_iter via iov_iter_kvec(), so smb3_init_transform_rq() deep-copies it before encryption.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 to < 438e77435aee2894d5edf90be5c87004a57f6258affected026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 to < 52327268224fb9ccc7ecfbbdfdfff54b6e93c518affected026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 to < 92e64f1852f455f57d0850989e57c30d7fac7d95affected026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 to < aea5e37388a080361110ab5790f57ae0af383650affected026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 to < d78840a6a38d312dc1a51a65317bb67e46f0b929affected
Linux Linux
Default version status: affected
4.11affected0 to < 4.11unaffected6.6.130 to ≤ 6.6.*unaffected6.12.78 to ≤ 6.12.*unaffected6.18.19 to ≤ 6.18.*unaffected6.19.9 to ≤ 6.19.*unaffected7.0 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/438e77435aee2894d5edf90be5c87004a57f6258 ↗
- https://git.kernel.org/stable/c/52327268224fb9ccc7ecfbbdfdfff54b6e93c518 ↗
- https://git.kernel.org/stable/c/92e64f1852f455f57d0850989e57c30d7fac7d95 ↗
- https://git.kernel.org/stable/c/aea5e37388a080361110ab5790f57ae0af383650 ↗
- https://git.kernel.org/stable/c/d78840a6a38d312dc1a51a65317bb67e46f0b929 ↗