Изменения файловой системы в Android Nougat

Начиная с первого выпуска предварительного просмотра для разработчиков Android N, я получаю сообщения об отказе в разрешении при попытке перечисления корневого каталога или других системных каталогов. Разрешения на эти каталоги не изменились (насколько я могу судить).

Вопрос:

Какие изменения в Android N привели к ошибкам отказа в разрешении?

Как тиражировать:

В оболочке ADB выполните следующие команды:

run-as com.debuggable.packagename
ls /

Это дает разрешение отклоненных ошибок на Android N.

Зачем перечислять системные каталоги:

Я заметил это поведение на Android N с несколькими файловыми менеджерами. Они больше не могли перечислять корневой каталог или другие системные файлы. Это также ограничивает производительность бегаps в оболочке. Изменения также вызвали этобиблиотека перестать работать на Android N.

 AesSedai10129 июл. 2016 г., 14:58
Согласноэтот отчет об ошибке это было сделано из соображений безопасности.

Ответы на вопрос(2)

Это было сделано длясоображения безопасности и конфиденциальности, Из сообщения об ошибке:

В случае файловой системы root (/) и / sys листинг каталога невозможен.

Официальный ответ от Google:

Поведение, которое вы описываете, работает как задумано. Android предоставляет строгие песочницы, в которых должны работать приложения. Эти песочницы защищают данные приложений от других приложений, включая метаданные приложений, такие как состояние процесса.

/ sys и / proc хорошо известны как утечка информации о процессах в побочном канале, информация, которая может быть использована для определения состояния процессов. Например, в течение многих лет было задокументировано, что доступ / proc может использоваться для мониторинга запуска приложений, что позволяет проводить фишинговые атаки.

 Jared Rummler01 авг. 2016 г., 15:44
Это отличная информация. Я также ищу изменения в исходном коде.
 Jared Rummler02 авг. 2016 г., 21:57
Кроме того, отличное видео о том, как это изменение не решает проблему:youtube.com/watch?v=SkvHA1jBpn8
Решение Вопроса

Было две группы изменений, ограничивающих доступ к / proc.

Файловая система procfs теперь монтируется с hidepid = 2, что исключает доступ к каталогам / proc / PID других пользователей. Это изменение было реализовано в CopperheadOS, а затем на его основе было принято апстрим. Есть группа для создания исключений, но она не предоставляется как разрешение. Он используется только для создания исключений для некоторых процессов в базовой системе. Это может быть выставлено как «опасное» разрешение, и я ожидал, что в конечном итоге это сделает Google, но они решили, что пользователи не поймут его последствий.

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

Политика SELinux также стала намного строже. Для приложений больше нет базового доступа к / proc, хотя это относится только к файлам, отличным от каталогов / proc / PID. До сих пор есть доступ к нескольким файлам с метками, которые не подпадают под общую политику процедур, но в основном они исчезли. Это было постепенным и есть много соответствующих коммитов. Один из больших:

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

Это не только удаляет много очевидной информации, но также закрывает еще несколько явных дыр в безопасности, связанных с побочными каналами, позволяющими регистрировать ввод с клавиатуры:

https://www.lightbluetouchpaper.org/2016/07/29/yet-another-android-side-channel/https://staff.ie.cuhk.edu.hk/~khzhang/my-papers/2016-oakland-interrupt.pdf

Политики SELinux со временем стали намного строже. Вы можете увидеть все остальное вПлатформа / система / sepolicy репозиторий. Обратите внимание, что это было вПлатформа / внешний / sepolicy давно но недавно был перенесен.

 Bhanu Sharma27 окт. 2016 г., 08:31
Так что в OS N мы не можем взять весь proc @strcat?

Ваш ответ на вопрос