Si je comprends bien dans Nougat et plus, le système a deux partitions complètes, une actuellement utilisée et la seconde qui est utilisée pour la mise à niveau. Ainsi, lors d'une mise à niveau, les nouveaux bits sont déposés sur la partition secondaire qui deviendra la primaire pour démarrer à partir de la partition mise à niveau. Ma question est la suivante : comment cela empêche-t-il de démarrer à partir de la partition d'origine ? Où sont écrites/stockées les informations qui déterminent à partir de quelle partition il faut démarrer ? Comment cela empêche-t-il un attaquant de la modifier ?
Réponse
Trop de publicités?- De l'AOSP Mises à jour du système A/B (Seamless)
Appelez
update_engine
avec l'URL HTTPS de votre paquet de mise à jour....... Si la mise à jour est appliquée avec succès,
update_engine
dira au chargeur de démarrage de démarrer dans le nouveau système d'exploitation au prochain redémarrage....
(Emphasis Supplied)
Il s'agit donc d'une action entreprise au niveau du chargeur de démarrage. Et si vous vous trompez à ce niveau dm-verity s'activera, c'est une protection au niveau du noyau qui ne peut pas être modifié une fois que l'appareil quitte l'usine.
Si la vérification échoue, le dispositif génère une erreur d'E/S indiquant que le bloc ne peut pas être lu. Il apparaîtra comme si le le système de fichiers a été corrompu comme prévu.
Avec une restauration personnalisée dm.verity
peut être désactivé mais alors OTA échouera parce qu'il détecte le changement de récupération et franchement, si un attaquant peut obtenir un accès Root, l'appareil est à peu près les leurs
Edit : Voir ceci pour plus de détails Questions sur les dispositifs de mise à jour A/B (Seamless)