Изменения системы разрешений в Android 6.0: каковы последствия для нас, пользователей?

В Android 6.0 было удалено несколько разрешений и групп разрешений :

Группы ушли

Хотя на первый взгляд это не кажется важным (разве это не способ организации разрешений?) – дважды подумав, мы обнаруживаем большую важность: начиная с Android 6 (а с Playstore еще до этого), если приложение update запрашивает разрешение у группы, в которой оно уже находилось в предыдущей установленной версии, это «новое разрешение» не доводится до сведения пользователя. В Android 6 он даже предоставляется автоматически. Также имейте в виду, что пользователь (с «родными возможностями Android») может отозвать доступ только к целым группам, а не к отдельным разрешениям — поэтому меньшее количество групп означает меньшую гибкость, вплоть до бесполезности всей функции.

По указанной выше ссылке удалены следующие группы:

ACCOUNTS, AFFECTS_BATTERY, COST_MONEY, DISPLAY, MESSAGES, NETWORK, PERSONAL_INFO, PHONE_CALLS, SCREENLOCK, SOCIAL_INFO, SYSTEM_CLOCK, SYSTEM_TOOLS, USER_DICTIONARY,WALLPAPER

Разрешения исчезли

Меньше разрешений, охватывающих больше способов доступа к личным данным, означает кошмар для конфиденциальности. По поводу учетных записей я уже поднимал этот вопрос: Android 6+ и права доступа к учетным записям: куда они делись? Как мы выяснили там, то, что раньше было связано с более не существующим USE_CREDENTIALSразрешением, теперь перемещено в контакты (не уверен, читаете ли вы или пишете): поэтому, если вы хотите «войти в систему с помощью Google» (или любого другого владельца учетной записи), вам нужно предоставить приложению полный доступ к вашему списку контактов! Всплывающее окно на скриншоте («Разрешить Stack Exchange доступ к вашим контактам?») появилось сразу после нажатия кнопки «Войти через Google».

Таким образом, рядом с большинством разрешений учетной записи (кроме GET_ACCOUNTS, все они исчезли), которые рассматриваются в моем другом уже связанном вопросе, были удалены следующие разрешения:

ACCESS_MOCK_LOCATION(теперь нужно настроить одно приложение, обрабатывающее MOCK_LOCATION, о котором я упоминал?) , CLEAR_APP_USER_DATA, GET_TOP_ACTIVITY_INFO, HARDWARE_CONTROLS, HARDWARE_TEST, INJECT_EVENTS, INTERNAL_SYSTEM_WINDOW, READ_HISTORY_BOOKMARKS, READ_PROFILE, READ_SOCIAL_STREAM, READ_USER_DICTIONARY, SET_ACTIVITY_WATCHER, SET_ORIENTATION, SET_POINTER_SPEED, STATUS_BAR, SUBSCRIBED_FEEDS_READ, SUBSCRIBED_FEEDS_WRITE, VOICEMAIL, WRITE_HISTORY_BOOKMARKS, WRITE_PROFILE,WRITE_SMSWRITE_SOCIAL_STREAM

Что это значит для пользователей и их конфиденциальности?

Это моя главная забота здесь. К сожалению (можно почти сказать «как и ожидалось»), официального заявления по этому поводу не поступало — или я уже знал об этих изменениях некоторое время назад. Я надеюсь, что некоторые из наших участников, которые также являются разработчиками, имеют более глубокое понимание и могут помочь нам с некоторыми объяснениями и советами:

  • эти группы/разрешения просто были удалены (или некоторые просто были переименованы/заменены другими)?
  • как теперь защищены данные, которые ранее были защищены ими?
  • каковы последствия для пользователей и их конфиденциальности, и что мы можем с этим поделать?
    • что касается «сделать с этим»: конечно, есть root, XPosed и Xprivacy (как последний справляется с этими изменениями?) — но я также имею в виду «среднего пользователя» без root здесь.
