CVE-2023-52438: binder: fix use-after-free in shinker's callback
In the Linux kernel, the following vulnerability has been resolved:
binder: fix use-after-free in shinker's callback
The mmap read lock is used during the shrinker's callback, which means
that using alloc->vma pointer isn't safe as it can race with munmap().
As of commit dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in
munmap") the mmap lock is downgraded after the vma has been isolated.
I was able to reproduce this issue by manually adding some delays and
triggering page reclaiming through the shrinker's debug sysfs. The
following KASAN report confirms the UAF:
==================================================================
BUG: KASAN: slab-use-after-free in zap_page_range_single+0x470/0x4b8
Read of size 8 at addr ffff356ed50e50f0 by task bash/478
CPU: 1 PID: 478 Comm: bash Not tainted 6.6.0-rc5-00055-g1c8b86a3799f-dirty #70
Hardware name: linux,dummy-virt (DT)
Call trace:
zap_page_range_single+0x470/0x4b8
binder_alloc_free_page+0x608/0xadc
__list_lru_walk_one+0x130/0x3b0
list_lru_walk_node+0xc4/0x22c
binder_shrink_scan+0x108/0x1dc
shrinker_debugfs_scan_write+0x2b4/0x500
full_proxy_write+0xd4/0x140
vfs_write+0x1ac/0x758
ksys_write+0xf0/0x1dc
__arm64_sys_write+0x6c/0x9c
Allocated by task 492:
kmem_cache_alloc+0x130/0x368
vm_area_alloc+0x2c/0x190
mmap_region+0x258/0x18bc
do_mmap+0x694/0xa60
vm_mmap_pgoff+0x170/0x29c
ksys_mmap_pgoff+0x290/0x3a0
__arm64_sys_mmap+0xcc/0x144
Freed by task 491:
kmem_cache_free+0x17c/0x3c8
vm_area_free_rcu_cb+0x74/0x98
rcu_core+0xa38/0x26d4
rcu_core_si+0x10/0x1c
__do_softirq+0x2fc/0xd24
Last potentially related work creation:
__call_rcu_common.constprop.0+0x6c/0xba0
call_rcu+0x10/0x1c
vm_area_free+0x18/0x24
remove_vma+0xe4/0x118
do_vmi_align_munmap.isra.0+0x718/0xb5c
do_vmi_munmap+0xdc/0x1fc
__vm_munmap+0x10c/0x278
__arm64_sys_munmap+0x58/0x7c
Fix this issue by performing instead a vma_lookup() which will fail to
find the vma that was isolated before the mmap lock downgrade. Note that
this option has better performance than upgrading to a mmap write lock
which would increase contention. Plus, mmap_write_trylock() has been
recently removed anyway.
Security readout for executives and security teams
Plain-English summary
This Linux kernel flaw can cause memory to be accessed after it has been freed during Binder memory reclamation. A local, low-privileged user could potentially compromise confidentiality, integrity, and availability. The source bundle rates it CVSS 7.8, but does not establish active exploitation.
Executive priority
Treat this as a high-priority kernel update for systems where untrusted users can run local code and reach Binder. Internet-facing status alone does not determine risk because the stated attack vector is local. Validate affected builds promptly, then deploy supported kernel updates through normal change controls.
Technical view
A race between Binder's shrinker callback and munmap() can leave binder_alloc_free_page() using an unsafe VMA pointer after isolation and lock downgrade, producing a use-after-free. The upstream correction performs vma_lookup() while holding the mmap read lock, preventing use of the isolated VMA.
Likely exposure
Exposure requires an affected Linux kernel and local access to the relevant Binder functionality. The supplied version entries do not form clear ranges, so exact exposure should be determined using kernel build details and distribution guidance rather than version-string assumptions.
Exploitation context
The CVSS vector indicates local access, low complexity, low privileges, and no user interaction, with potentially high confidentiality, integrity, and availability impact. The bundle marks KEV false and provides no evidence of exploitation in the wild; that does not prove exploitation is absent.
Researcher notes
The supplied affected-version list mixes release numbers, a zero entry, and repeated commit identifiers, limiting precise range interpretation. The reproduced KASAN trace supports the underlying use-after-free. Assess reachability through Binder configuration and permissions, and use downstream vendor backport status instead of assuming upstream version equivalence.
Mitigation direction
Install a vendor-supported kernel containing the applicable upstream stable fix.
Reboot into the updated kernel; installing a package alone may leave the vulnerable kernel running.
If patching is delayed, consult distribution guidance because the sources identify no separate workaround.
Prioritize systems permitting untrusted local users to access Binder functionality.
Validation and detection
Record the running kernel version, build, architecture, and distribution package revision.
Determine whether Binder support is present and accessible to untrusted local users.
Match the exact build against distribution advisories and the listed upstream stable fixes.
After rebooting, confirm the active kernel is the intended patched build.
Review kernel and KASAN logs for relevant use-after-free or Binder memory-reclamation failures.
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-2023-52438 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.
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.