HIGH
binder Transaction UAF
CVE-2026-23184
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: binder: fix UAF in binder_netlink_report() Oneway transactions sent to frozen targets via binder_proc_transaction() return a BR_TRANSACTION_PENDING_FROZEN error but they are still treated as successful since the target is expected to thaw at some point. It is then not safe to access 't' after BR_TRANSACTION_PENDING_FROZEN errors as the transaction could have been consumed by the now thawed target. This is the case for binder_netlink_report() which derreferences 't' after a pending frozen error, as pointed out by the following KASAN report: ================================================================== BUG: KASAN: slab-use-after-free in binder_netlink_report.isra.0+0x694/0x6c8 Read of size 8 at addr ffff00000f98ba38 by task binder-util/522 CPU: 4 UID: 0 PID: 522 Comm: binder-util Not tainted 6.19.0-rc6-00015-gc03e9c42ae8f #1 PREEMPT Hardware name: linux,dummy-virt (DT) Call trace: binder_netlink_report.isra.0+0x694/0x6c8 binder_transaction+0x66e4/0x79b8 binder_thread_write+0xab4/0x4440 binder_ioctl+0x1fd4/0x2940 [...] Allocated by task 522: __kmalloc_cache_noprof+0x17c/0x50c binder_transaction+0x584/0x79b8 binder_thread_write+0xab4/0x4440 binder_ioctl+0x1fd4/0x2940 [...] Freed by task 488: kfree+0x1d0/0x420 binder_free_transaction+0x150/0x234 binder_thread_read+0x2d08/0x3ce4 binder_ioctl+0x488/0x2940 [...] ================================================================== Instead, make a transaction copy so the data can be safely accessed by binder_netlink_report() after a pending frozen error. While here, add a comment about not using t->buffer in binder_netlink_report().
02KernelScan AI Analysis
Risk summary
An attacker with local access could potentially trigger memory corruption by exploiting the race condition between transaction processing and target thawing in Android's Binder IPC system. This could lead to system crashes or potentially code execution with kernel privileges.
Vulnerability analysis
Summary: Use-after-free vulnerability in Android Binder's netlink reporting mechanism when handling frozen transaction targets.
Root Cause: The binder_netlink_report() function dereferences a transaction pointer 't' after binder_proc_transaction() returns BR_TRANSACTION_PENDING_FROZEN. In this scenario, the target process may thaw and consume/free the transaction concurrently, making the pointer invalid.
Attack Surface: Local attack surface through the Android Binder IPC mechanism. Requires ability to send oneway transactions to frozen targets via binder ioctl interface. The vulnerability is triggered when netlink transaction reporting is enabled and a race condition occurs between transaction processing and target process thawing.
Fix Mechanism: The patch creates a local copy of the transaction structure before calling binder_proc_transaction(). This ensures binder_netlink_report() can safely access transaction data even after the original transaction is freed by a thawed target process. A comment is also added warning about unsafe access to t->buffer.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.18 | 6.18.10 | a6050dedb6f1 |
| mainline | 6.19 | 5e8a3d015442 |