Краткий ответ: Google злится. «Капитальный ремонт разрешений» был скорее сливом разрешений. Большинство разрешений были помещены в (свободные) группы. Чтобы войти в Google в приложении, ему нужны ваши контакты. Максимум, что мы можем сделать, это посмотреть на вкладку разрешений внизу страницы приложения в магазине и увидеть разрешения. То или угрожать переходом на IOS ;)
@DanBrown Это была моя мысль, когда я увидел «полный список разрешений», я сначала подумал, что это сокращенный пример. Нет, я больше не уверен, так как я видел в приведенном выше связанном diff, что было удалено с помощью MM (и еще не проверял, получили ли они менее 10 разрешений в N). Все еще ищу подробности о последствиях и о том, как с этим бороться. Кроме того, как диспетчеры разрешений справляются с этим? Xprivacy все еще покрывает все? Прежде чем я узнаю, я определенно не перейду на ММ (или выше).
ММ плохо с этим справляется. У него было свое применение, но большинство приложений просто жалуются, даже если отключенная группа разрешений бесполезна. Xprivacy покрывает большинство вещей, насколько мне известно, я еще не рутировал свое устройство MM. Конечно, мы все еще можем изменить приложения, чтобы просто удалить разрешения, которые нам не нравятся, но это требует слишком много времени.
@DanBrown не только отнимает много времени, но и контрпродуктивен. В зависимости от того, как это делается, это отрезает вас от автоматических обновлений (вам приходилось повторять эти манипуляции снова и снова), плюс пробы и ошибки того, какие разрешения можно удалить без побочных эффектов, сведут вас с ума. Кроме того, меньше разрешений, охватывающих больше данных, поэтому вы не можете удалить доступ, например, к контактам, не сделав невозможным «войти в Google». Я уверен, что есть еще такие новые «плохие комбинации» — это часть моего вопроса, чтобы выяснить это.
Иззи, осталось сделать только одно с этой новой системой разрешений. Не пихайте его туда, куда не светит солнце: но мы уничтожим его с орбиты.
@DanBrown В основном это то, что я думаю об этом, но, к сожалению, это неосуществимо. Так что придется как-то справляться с реальностью. И это «каким-то образом» является тем, о чем этот вопрос: каковы последствия, как с ними справиться, как защитить наши данные, как извлечь максимальную пользу из того беспорядка, который создал Google. Пока это не станет ясно, я не буду обновлять ни одно из своих устройств, кроме LP, по соображениям безопасности и конфиденциальности. Я немного разочарован тем, что, несмотря на щедрость, этот вопрос имеет так мало просмотров и до сих пор не получил ни одного ответа. У нас тут есть разработчики, которые должны хоть что-то знать.

Ответы (2)

Как я сказал выше (где-то), новая система разрешений — это утечка, которая показывает, что новая идея часто не является хорошей идеей.

Имейте в виду! Это может занять некоторое время, так как я буду говорить об истории Android и многом другом! Иди и выпей!

Ты хорош? Ладно, копай.

Истоки новой разрешительной системы

Когда Google начал работать над способом принудительного предоставления и отказа в разрешении на лету, это был Android 4.3. Это был глючный беспорядок, поэтому они его спрятали. Однако его все еще можно использовать, создав ярлык в меню настроек приложения. Это меню было очень похоже на текущее меню приложений, но при нажатии на параметр сразу же появляются параметры разрешений. Вам также нужно было обнаружить разрешения, прежде чем вы могли их переключать, и это был беспорядок с ошибками, поскольку приложения задавались вопросом, что происходит, потому что вы что-то отключили, и неудобно вылетало. Ура.

Система была удалена после того, как ее нашли моддеры (поэтому она была удалена в 4.4), 1 но вернулась в Marshmallow. Это выглядело действительно хорошо — вы, наконец, могли выбирать, могут ли такие вещи, как Facebook, определять ваше местоположение (хотя он действительно просил). Даже некоторые приложения Google, такие как Hangouts, не защищены от ваших решений. Но потом мы столкнулись с проблемой - система все еще сломана, только по-новому: права доступа были сильно изменены.

Вы хотите, чтобы Stack Exchange входил в систему через Google? Ему нужны разрешения на контакты (хотя разработчики SE исправили это на своей стороне). 2 Хотите загрузить изображения на Facebook? Он должен видеть все ваши файлы. Почему? Сжатие . Разрешения теперь предоставляются в группах, где запрос вашей учетной записи Google также позволяет приложениям видеть каждый контакт на устройстве. Сомневаюсь, что это было задумано, но удаление большинства разрешений означало необходимость упростить игровое поле; большинство удаленных разрешений просто запихнули в суперобщие группы .

Некоторые разрешения были удалены из-за новых SDK. GET_ACCOUNTSТеперь запускает новый SDK, который позволяет выполнять вход в Google, но возвращается к выполнению этого через разрешения контактов, если приложение не поддерживает его. Это объясняет одно (в том числе то, как приложение SE было окончательно исправлено), но некоторые другие не получают такой обработки. Насколько я знаю, приложения могут просто случайно читать словарь независимо от клавиатуры. Большинство других разрешений, о которых упоминает Иззи, по-видимому, соотносятся с измененными группами: большинство из них вписываются в Godmission «Изменение системных настроек» (разрешения отделены от основных) и «доступ к использованию». Некоторые другие обрабатываются самими приложениями.

Итак, все, кому не дали новый дом, было убито. Иногда это имело смысл (нам нужно только GET_ACCOUNTSактивировать SDK), в то время как в других случаях вам хотелось всадить пулю в свой телефон: о да, я просто позволю вам получить доступ к моим контактам, вы, похоже, в порядке. Конечно, получайте доступ к моим звонкам и тратьте мои деньги. (Надеюсь, никто не настолько глуп. Надеюсь.)

Сначала я подумал ура! Упрощение! Но это позволяет, казалось бы, законным приложениям делать незаконные вещи НАМНОГО проще. Ваш хакерский инструмент Minecraft, который хочет получить вашу учетную запись Google, вероятно, также крадет ваши контакты. И продавать их.

Затем это усугубляется системой блокировки разрешений, которая позволяет вам точно настраивать разрешения приложений. Это здорово, но это не работает. Вообще. Это также неточно (например, говорится, что Stack Exchange читает мои SMS'ы. Нет, это не так) и просто ужасно.

Но что это значит для моей конфиденциальности?

Лично я думаю одно из двух:

  1. Новая система разрешений была разработана для обеспечения возможности простых и быстрых изменений в целях безопасности. Разрешения теперь предоставляются в группах, что объясняет, почему некоторые из них удалены: Google подумал, что оставить их под одним большим заголовком было хорошей идеей (и для конечного пользователя я понимаю почему: контролировать каждое отдельное разрешение может быть утомительно). Конечно. как и коммунизм, он был хорош только на бумаге ; на самом деле это беспорядок, в котором они не хотят признаваться. Справедливо.

  2. Тем не менее, они могут делать это, чтобы заставить больше приложений использовать свой SDK для взлома и устранения подозрительных разрешений (не вините их) и, следовательно, зарабатывать больше денег. Доказано, что они делают это (и пытаются сделать Android менее открытым исходным кодом), что вызывает у меня отвращение.

Так что для конечного пользователя это немного похоже на iOS, под которой я подразумеваю что-то, что выглядит хорошо, но является дерьмом. Но можно ли это исправить? Вроде.

«Обходные пути».

Метод 1- Xprivacy (НУЖЕН КОРЕНЬ BOI)

По словам разработчиков, Xprivacy работает на Marshmallow. Теперь это требует возиться со всякими мелочами на MM, и есть проверенный boot . Это неприятно, так как вы, вероятно, получите красное или желтое предупреждение, которое может помешать загрузке. (В зависимости от вашей удачи и того, как много вы напортачили.) Но если вы можете заставить Xprivacy работать, это достаточно просто.

Из-за позиции «Не загружаться ПОЛНАЯ СТОП», которую, по-видимому, примет N, работа над этим может быть даже более кошмарной.

РЕДАКТИРОВАТЬ 2017 - Разработчики Xposed работают над тем, чтобы обойти все это (ура!) Если я найду сообщение на XDA, я дам ссылку на него

СПОСОБ 2. Полностью заблокируйте все.

Это действительно неудобно, но обеспечивает максимальный контроль (насколько это возможно). Вы предоставляете разрешения приложениям, когда это абсолютно необходимо, а затем делаете безумный рывок, чтобы снова их отключить. Вероятно, будет проще, когда Nougat появится на большем количестве устройств, чтобы можно было использовать многооконный режим.

МЕТОД 3 — Не обновлять (я называю его «решением Иззи»)

Если вы подняли глаза, когда я вам сказал, вы, возможно, заметили метод Иззи: вы просто воздерживаетесь от обновления до Marshmallow или Nougat. Бу-ху, я знаю, но на самом деле ни то, ни другое не меняет правила игры. Дай.... Полгода, и большая часть хрени для N будет в плеймаркете, если очень захотеть. Таким образом, решение Izzy означает придерживаться версии 5.1.1 или более ранней. Я могу жить, и ты тоже.

СПОСОБ 4 - ВЗЯТЬ С ОРБИТЫ.

(Просто чтобы угодить массам. К вашему сведению, это было бы невозможно.)

уничтожь это

Или игнорировать его. Ваш звонок.


РЕДАКТИРОВАТЬ Иззи нашел ссылку на вопрос о переполнении стека , в котором объясняется, что учетные данные, такие как логины для входа в различные приложения , подпадают под «обычное разрешение» ( «нормальный уровень защиты »), т. е. любое приложение может получить к ним доступ без вашего ведома. К счастью, некоторые приложения и логины позволят вам удалить это через свои менеджеры учетных записей, в зависимости от того, насколько злонамеренным пытается быть разработчик.

РЕДАКТИРОВАТЬ 2 Я забыл сказать, что вы можете удалять приложения из учетных записей :) В качестве примеров я буду использовать системы учетных записей Google и Facebook, поскольку они наиболее часто используются.

