]> 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>
Sat, 8 Dec 2018 12:05:10 +0000 (13:05 +0100)
commit06e925920d4de3da2114876bc607447e929604af
tree351d4ecfe78e58b464ee897e2e6315250f45d62e
parent2e901ea8b448a7f5899104a3917ecca2a5e8ab7f
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: Greg Kroah-Hartman <gregkh@linuxfoundation.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