
CVE-2017-13286 Poc (inutilisable)
CVE-2017-13286 Poc (ne peut pas être utilisé)
Toutes les ressources proviennent de cet article 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");
...
...
...
}
On peut voir que dans cette version d'AOSP, mIsShared n'est pas lu alors qu'il est écrit
En exploitant cela, nous pouvons construire des données de sérialisation Parcel malveillantes pour faire exécuter certaines actions au système
Le code vulnérable se trouve dans le répertoire AOSP : frameworks/base/core/java/android/hardware/camera2/params/OutputConfiguration.java
Non seulement cela a été corrigé, mais l'objet sérialisé actuel comprend désormais davantage d'éléments par défaut