mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-11-10 20:48:12 +00:00
ceph: fix off-by-one NUL termination in decode_encrypted_symlink()
decode_encrypted_symlink() allocates enclen + 1 bytes but writes the NUL
terminator at sym[declen + 1] instead of sym[declen]. A malicious MDS can
report symlink_len == 0 for an encrypted inode, and base64_decode() returns
0 for a zero-length input, so the store lands one byte past a kmalloc(1)
allocation.
Terminate at sym[declen], which is always within the allocation.
BUG: KASAN: slab-out-of-bounds in ceph_fill_inode (fs/ceph/inode.c:996)
Write of size 1 at addr ffff888020aad361 by task kworker/0:0/9
Workqueue: ceph-msgr ceph_con_workfn
Call Trace:
kasan_report (mm/kasan/report.c:595)
ceph_fill_inode (fs/ceph/inode.c:996 fs/ceph/inode.c:1277)
ceph_fill_trace (fs/ceph/inode.c:1716)
ceph_con_process_message (net/ceph/messenger.c:1424)
ceph_con_v1_try_read (net/ceph/messenger_v1.c:1430)
ceph_con_workfn (net/ceph/messenger.c:1576)
...
The buggy address belongs to the object at ffff888020aad360
which belongs to the cache kmalloc-8 of size 8
The buggy address is located 0 bytes to the right of
allocated 1-byte region [ffff888020aad360, ffff888020aad361)
Fixes: 79f2f6ad87 ("ceph: create symlinks with encrypted and base64-encoded targets")
Reported-by: co+b0f93e29183ce737@bugs.sh
Assisted-by: LLM
Signed-off-by: Xiang Mei <xmei5@asu.edu>
Reviewed-by: Alex Markuze <amarkuze@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
cdbb60f00f
commit
4da259ea8b
1 changed files with 1 additions and 1 deletions
Loading…
Add table
Add a link
Reference in a new issue