From: "Cen Zhang (Microsoft)" <cenzhang@linux.microsoft.com>
To: Chuck Lever <cel@kernel.org>,
Trond Myklebust <trondmy@kernel.org>,
Anna Schumaker <anna@kernel.org>,
Jeff Layton <jlayton@kernel.org>
Cc: NeilBrown <neil@brown.name>,
Olga Kornievskaia <okorniev@redhat.com>,
Dai Ngo <Dai.Ngo@oracle.com>, Tom Talpey <tom@talpey.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
linux-nfs@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
AutonomousCodeSecurity@microsoft.com,
Francis Perron <francis@akrites.dev>,
tgopinath@linux.microsoft.com, kys@microsoft.com,
Cen Zhang <cenzhang@linux.microsoft.com>
Subject: [PATCH] sunrpc: reject AUTH_TLS on backchannel to prevent NULL-deref in svcauth_tls_accept
Date: Thu, 24 Sep 2026 21:52:51 -0400 [thread overview]
Message-ID: <20260925015251.21168-1-cenzhang@linux.microsoft.com> (raw)
svcauth_tls_accept() dereferences rqstp->rq_xprt unconditionally when
it tests xprt->xpt_ops->xpo_handshake, but on the NFSv4.1 backchannel
path (svc_process_bc), rq_xprt is NULL because no server-side transport
exists. A malicious NFS server can send AUTH_TLS (flavor 7) on the
backchannel to trigger a NULL pointer dereference in the client kernel.
general protection fault, probably for non-canonical address
0xdffffc0000000001
KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
RIP: 0010:svcauth_tls_accept+0x258/0x820
svc_authenticate+0x2ab/0x3e0
svc_process_common+0x8ff/0x1cf0
svc_process_bc+0x5a8/0xbb0
nfs4_callback_svc+0xcf/0x170
Reject AUTH_TLS early when rq_xprt is NULL, since TLS transport
upgrade is meaningless on the backchannel which has no svc_xprt.
Fixes: 74aaf96feaca ("SUNRPC: Teach server to recognize RPC_AUTH_TLS")
Reported-by: AutonomousCodeSecurity@microsoft.com
Reviewed-by: Francis Perron <francis@akrites.dev>
Signed-off-by: Cen Zhang (Microsoft) <cenzhang@linux.microsoft.com>
Assisted-by: GitHub-Copilot:claude-opus-4.6
---
net/sunrpc/svcauth_unix.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
index 31a1bc60a5f6..42149139e58d 100644
--- a/net/sunrpc/svcauth_unix.c
+++ b/net/sunrpc/svcauth_unix.c
@@ -1129,6 +1129,12 @@ svcauth_tls_accept(struct svc_rqst *rqstp)
return SVC_DENIED;
}
+ /* AUTH_TLS is not valid on backchannel (rq_xprt is NULL) */
+ if (!xprt) {
+ rqstp->rq_auth_stat = rpc_autherr_badcred;
+ return SVC_DENIED;
+ }
+
/* Signal that mapping to nobody uid/gid is required */
cred->cr_uid = INVALID_UID;
cred->cr_gid = INVALID_GID;
--
2.55.0
reply other threads:[~2026-09-25 1:53 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260925015251.21168-1-cenzhang@linux.microsoft.com \
--to=cenzhang@linux.microsoft.com \
--cc=AutonomousCodeSecurity@microsoft.com \
--cc=Dai.Ngo@oracle.com \
--cc=anna@kernel.org \
--cc=cel@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=francis@akrites.dev \
--cc=horms@kernel.org \
--cc=jlayton@kernel.org \
--cc=kuba@kernel.org \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neil@brown.name \
--cc=netdev@vger.kernel.org \
--cc=okorniev@redhat.com \
--cc=pabeni@redhat.com \
--cc=tgopinath@linux.microsoft.com \
--cc=tom@talpey.com \
--cc=trondmy@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®