]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
libceph: Fix potential out-of-bounds access in __ceph_x_decrypt()
authorRaphael Zimmer <raphael.zimmer@tu-ilmenau.de>
Tue, 28 Apr 2026 12:15:46 +0000 (14:15 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 11 May 2026 08:39:22 +0000 (10:39 +0200)
commit821365487aa58d06bda65c676ba215d506ba9768
tree01b352d9b6584d8fda916f3ff6e2a2ef6ff94633
parent0c22d9511cbde746622f8e4c11aaa63fe76d45f9
libceph: Fix potential out-of-bounds access in __ceph_x_decrypt()

In __ceph_x_decrypt(), a part of the buffer p is interpreted as a
ceph_x_encrypt_header, and the magic field of this struct is accessed.
This happens without any guarantee that the buffer is large enough to
hold this struct. The function parameter ciphertext_len represents the
length of the ciphertext to decrypt and is guaranteed to be at most the
remaining size of the allocated buffer p. However, this value is not
necessarily greater than sizeof(ceph_x_encrypt_header). E.g., a message
frame of type FRAME_TAG_AUTH_REPLY_MORE, that is just as long to hold
the ciphertext at its end with a ciphertext_len of 8 or less, can
trigger an out-of-bounds memory access when accessing hdr->magic.

This patch fixes the issue by adding a check to ensure that the
decrypted plaintext in the buffer is large enough to represent at least
the ceph_x_encrypt_header.

Cc: stable@vger.kernel.org
Signed-off-by: Raphael Zimmer <raphael.zimmer@tu-ilmenau.de>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/auth_x.c