Skip to content
Threat Feed
high advisory

Google Android: Use-After-Free in BaseBundle Parcel recycling (CVE-2025-48583)

A use-after-free vulnerability in the Android system_server allows potential heap memory manipulation and type confusion via the NotificationManager.notify() API.

CVE search metadata

CVE search record: CVE-2025-48583. Severity: high. CVSS: 7.8. EPSS: 0.10%. KEV: no. Product: Android (14.0, 15.0, 16.0). Brief: Google Android: Use-After-Free in BaseBundle Parcel recycling (CVE-2025-48583). Brief link: https://feed.craftedsignal.io/briefs/2026-11-android-cve-2025-48583/

Triage facts

Revision 1
Applicability
Android (14.0, 15.0, 16.0)
Evidence
Unknown
Severity
High
Action
Elevated
Sources
3 public sources
Freshness
Revision 1Nov 9, 06:19 UTC
Vulnerabilities
1 CVE
Source quality
B2Likely

CVE-2025-48583 is a use-after-free (UAF) vulnerability within the Android system_server process. The flaw originates from improper Parcel recycling logic in BaseBundle.recycleParcel(). When NotificationManager.notify() is triggered, a Parcel object may be returned to the sOwnedPool while a LazyValue still holds a reference to it. An attacker can influence the heap and trigger the reuse of this memory, leading to potential Type Confusion or privilege escalation to UID 1000.

Google has provided a patch (commit 02751bc6) that replaces the vulnerable recycleParcel() method with parcel.destroy(), which properly invalidates the native pointer and prevents the object from returning to the reusable pool.

Attack Chain

  1. Attacker triggers NotificationManager.notify() with specially crafted bundles containing a mix of lazy and eager entries.
  2. The system_server parses the bundle, creating LazyValue shells that reference the internal Parcel.
  3. BaseBundle.recycleParcel() is invoked, returning the Parcel buffer to the sOwnedPool while the LazyValue retains a dangling reference.
  4. Attacker performs a heap spray to allocate memory that overwrites the recycled Parcel buffer.
  5. Attacker forces an unwrap operation on the LazyValue, causing it to read the attacker-controlled data from the overwritten buffer.
  6. The system encounters an anomaly or invalid state due to the manipulated data, providing a primitive for further exploitation.

Impact

Successful exploitation allows for heap memory manipulation within the system_server (UID 1000). While the provided Proof-of-Concept currently validates the lifecycle UAF anomaly (Level 1), it confirms the structural vulnerability in the AOSP BundleRecyclingTest.java suite. Theoretical impact includes Type Confusion and remote code execution.

Recommendation

  • Inventory all Android devices running versions 14.0, 15.0, and 16.0.
  • Verify if systems have received the security update containing commit 02751bc6 or the associated monthly security patch.
  • Monitor for anomalous application behavior involving the NotificationManager or system_server process crashes associated with BadParcelableException.
  • Use the PatchDetector logic described in the PoC to audit pre-patch environments by verifying the existence of the recycleParcel method and the status of Parcel.destroy().

Immediate actions

Patch affected Android devices to the latest security patch level.

IT Operations 72h

Threat Hunt

Identify repeated application crashes or BadParcelableException in system_server logs.

T1068 medium medium confidence hunt now

Data: Logcat output, Tombstone files

Mitigations

Apply Android security update covering CVE-2025-48583.

immediate IT Operations

CVE-2025-48583