Después de algunas excavaciones, creo que he localizado la línea de código vulnerable.
En el Boletín de seguridad de Android, septiembre de 2016 , encontramos esta información:
Vulnerabilidad de ejecución remota de código en Mediaserver
Una vulnerabilidad de ejecución remota de código en Mediaserver podría habilitar una
atacante que usa un archivo especialmente diseñado para causar daños en la memoria
durante el procesamiento de datos y archivos multimedia. Este problema está calificado como crítico
Debido a la posibilidad de ejecución remota de código dentro del contexto de
El proceso Mediaserver.
- CVE: CVE-2016-3862
- Referencias: A-29270469
- Gravedad: crítica actualizada
- Dispositivos Nexus: Todos los Nexus
- Versiones de AOS actualizadas: 4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1
- Fecha del informe: 10 de junio de 2016
Lo que lleva a este diff de que muestra dónde se eliminó el Dependencia jhead de ExifInterface.java. Por lo tanto, según la fecha informada, aproximadamente 3 meses antes de que se resolviera el problema, probablemente se solucionó el problema en jhead.
Esto se correlaciona con la siguiente diferencia de compromiso en jhead :
@@ -614,7 +614,7 @@
unsigned OffsetVal;
OffsetVal = Get32u(DirEntry+8);
// If its bigger than 4 bytes, the dir entry contains an offset.
- if (OffsetVal+ByteCount > ExifLength){
+ if (OffsetVal > UINT32_MAX - ByteCount || OffsetVal+ByteCount > ExifLength){
// Bogus pointer offset and / or bytecount value
ErrNonfatal("Illegal value pointer for tag %04x", Tag,0);
continue;
Que tiene el siguiente mensaje de confirmación:
Solucionar el posible acceso fuera de límites