29 votes

Modifications du système de fichiers dans Android Nougat

Depuis la première version de l'Android N developer preview, j'obtiens un "permission denied" erreur lors de la tentative de lister le répertoire de racine ou d'autres répertoires du système. Les autorisations sur ces répertoires ne semblent pas changer (pour autant que je puisse dire).

Question:

Ce changement(s) dans Android N à l'origine de ces erreurs de refus d'autorisations?


Comment répliquer:

Dans la commande ADB shell, exécutez les commandes suivantes:

run-as com.debuggable.packagename
ls /

Cela donne la permission denied erreur sur Android N.


Pourquoi le système de la liste d'annuaires:

J'ai remarqué ce problème sur Android N avec plusieurs gestionnaires de fichiers. Ils n'en pouvaient plus de la liste le répertoire de racine ou d'autres fichiers système. C'est aussi la limitation de la sortie de l'exécution de ps dans un shell. Les changements ont également causé cette bibliothèque d'arrêter de travailler sur Android N.

11voto

strcat Points 1781

Il y avait deux groupes de modifications réduction de l'accès à /proc.

Le procfs système de fichiers est monté avec hidepid=2, l'élimination de l'accès à l' /proc/PID répertoires des autres utilisateurs. Ce changement a été mis en œuvre dans CopperheadOS et a ensuite été adopté en amont sur cette base. Il y a un groupe pour en faire des exceptions, mais il n'est pas exposé comme une autorisation. Il n'est utilisé que pour faire des exceptions pour certains processus dans le système de base. Il pourrait être exposé comme "dangereuses", l'autorisation et c'est ce que j'attendais Google va se retrouver à faire mais ils ont décidé que les utilisateurs ne comprennent pas les implications.

https://android-review.googlesource.com/#/c/181345/

Politiques SELinux est également devenu beaucoup plus strictes. Pour les applications, il n'y a pas de référence d'accès à /proc plus, bien que cela ne s'applique qu'à d'autres fichiers que le fichier /proc/PID répertoires. Il y a encore de l'accès à quelques fichiers avec des étiquettes de ne pas tomber sous le proc de la politique, mais c'est pour la plupart disparu. Cela a été progressive et il y a de nombreuses validations. L'un des plus gros:

https://android-review.googlesource.com/#/c/105337/

Ce n'est pas seulement supprime beaucoup de renseignements évidents, mais il se ferme aussi certains plus flagrante des trous de sécurité impliquant des canaux latéraux permettant à des choses comme la journalisation de l'entrée au clavier:

Politiques SELinux sont également devenus beaucoup plus stricte en général au fil du temps. Vous pouvez voir le reste de la plate-forme/système/sepolicy référentiel. Notez qu'il a été à la plate-forme/externe/sepolicy pour un temps long mais il a été récemment déménagé.

9voto

AesSedai101 Points 829

Cela a été fait pour la sécurité et des raisons de confidentialité. Depuis le rapport de bug:

Dans le cas de la racine (/) et /sys systèmes de fichiers, une liste de répertoire n'est pas possible.

La réponse officielle de Google:

Le comportement que vous décrivez est fonctionne comme prévu. Android fournit le strict sandbox applications doivent s'exécuter dans. Ces bacs à sable de protéger les données des applications à partir d'autres applications, y compris les métadonnées de l'application, tels que les processus de l'état.

/sys et /proc sont bien connus pour les fuites côté du canal de l'information sur les processus, les informations qui peuvent être utilisées pour déduire l'état sur les processus. Par exemple, il a été documenté depuis des années que /proc d'accès peut être utilisé pour surveiller le lancement de l'app, permettant des attaques de phishing.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X