]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
libceph: add authorizer challenge
authorIlya Dryomov <idryomov@gmail.com>
Fri, 27 Jul 2018 17:18:34 +0000 (19:18 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 5 Dec 2018 18:41:10 +0000 (19:41 +0100)
commit3fd73c8a71f299e30359a63add1f33e3fd834831
tree916d8138fe00ac73a8c2eebbcab62c610d5bef50
parenta55056e1523990e1ef9d70531ffaf27fd1ddff55
libceph: add authorizer challenge

commit 6daca13d2e72bedaaacfc08f873114c9307d5aea upstream.

When a client authenticates with a service, an authorizer is sent with
a nonce to the service (ceph_x_authorize_[ab]) and the service responds
with a mutation of that nonce (ceph_x_authorize_reply).  This lets the
client verify the service is who it says it is but it doesn't protect
against a replay: someone can trivially capture the exchange and reuse
the same authorizer to authenticate themselves.

Allow the service to reject an initial authorizer with a random
challenge (ceph_x_authorize_challenge).  The client then has to respond
with an updated authorizer proving they are able to decrypt the
service's challenge and that the new authorizer was produced for this
specific connection instance.

The accepting side requires this challenge and response unconditionally
if the client side advertises they have CEPHX_V2 feature bit.

This addresses CVE-2018-1128.

Link: http://tracker.ceph.com/issues/24836
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ceph/mds_client.c
include/linux/ceph/auth.h
include/linux/ceph/messenger.h
include/linux/ceph/msgr.h
net/ceph/auth.c
net/ceph/auth_x.c
net/ceph/auth_x_protocol.h
net/ceph/messenger.c
net/ceph/osd_client.c