CVE-2023-53072 Information
Description
In the Linux kernel the following vulnerability has been resolved:
mptcp: use the workqueue to destroy unaccepted sockets
Christoph reported a UaF at token lookup time after having refactored the passive socket initialization part:
BUG: KASAN: use-after-free in __token_bucket_busy+0x253/0x260 Read of size 4 at addr ffff88810698d5b0 by task syz-executor653/3198
CPU: 1 PID: 3198 Comm: syz-executor653 Not tainted 6.2.0-rc59af4eaa31c1f6c00c8f1e448ed99a45c66340dd5 6
Hardware name: QEMU Standard PC (i440FX + PIIX 1996) BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
Call Trace:
We need to properly clean-up all the paired MPTCP-level resources and be sure to release the msk last even when the unaccepted subflow is destroyed by the TCP internals via inet_child_forget().
We can re-use the existing MPTCP_WORK_CLOSE_SUBFLOW infra explicitly checking that for the critical scenario: the closed subflow is the MPC one the msk is not accepted and eventually going through full cleanup.
With such change __mptcp_destroy_sock() is always called on msk sockets even on accepted ones. We don’t need anymore to transiently drop one sk reference at msk clone time.
Please note this commit depends on the parent one:
mptcp: refactor passive socket initialization
Reference
https://git.kernel.org/stable/c/2827f099b3fb9a59263c997400e9182f5d423e84 https://git.kernel.org/stable/c/804cf487fb0031f3c74755b78d8663333f0ba636 https://git.kernel.org/stable/c/b6985b9b82954caa53f862d6059d06c0526254f0
Share on: