
CVE-2017-13286 Poc(no se puede usar)
CVE-2017-13286 Poc(no se puede usar)
Todos los recursos provienen de este artículo https://bbs.kanxue.com/thread-268506.htm
public void writeToParcel(Parcel dest, int flags) {
if (dest == null) {
throw new IllegalArgumentException("dest must not be null");
}
dest.writeInt(mRotation);
dest.writeInt(mSurfaceGroupId);
dest.writeInt(mSurfaceType);
dest.writeInt(mConfiguredSize.getWidth());
dest.writeInt(mConfiguredSize.getHeight());
dest.writeInt(mIsDeferredConfig ? 1 : 0);
dest.writeInt(mIsShared ? 1 : 0);
dest.writeTypedList(mSurfaces);
}
private OutputConfiguration(@NonNull Parcel source) {
int rotation = source.readInt();
int surfaceSetId = source.readInt();
int surfaceType = source.readInt();
int width = source.readInt();
int height = source.readInt();
boolean isDeferred = source.readInt() == 1;
// missing write mIsShared
ArrayList<Surface> surfaces = new ArrayList<Surface>();
source.readTypedList(surfaces, Surface.CREATOR);
checkArgumentInRange(rotation, ROTATION_0, ROTATION_270, "Rotation constant");
...
...
...
}
Se puede ver que en esta versión de AOSP, mIsShared no se lee, pero sí se escribe
Aprovechando esto, podemos construir datos de serialización de Parcel maliciosos para que el sistema ejecute ciertas cosas
El código vulnerable se encuentra en el directorio de AOSP: frameworks/base/core/java/android/hardware/camera2/params/OutputConfiguration.java
Esto no solo fue corregido; ahora el objeto de serialización añade más elementos predeterminados