summaryrefslogtreecommitdiff
path: root/include/trace
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2017-09-18 18:37:03 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-10-05 07:44:00 (GMT)
commitbfe9d7b8e0f2d4a4bc8298e25597983ac662dac0 (patch)
treed3dc17f5e3147fb40511188409ca314311cd4d3c /include/trace
parent47e8bd1965fc2bcee69a62a5cc2d5336b2e79835 (diff)
downloadlinux-bfe9d7b8e0f2d4a4bc8298e25597983ac662dac0.tar.xz
KEYS: prevent creating a different user's keyrings
commit 237bbd29f7a049d310d907f4b2716a7feef9abf3 upstream. It was possible for an unprivileged user to create the user and user session keyrings for another user. For example: sudo -u '#3000' sh -c 'keyctl add keyring _uid.4000 "" @u keyctl add keyring _uid_ses.4000 "" @u sleep 15' & sleep 1 sudo -u '#4000' keyctl describe @u sudo -u '#4000' keyctl describe @us This is problematic because these "fake" keyrings won't have the right permissions. In particular, the user who created them first will own them and will have full access to them via the possessor permissions, which can be used to compromise the security of a user's keys: -4: alswrv-----v------------ 3000 0 keyring: _uid.4000 -5: alswrv-----v------------ 3000 0 keyring: _uid_ses.4000 Fix it by marking user and user session keyrings with a flag KEY_FLAG_UID_KEYRING. Then, when searching for a user or user session keyring by name, skip all keyrings that don't have the flag set. Fixes: 69664cf16af4 ("keys: don't generate user and user session keyrings unless they're accessed") Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/trace')
0 files changed, 0 insertions, 0 deletions