mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
dc8289f912
When smb1 mount fails, KASAN detect slab-out-of-bounds in
init_smb2_rsp_hdr like the following one.
For smb1 negotiate(56bytes) , init_smb2_rsp_hdr() for smb2 is called.
The issue occurs while handling smb1 negotiate as smb2 server operations.
Add smb server operations for smb1 (get_cmd_val, init_rsp_hdr,
allocate_rsp_buf, check_user_session) to handle smb1 negotiate so that
smb2 server operation does not handle it.
[ 411.400423] CIFS: VFS: Use of the less secure dialect vers=1.0 is
not recommended unless required for access to very old servers
[ 411.400452] CIFS: Attempting to mount \\192.168.45.139\homes
[ 411.479312] ksmbd: init_smb2_rsp_hdr : 492
[ 411.479323] ==================================================================
[ 411.479327] BUG: KASAN: slab-out-of-bounds in
init_smb2_rsp_hdr+0x1e2/0x1f4 [ksmbd]
[ 411.479369] Read of size 16 at addr ffff888488ed0734 by task kworker/14:1/199
[ 411.479379] CPU: 14 PID: 199 Comm: kworker/14:1 Tainted: G
OE 6.1.21 #3
[ 411.479386] Hardware name: ASUSTeK COMPUTER INC. Z10PA-D8
Series/Z10PA-D8 Series, BIOS 3801 08/23/2019
[ 411.479390] Workqueue: ksmbd-io handle_ksmbd_work [ksmbd]
[ 411.479425] Call Trace:
[ 411.479428] <TASK>
[ 411.479432] dump_stack_lvl+0x49/0x63
[ 411.479444] print_report+0x171/0x4a8
[ 411.479452] ? kasan_complete_mode_report_info+0x3c/0x200
[ 411.479463] ? init_smb2_rsp_hdr+0x1e2/0x1f4 [ksmbd]
[ 411.479497] kasan_report+0xb4/0x130
[ 411.479503] ? init_smb2_rsp_hdr+0x1e2/0x1f4 [ksmbd]
[ 411.479537] kasan_check_range+0x149/0x1e0
[ 411.479543] memcpy+0x24/0x70
[ 411.479550] init_smb2_rsp_hdr+0x1e2/0x1f4 [ksmbd]
[ 411.479585] handle_ksmbd_work+0x109/0x760 [ksmbd]
[ 411.479616] ? _raw_spin_unlock_irqrestore+0x50/0x50
[ 411.479624] ? smb3_encrypt_resp+0x340/0x340 [ksmbd]
[ 411.479656] process_one_work+0x49c/0x790
[ 411.479667] worker_thread+0x2b1/0x6e0
[ 411.479674] ? process_one_work+0x790/0x790
[ 411.479680] kthread+0x177/0x1b0
[ 411.479686] ? kthread_complete_and_exit+0x30/0x30
[ 411.479692] ret_from_fork+0x22/0x30
[ 411.479702] </TASK>
Fixes:
|
||
---|---|---|
.. | ||
mgmt | ||
asn1.c | ||
asn1.h | ||
auth.c | ||
auth.h | ||
connection.c | ||
connection.h | ||
crypto_ctx.c | ||
crypto_ctx.h | ||
glob.h | ||
Kconfig | ||
ksmbd_netlink.h | ||
ksmbd_spnego_negtokeninit.asn1 | ||
ksmbd_spnego_negtokentarg.asn1 | ||
ksmbd_work.c | ||
ksmbd_work.h | ||
Makefile | ||
misc.c | ||
misc.h | ||
ndr.c | ||
ndr.h | ||
nterr.h | ||
ntlmssp.h | ||
oplock.c | ||
oplock.h | ||
server.c | ||
server.h | ||
smb2misc.c | ||
smb2ops.c | ||
smb2pdu.c | ||
smb2pdu.h | ||
smb_common.c | ||
smb_common.h | ||
smbacl.c | ||
smbacl.h | ||
smbfsctl.h | ||
smbstatus.h | ||
transport_ipc.c | ||
transport_ipc.h | ||
transport_rdma.c | ||
transport_rdma.h | ||
transport_tcp.c | ||
transport_tcp.h | ||
unicode.c | ||
unicode.h | ||
uniupr.h | ||
vfs_cache.c | ||
vfs_cache.h | ||
vfs.c | ||
vfs.h | ||
xattr.h |