CVE-2023-53088
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
02/05/2025
Last modified:
05/05/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
mptcp: fix UaF in listener shutdown<br />
<br />
As reported by Christoph after having refactored the passive<br />
socket initialization, the mptcp listener shutdown path is prone<br />
to an UaF issue.<br />
<br />
BUG: KASAN: use-after-free in _raw_spin_lock_bh+0x73/0xe0<br />
Write of size 4 at addr ffff88810cb23098 by task syz-executor731/1266<br />
<br />
CPU: 1 PID: 1266 Comm: syz-executor731 Not tainted 6.2.0-rc59af4eaa31c1f6c00c8f1e448ed99a45c66340dd5 #6<br />
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014<br />
Call Trace:<br />
<br />
dump_stack_lvl+0x6e/0x91<br />
print_report+0x16a/0x46f<br />
kasan_report+0xad/0x130<br />
kasan_check_range+0x14a/0x1a0<br />
_raw_spin_lock_bh+0x73/0xe0<br />
subflow_error_report+0x6d/0x110<br />
sk_error_report+0x3b/0x190<br />
tcp_disconnect+0x138c/0x1aa0<br />
inet_child_forget+0x6f/0x2e0<br />
inet_csk_listen_stop+0x209/0x1060<br />
__mptcp_close_ssk+0x52d/0x610<br />
mptcp_destroy_common+0x165/0x640<br />
mptcp_destroy+0x13/0x80<br />
__mptcp_destroy_sock+0xe7/0x270<br />
__mptcp_close+0x70e/0x9b0<br />
mptcp_close+0x2b/0x150<br />
inet_release+0xe9/0x1f0<br />
__sock_release+0xd2/0x280<br />
sock_close+0x15/0x20<br />
__fput+0x252/0xa20<br />
task_work_run+0x169/0x250<br />
exit_to_user_mode_prepare+0x113/0x120<br />
syscall_exit_to_user_mode+0x1d/0x40<br />
do_syscall_64+0x48/0x90<br />
entry_SYSCALL_64_after_hwframe+0x72/0xdc<br />
<br />
The msk grace period can legitly expire in between the last<br />
reference count dropped in mptcp_subflow_queue_clean() and<br />
the later eventual access in inet_csk_listen_stop()<br />
<br />
After the previous patch we don&#39;t need anymore special-casing<br />
msk listener socket cleanup: the mptcp worker will process each<br />
of the unaccepted msk sockets.<br />
<br />
Just drop the now unnecessary code.<br />
<br />
Please note this commit depends on the two parent ones:<br />
<br />
mptcp: refactor passive socket initialization<br />
mptcp: use the workqueue to destroy unaccepted sockets