smb: client: fix in-place encryption corruption in SMB2_write()
- 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 6.6.130, 6.12.78, 6.18.19, 6.19.9
- 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 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.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 · fixed in 438e77435aee2894d5edf90be5c87004a57f6258; From 026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 · fixed in 52327268224fb9ccc7ecfbbdfdfff54b6e93c518; From 026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 · fixed in 92e64f1852f455f57d0850989e57c30d7fac7d95; From 026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 · fixed in aea5e37388a080361110ab5790f57ae0af383650; From 026e93dc0a3eefb0be060bcb9ecd8d7a7fd5c398 · fixed in d78840a6a38d312dc1a51a65317bb67e46f0b929
- Linux Linux
4.11
- KernelLinux
From 4.11.0 · fixed in 6.6.130; From 6.7.0 · fixed in 6.12.78; From 6.13.0 · fixed in 6.18.19; From 6.19.0 · fixed in 6.19.9