The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: dhowells@redhat.com
Cc: Simon Horman <horms@kernel.org>,
	netdev@vger.kernel.org, marc.dionne@auristor.com,
	kuba@kernel.org, davem@davemloft.net, edumazet@google.com,
	pabeni@redhat.com, linux-afs@lists.infradead.org,
	linux-kernel@vger.kernel.org, stable@kernel.org
Subject: Re: [PATCH net v3 11/14] afs: Create a server appdata key
Date: Mon, 20 Jul 2026 15:53:56 +0100	[thread overview]
Message-ID: <20260720145356.195862-1-horms@kernel.org> (raw)
In-Reply-To: <20260713081022.2186481-12-dhowells@redhat.com>

This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
https://sashiko.dev/#/patchset/20260713081022.2186481-8-dhowells@redhat.com?part=11
---
--- Patch [11]: [PATCH net v3 11/14] afs: Create a server appdata key ---
commit dc88fd6982b57fe321cbc39b2f060f5b1d06bb8e
Author: David Howells <dhowells@redhat.com>

afs: Create a server appdata key

This commit creates an appdata key for each fileserver the AFS filesystem
talks to with RxGK. It attaches the key to the afs_server record to be
used for generating application data in response to CHALLENGE packets.

Link: https://sashiko.dev/#/patchset/20260624163819.3017002-1-dhowells%40redhat.com

> diff --git a/fs/afs/cm_security.c b/fs/afs/cm_security.c
> index 103168c70dd4d..36907a04efd0b 100644
> --- a/fs/afs/cm_security.c
> +++ b/fs/afs/cm_security.c
[ ... ]
> @@ -23,6 +25,236 @@ static int afs_create_yfs_cm_token(struct sk_buff *challenge,
> +	/* struct RXGK_Token {
> +	 *	rxgk_key		K0;
> +	 *	RXGK_Level		level;
> +	 *	rxgkTime		starttime;
> +	 *	afs_int32		lifetime;
> +	 *	afs_int32		bytelife;
> +	 *	rxgkTime		expirationtime;
> +	 *	struct RXGK_AuthName	identities<>;
> +	 * };
> +	 */
> +	toksize = keysize + 8 + 4 + 4 + 8 + xdr_len_object(authsize);

[Severity: High]
Does this toksize calculation omit the 4 bytes required for the level field? 

It looks like the sizes added up correspond to starttime (8), lifetime (4),
bytelife (4), and expirationtime (8).

If the level field is omitted, toksize will be 4 bytes too small.

[ ... ]
> +	*xdr++ = htonl(RXRPC_SECURITY_ENCRYPT);	/* token.level */
> +	*xdr++ = htonl(0);			/* token.starttime */
> +	*xdr++ = htonl(0);			/* " */
> +	*xdr++ = htonl(0);			/* token.lifetime */
> +	*xdr++ = htonl(0);			/* token.bytelife */
> +	*xdr++ = htonl(0);			/* token.expirationtime */
> +	*xdr++ = htonl(0);			/* " */
[ ... ]
> +	xdr = encbase + xdr_round_up(encsize);
> +
> +	if ((unsigned long)xdr - (unsigned long)appdata != adatasize)
> +		pr_err("Appdata size incorrect %lx != %zx\n",
> +		       (unsigned long)xdr - (unsigned long)appdata, adatasize);

[Severity: High]
Can this manual advance of the xdr pointer hide the token size mismatch?

Because xdr is advanced based on the miscalculated encsize rather than the
actual number of fields written, it appears this will bypass the adatasize
sanity check on the next line.

[ ... ]
> +	ret = crypto_krb5_encrypt(token_krb5, aead, &sg, 1, encsize, offset, toksize, false);

[Severity: High]
Since toksize is smaller than the actual plaintext being constructed, will
this corrupt the token?

When crypto_krb5_encrypt() executes, it seems it will only process the
truncated toksize bytes of plaintext. This would leave the trailing 4 bytes
of the serialized XDR unencrypted and overwritten by the appended Kerberos
checksum. 

The fileserver would then reject the appdata token when XDR parsing fails.

  reply	other threads:[~2026-07-20 14:54 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-13  8:10 [PATCH net v3 00/14] rxrpc: Fix CHALLENGE packet handling David Howells
2026-07-13  8:10 ` [PATCH net v3 01/14] rxrpc: Fix sendmsg to not return an error if last packet queued David Howells
2026-07-13  8:10 ` [PATCH net v3 02/14] afs: Fix UAF when sending a message David Howells
2026-07-13  8:10 ` [PATCH net v3 03/14] afs: Fix afs_fs_fetch_data() to set call->async David Howells
2026-07-13  8:10 ` [PATCH net v3 04/14] rxrpc: Fix packet encryption error handling David Howells
2026-07-20 14:52   ` Simon Horman
2026-07-13  8:10 ` [PATCH net v3 05/14] rxrpc: Fix update of call->tx_pending without holding lock David Howells
2026-07-13  8:10 ` [PATCH net v3 06/14] rxrpc: Fix generation of notifications after call completion David Howells
2026-07-13  8:10 ` [PATCH net v3 07/14] afs: Simplify call refcounting David Howells
2026-07-20 14:52   ` Simon Horman
2026-07-13  8:10 ` [PATCH net v3 08/14] afs: Make afs_put_call() take trace argument David Howells
2026-07-13  8:10 ` [PATCH net v3 09/14] afs: Fix UAF in afs_make_call() David Howells
2026-07-13  8:10 ` [PATCH net v3 10/14] keys: Add refcounting to user-defined key type payload David Howells
2026-07-13  8:10 ` [PATCH net v3 11/14] afs: Create a server appdata key David Howells
2026-07-20 14:53   ` Simon Horman [this message]
2026-07-13  8:10 ` [PATCH net v3 12/14] rxrpc: Pass appdata key to rxrpc_call and thence to rxrpc_bundle David Howells
2026-07-20 14:54   ` Simon Horman
2026-07-13  8:10 ` [PATCH net v3 13/14] rxrpc: Fix CHALLENGE packet overqueuing and simplify RESPONSE generation David Howells
2026-07-20 14:54   ` Simon Horman
2026-07-13  8:10 ` [PATCH net v3 14/14] rxrpc: Remove OOB challenge/response code David Howells
2026-07-20 14:56   ` Simon Horman

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=20260720145356.195862-1-horms@kernel.org \
    --to=horms@kernel.org \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-afs@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.dionne@auristor.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=stable@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