Commit d2ae4e91 authored by David Howells's avatar David Howells
Browse files

rxrpc: Don't leak the service-side session key to userspace



Don't let someone reading a service-side rxrpc-type key get access to the
session key that was exchanged with the client.  The server application
will, at some point, need to be able to read the information in the ticket,
but this probably shouldn't include the key material.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 12da59fc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ struct rxkad_key {
 */
struct rxrpc_key_token {
	u16	security_index;		/* RxRPC header security index */
	bool	no_leak_key;		/* Don't copy the key to userspace */
	struct rxrpc_key_token *next;	/* the next token in the list */
	union {
		struct rxkad_key *kad;
+6 −2
Original line number Diff line number Diff line
@@ -579,6 +579,7 @@ static long rxrpc_read(const struct key *key,
		case RXRPC_SECURITY_RXKAD:
			toksize += 8 * 4;	/* viceid, kvno, key*2, begin,
						 * end, primary, tktlen */
			if (!token->no_leak_key)
				toksize += RND(token->kad->ticket_len);
			break;

@@ -654,6 +655,9 @@ static long rxrpc_read(const struct key *key,
			ENCODE(token->kad->start);
			ENCODE(token->kad->expiry);
			ENCODE(token->kad->primary_flag);
			if (token->no_leak_key)
				ENCODE(0);
			else
				ENCODE_DATA(token->kad->ticket_len, token->kad->ticket);
			break;