Según tengo entendido en Nougat y superiores el sistema tiene dos particiones completas, una usada actualmente y la segunda que se usa para actualizar. Así que durante una actualización los nuevos bits se establecen en la partición secundaria que se convertirá en la primaria para arrancar desde la partición actualizada. Mi pregunta es ¿cómo se evita arrancar desde la partición original? ¿Dónde está escrita/almacenada la información que determina desde qué partición arrancar? ¿Cómo se evita que un atacante la modifique?
Respuesta
¿Demasiados anuncios?Llame a
update_engine
con la URL HTTPS de su paquete de actualización....... Si la actualización se aplica con éxito,
update_engine
le dirá al gestor de arranque que arrancar en el nuevo sistema operativo en el próximo reinicio....
(Énfasis añadido)
Por lo tanto, usted está viendo la acción que se realiza en el nivel del cargador de arranque. Y si te equivocas en ese nivel dm-verity que es una protección a nivel del kernel que no se puede manipular una vez que el dispositivo sale de fábrica
Si la verificación falla, el dispositivo genera un error de E/S indicando que el bloque no puede ser leído. Aparecerá como si el el sistema de archivos se ha corrompido como era de esperar.
Con una recuperación personalizada dm.verity
puede ser desactivado pero entonces OTA fallará porque detecta el cambio de recuperación y francamente, si un atacante puede obtener acceso Root, el dispositivo es bastante de ellos