CVE-2024-56555: binder: fix OOB in binder_add_freeze_work()
In the Linux kernel, the following vulnerability has been resolved:
binder: fix OOB in binder_add_freeze_work()
In binder_add_freeze_work() we iterate over the proc->nodes with the
proc->inner_lock held. However, this lock is temporarily dropped to
acquire the node->lock first (lock nesting order). This can race with
binder_deferred_release() which removes the nodes from the proc->nodes
rbtree and adds them into binder_dead_nodes list. This leads to a broken
iteration in binder_add_freeze_work() as rb_next() will use data from
binder_dead_nodes, triggering an out-of-bounds access:
==================================================================
BUG: KASAN: global-out-of-bounds in rb_next+0xfc/0x124
Read of size 8 at addr ffffcb84285f7170 by task freeze/660
CPU: 8 UID: 0 PID: 660 Comm: freeze Not tainted 6.11.0-07343-ga727812a8d45 #18
Hardware name: linux,dummy-virt (DT)
Call trace:
rb_next+0xfc/0x124
binder_add_freeze_work+0x344/0x534
binder_ioctl+0x1e70/0x25ac
__arm64_sys_ioctl+0x124/0x190
The buggy address belongs to the variable:
binder_dead_nodes+0x10/0x40
[...]
==================================================================
This is possible because proc->nodes (rbtree) and binder_dead_nodes
(list) share entries in binder_node through a union:
struct binder_node {
[...]
union {
struct rb_node rb_node;
struct hlist_node dead_node;
};
Fix the race by checking that the proc is still alive. If not, simply
break out of the iteration.
Security readout for executives and security teams
Plain-English summary
A race in the Linux Binder subsystem can cause an out-of-bounds kernel memory access when process freezing overlaps with Binder cleanup. A local, low-privileged user may be able to trigger serious confidentiality, integrity, or availability impact. The supplied evidence does not establish remote reachability or exploitation in the wild.
Executive priority
Treat as a high-priority kernel update for systems where untrusted users or workloads can access Binder. Remote-only servers without relevant local access are less urgent, but should still follow normal supported-kernel patching. There is no supplied evidence of active exploitation, so emergency incident response is not justified solely by this CVE.
Technical view
binder_add_freeze_work() temporarily releases proc->inner_lock while iterating proc->nodes. Concurrent binder_deferred_release() can move nodes to binder_dead_nodes, whose list linkage shares a union with the red-black-tree linkage. Subsequent rb_next() then reads invalid structure data, causing an out-of-bounds access. The fix stops iteration when the process is no longer alive.
Likely exposure
Exposure is limited to Linux systems containing the affected Binder code and permitting local access to the relevant Binder interface. The bundle identifies affected 6.12-era versions, including 6.12.4 and 6.13 data, but its range encoding is ambiguous. Confirm exact affected and fixed releases with the kernel or distribution vendor.
Exploitation context
The CVSS vector describes a local attack requiring low privileges, low complexity, and no user interaction, with potentially high impact. CISA KEV status is false, and no supplied source reports active exploitation. The evidence demonstrates a KASAN-detected crash condition but does not establish a practical privilege-escalation exploit.
Researcher notes
The central condition is a lock-order-driven race between Binder freeze-work iteration and deferred process release. The red-black-tree and dead-list nodes overlap within a union, so moving an entry invalidates the iterator's structural assumptions. Source evidence confirms an out-of-bounds read; broader exploitability and reliable impact beyond the reported KASAN failure remain unproven.
Mitigation direction
Install a vendor-supported kernel containing the referenced upstream fix.
Confirm the distribution's fixed package version against its security advisory.
Restrict untrusted local access where immediate kernel updates are unavailable.
Prioritize Binder-enabled, multi-user, or locally exposed systems.
Validation and detection
Record the running kernel version and distribution package revision.
Check vendor advisories for CVE-2024-56555 and backport status.
Verify whether the kernel build includes either referenced fix commit.
Confirm patched systems booted into the updated kernel.
Review kernel logs for Binder-related KASAN or out-of-bounds reports.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-125: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-125 · source CWE mapping
Out-of-bounds Read
Out-of-bounds Read represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.