sunrpc: fix client side handling of tls alerts
authorOlga Kornievskaia <okorniev@redhat.com>
Thu, 31 Jul 2025 18:00:56 +0000 (14:00 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 3 Aug 2025 19:45:47 +0000 (12:45 -0700)
commitcc5d59081fa26506d02de2127ab822f40d88bc5a
tree7942f2017cd6f0482169d46937675b1251fb5145
parent533210f23936a482010016ac3f57995046c58565
sunrpc: fix client side handling of tls alerts

A security exploit was discovered in NFS over TLS in tls_alert_recv
due to its assumption that there is valid data in the msghdr's
iterator's kvec.

Instead, this patch proposes the rework how control messages are
setup and used by sock_recvmsg().

If no control message structure is setup, kTLS layer will read and
process TLS data record types. As soon as it encounters a TLS control
message, it would return an error. At that point, NFS can setup a kvec
backed control buffer and read in the control message such as a TLS
alert. Scott found that a msg iterator can advance the kvec pointer
as a part of the copy process thus we need to revert the iterator
before calling into the tls_alert_recv.

Fixes: dea034b963c8 ("SUNRPC: Capture CMSG metadata on client-side receive")
Suggested-by: Trond Myklebust <trondmy@hammerspace.com>
Suggested-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
Link: https://lore.kernel.org/r/20250731180058.4669-3-okorniev@redhat.com
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/xprtsock.c