аккаунты Google

  1. Зайдите на account.google.com или откройте настройки Google Play (зависит от устройства, обычно это шестеренка с ag)
  2. Найти приложения/связанные приложения/связанные приложения и службы (опять же, различается)
  3. Найдите то, что вы хотите удалить, и нажмите «Удалить».

ВЫПОЛНЕНО!

Фейсбук

  1. Войти на сайт
  2. Перейдите в настройки учетной записи> приложения
  3. Найдите целевое приложение и нажмите/коснитесь удалить.

Сделанный!

Надеюсь, это поможет! Если нет, просто оставьте комментарий, вы знаете упражнение. Я все равно буду над этим работать. Готово, но все же дайте мне знать, если я что-то пропустил!


1 Google предпринимал различные попытки «скрыть это лучше», и разные версии интерфейсов AppOps возвращали его тогда для 4.4 и 5.0, но не далее

2 Судя по всему, приложения могут добровольно использовать новый SDK, который позволяет входить в систему Google без разрешения контактов. Подробнее см. здесь .

@Izzy Хорошо, я могу уточнить, что это относится только к входу в Google. Другие приложения, кажется, используют свои собственные методы, например, большинство приложений имеют простой URL-адрес для входа в Facebook, но он запускает приложение, если оно установлено и управляет им. Другие приложения либо имеют свои собственные методы, либо не имеют полной остановки. (Кроме того, под группировкой я подразумеваю переключатели разрешений. Просто давайте их разделим!)
Подходит. Только что найдено с помощью Android 6 Marshmallow: запросы на некоторые конкретные разрешения мгновенно отклоняются без отображения пользовательского интерфейса , что, например USE_CREDENTIALS, теперь является безопасным разрешением , что означает, что пользователь не может его отрицать. Прочтите еще раз и подумайте: значит, любое приложение может использовать любую из моих учетных записей без моего разрешения, если только я его не установлю. Большой. Ой, подождите: так ничего и не изменилось, то же самое было и с LP, и до </sarkasm>.
Удалить приложения из учетных записей: это большое улучшение для пользователя. Теперь ему нужно выяснить, какое приложение является поставщиком учетной записи, а также где и как (если вообще) оно позволяет с этим справиться: в приложении, на каком-то веб-сайте или где-либо еще... <вздрагивает>

Подводя итог моим собственным выводам, которые могут совпадать с ответом Дэна :

Источник

