CVE-2022-49939
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
18/06/2025
Last modified:
18/06/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
binder: fix UAF of ref->proc caused by race condition<br />
<br />
A transaction of type BINDER_TYPE_WEAK_HANDLE can fail to increment the<br />
reference for a node. In this case, the target proc normally releases<br />
the failed reference upon close as expected. However, if the target is<br />
dying in parallel the call will race with binder_deferred_release(), so<br />
the target could have released all of its references by now leaving the<br />
cleanup of the new failed reference unhandled.<br />
<br />
The transaction then ends and the target proc gets released making the<br />
ref->proc now a dangling pointer. Later on, ref->node is closed and we<br />
attempt to take spin_lock(&ref->proc->inner_lock), which leads to the<br />
use-after-free bug reported below. Let&#39;s fix this by cleaning up the<br />
failed reference on the spot instead of relying on the target to do so.<br />
<br />
==================================================================<br />
BUG: KASAN: use-after-free in _raw_spin_lock+0xa8/0x150<br />
Write of size 4 at addr ffff5ca207094238 by task kworker/1:0/590<br />
<br />
CPU: 1 PID: 590 Comm: kworker/1:0 Not tainted 5.19.0-rc8 #10<br />
Hardware name: linux,dummy-virt (DT)<br />
Workqueue: events binder_deferred_func<br />
Call trace:<br />
dump_backtrace.part.0+0x1d0/0x1e0<br />
show_stack+0x18/0x70<br />
dump_stack_lvl+0x68/0x84<br />
print_report+0x2e4/0x61c<br />
kasan_report+0xa4/0x110<br />
kasan_check_range+0xfc/0x1a4<br />
__kasan_check_write+0x3c/0x50<br />
_raw_spin_lock+0xa8/0x150<br />
binder_deferred_func+0x5e0/0x9b0<br />
process_one_work+0x38c/0x5f0<br />
worker_thread+0x9c/0x694<br />
kthread+0x188/0x190<br />
ret_from_fork+0x10/0x20
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/06e5b43ca4dab06a92bf4c2f33766e6fb11b880a
- https://git.kernel.org/stable/c/229f47603dd306bc0eb1a831439adb8e48bb0eae
- https://git.kernel.org/stable/c/30d0901b307f27d36b2655fb3048cf31ee0e89c0
- https://git.kernel.org/stable/c/603a47f2ae56bf68288784d3c0a8c5b8e0a827ed
- https://git.kernel.org/stable/c/9629f2dfdb1dad294b468038ff8e161e94d0b609
- https://git.kernel.org/stable/c/a0e44c64b6061dda7e00b7c458e4523e2331b739
- https://git.kernel.org/stable/c/c2a4b5dc8fa71af73bab704d0cac42ac39767ed6