Android security tags, read closely by Lightrion

CVE-2025-48596 AI-generated analysis

platform/frameworks/native, libbinder (libs/binder/Parcel.cpp)

AI-generated: written from the bulletin and the fixing diffs by claude-fable-5-1, then checked against the code by claude-opus-5-5 (5 corrections). Verify against the commit before relying on it.

Parcel::appendFrom in libbinder now sets mDataSize to mDataPos only when the new position exceeds the current size, instead of unconditionally adding len to mDataSize.

Root cause

In libs/binder/Parcel.cpp, Parcel::appendFrom copied len bytes into the destination at mDataPos, advanced mDataPos by len and then ran `mDataSize += len` unconditionally. If the destination's mDataPos was below mDataSize at call time, the write overlapped existing data and added fewer than len new bytes, but mDataSize still grew by the full len. The capacity check before the copy only compares mDataPos + len against mDataCapacity, so the inflated mDataSize could exceed both the valid data and the capacity checked for, leaving the Parcel with a size field that does not match its buffer.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to December 2025 · Findings