CVE-2026-23400: rust_binder: call set_notification_done() without proc lock
In the Linux kernel, the following vulnerability has been resolved:
rust_binder: call set_notification_done() without proc lock
Consider the following sequence of events on a death listener:
1. The remote process dies and sends a BR_DEAD_BINDER message.
2. The local process invokes the BC_CLEAR_DEATH_NOTIFICATION command.
3. The local process then invokes the BC_DEAD_BINDER_DONE.
Then, the kernel will reply to the BC_DEAD_BINDER_DONE command with a
BR_CLEAR_DEATH_NOTIFICATION_DONE reply using push_work_if_looper().
However, this can result in a deadlock if the current thread is not a
looper. This is because dead_binder_done() still holds the proc lock
during set_notification_done(), which called push_work_if_looper().
Normally, push_work_if_looper() takes the thread lock, which is fine to
take under the proc lock. But if the current thread is not a looper,
then it falls back to delivering the reply to the process work queue,
which involves taking the proc lock. Since the proc lock is already
held, this is a deadlock.
Fix this by releasing the proc lock during set_notification_done(). It
was not intentional that it was held during that function to begin with.
I don't think this ever happens in Android because BC_DEAD_BINDER_DONE
is only invoked in response to BR_DEAD_BINDER messages, and the kernel
always delivers BR_DEAD_BINDER to a looper. So there's no scenario where
Android userspace will call BC_DEAD_BINDER_DONE on a non-looper thread.
Security readout for executives and security teams
Plain-English summary
A Linux kernel rust_binder bug can deadlock a process when Binder death-notification cleanup is handled on a non-looper thread. The kernel note says this is not expected in normal Android userspace, lowering apparent practical urgency. Supplied public data has no CVSS, CWE, impact scope, or exploitation evidence.
Executive priority
Track and remediate through normal kernel patch management unless your environment depends heavily on Binder-enabled custom kernels. Escalate only if a vendor confirms reachable denial-of-service impact in your deployed configuration.
Technical view
dead_binder_done() held the proc lock while calling set_notification_done(). If push_work_if_looper() delivers BR_CLEAR_DEATH_NOTIFICATION_DONE through the process work queue, it tries to take the same proc lock, causing deadlock. Stable commits release the proc lock around set_notification_done().
Likely exposure
Exposure appears limited to Linux kernels containing rust_binder code in the affected version set. Prioritize systems using Binder or Android-derived kernel components. The bundle’s version data is incomplete and should be checked against actual kernel build commits.
Exploitation context
No active exploitation is cited, and KEV is false. The source describes a specific ordering of Binder death-notification messages causing deadlock, with maintainers stating they do not think it occurs in Android userspace.
Researcher notes
Evidence supports a kernel deadlock fixed by lock-scope adjustment. The maintainer’s note limits Android reachability but does not prove all non-Android Binder users are safe. CVSS, CWE, and exploitability details are absent.
Mitigation direction
Identify Linux kernel builds containing rust_binder and the affected commits.
Apply vendor or stable-kernel updates containing the referenced fixes.
For appliances or Android-derived builds, request vendor confirmation of backport status.
Monitor CVE and kernel stable advisories for severity or exploitability updates.
Validation and detection
Map deployed kernel versions and commits to the listed stable fix commits.
Check whether rust_binder is enabled or present in shipped kernels.
Review vendor advisories for affected branches and backport identifiers.
Confirm regression tests cover Binder death-notification cleanup paths where applicable.
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.
cve · low confidence lookup
CVE-2026-23400 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
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.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Mar 29, 2026, 12:55 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.