Google начал использовать новую систему разрешений с Android Jellybean 4.3. Официальное намерение (раскрытое позже) состояло в том, чтобы дать пользователям некоторый контроль над тем, к каким разрешениям должно иметь доступ приложение («разрешение по запросу») — вместо существовавшего в то время «все или ничего» (если вы не как приложение, имеющее определенное разрешение: либо живите с ним, либо не устанавливайте его). Интерфейс AppOps был скрыт, но вскоре обнаружен, снова скрыт (Kitkat/4.4), снова открыт, и то же самое в третий раз с LP/5.0, после чего он был защищен способом, который трудно обойти.

Текущее состояние

Наконец, AppOps появился в Marshmallow/6.0. Но вместо того, чтобы предоставить пользователям детальный контроль разрешений, разрешения истощаются, а контроль довольно сырой; если вы, например, хотите, чтобы ваше приложение для путешествий могло добавлять ваши заказы в календарь, но не читать другие записи календаря: ни в коем случае. Либо вы запрещаете доступ к календарю, либо разрешаете его. Аналогично для других разрешений — поскольку AppOps работает только с группами. 1

Кроме того, многие разрешения либо полностью удалены, либо им назначен уровень защиты «нормальный», поэтому они предоставляются автоматически и не могут быть отозваны пользователем. Это относится, например, к INTERNETразрешению, но также и к USE_CREDENTIALS(поэтому любое приложение с этим разрешением может использовать любую из ваших учетных записей без вашего явного разрешения!) или даже BLUETOOTH_ADMIN(сопряжение вашего Droid с любым устройством BT в пределах досягаемости). Подробный список см . в этом Gist .

Кроме того, были добавлены новые уровни защиты: appopдля разрешений, которые пользователь должен явно предоставлять через новую систему «по требованию», pre23для разрешений, автоматически предоставляемых, если приложение нацелено на версию ниже MM (т.е. до «разрешений во время выполнения», где они введены), preinstalledдля приложения, поставляемые с ПЗУ (непонятно, чем Android отличает это от system, которое было переименовано в privileged), плюс еще 3.

Текущее состояние подведено

В общем, у нас сейчас хуже:

  • количество разрешений было резко сокращено, что означает менее детальную защиту
  • многие разрешения были переведены на нормальный уровень защиты (и, следовательно, вне досягаемости AppOps)
  • AppOps (разрешение во время выполнения) является скорее косметическим из-за отсутствия детализации и отсутствия основных разрешений.
  • приложения могут запрашивать дополнительные разрешения при обновлении. Если они уже имеют разрешение в той же группе, пользователь не уведомляется («не требует каких-либо специальных дополнительных разрешений», текст звучит знакомо?). С уменьшением количества групп разрешений стало даже проще «что-то подкрасть».

Так что в большинстве случаев это означает то же, что и до MM: если вам не нравится приложение, имеющее определенное разрешение, не устанавливайте его.

Как с этим бороться с точки зрения пользователя?

Несколько элементов из следующего неполного списка могут применяться одновременно. Сделайте свой выбор:

  • Не обновляйте дальше LP, если вам это не нравится (и вы можете жить, придерживаясь LP). Я так и делаю, пока этот беспорядок не будет убран.
  • Не устанавливайте приложения, если вы не хотите предоставлять им доступ к тому, что они запрашивают.
  • При установке обновления не верьте подсказке «нет дополнительных разрешений». Подробно проверьте перед применением обновления. Это не так просто, как раньше, так как обычно вы не видите рядом друг с другом, какие права уже есть у приложения и чем они отличаются от тех, которые запрошены обновлением. В приложении Playstore вы по-прежнему получаете полный список, если прокрутите страницу приложения до конца и нажмете ссылку «детали разрешения». Не игнорируйте раздел «Другие» в конце списка, так как он содержит такие вещи, как INTERNET, BLUETOOTH_ADMINи другие «сюрпризы».
  • чтобы защитить свое устройство от мошеннических приложений, получающих доступ к Интернету, рассмотрите возможность использования приложения брандмауэра . Есть хорошие, даже не требующие рута и являющиеся FOSS, например Netguard .
  • если root является опцией, а также установка платформы XPosed (оба доступны для MM, но установка может быть довольно сложной с N), используйте диспетчер разрешений , такой как Xprivacy, для детального контроля разрешений.

1: Очевидно, что пользователь не должен "перенапрягаться". Тем не менее, может быть «расширенный режим», чтобы справиться с этим.