В Android 13 в целях безопасности ограничат использование Accessibility API приложениями, установленными из ненадежных источников

В Android 13 в целях безопасности ограничат использование Accessibility API приложениями, установленными из ненадежных источников

Android Accessibility API - это инструмент для разработчиков, помогоающий им создавать приложения для пользователей с ограниченными возможностями. API позволяет приложениям считывать содержимое экрана и выполнять ввод от имени пользователя, чем пользуются различные программы чтения с экрана и альтернативные системы ввода. К сожалению, эти возможности оказались также полезны и для вредоносных приложений, которые хотят украсть данные пользователей, поэтому Google ужесточил контроль над тем, каким приложениям разрешено использовать Accessibility API. Недавно Google уже ограничила использование Accessibility API приложениями в Google Play введя новую политику, а в Android 13 она пошла дальше и существенно ограничила доступ к API для приложений, которые пользователь установил не из магазина приложений.

Предыстория

Служба доступности - это привилегированная фоновая служба, которая получает от системы информацию об определенных событиях, например, о нажатии кнопки. Приложения могут реагировать на эти события и предоставлять различные возможности, например, озвучивание при нажатии. Например, программа чтения с экрана, такая как TalkBack, может прочитать содержимое диалога от имени слабовидящих или слепых пользователей, а Switch Access может нажать "да" или "нет" от имени пользователей с ограничениями подвижности.

Из-за мощного характера этого API, Android требует, чтобы пользователь вручную включал службы доступности через интерфейс в Настройках > Спец.возможности. Перед включением службы пользователя предупреждают, что он предоставляет приложению "полный контроль" над своим устройством, включая возможность "просматривать и управлять [экраном]", а также "просматривать и выполнять действия" от его имени.

Приложения могут по желанию предоставить объяснение того, для чего будет использоваться их служба доступности, но нет никакой гарантии, что служба будет использоваться так, как описано разработчиком. Авторы вредоносных программ пользуются этим, чтобы обманом заставить пользователя включить службу доступности. Несколько печально известных фишинговых и банковских троянских кампаний воспользовались Accessibility API Android для кражи данных пользователей. Например, FluBot отправлял пользователям ссылку на приложение, которое выдавало себя за FedEx. После установки приложения и включения службы доступности FluBot собирал личную информацию и атаковал мобильные банковские приложения. Другие трояны, такие как  SharkBotXenomorphBianLianS.O.V.APixStealerVultur, и TeaBot,, также злоупотребляют Accessibility API Android.

Компания Google не оставила эти угрозы без внимания. На протяжении многих лет оно пыталась бороться с приложениями, злоупотребляющими Accessibility API.

Пресечение использования Accessibility API

В конце 2017 года Google разослал разработчикам письмо, в котором сообщил, что если их приложение использует сервис доступности по какой-либо причине, кроме как помощи пользователям с ограниченными возможностями, то они должны удалить эту функциональность, или их ждет удаление приложения из Play Маркета. Столкнувшись с негативной реакцией от разработчиков, Google тихо отступила от этой угрозы, поскольку изменение политики заставило бы многих разработчиков убрать из своих приложений полезные функции. Вместо этого компания призвала разработчиков по возможности использовать встроенные API Android вместо Accessibility.

Однако в 2021 году стратегия Google изменилась. Чтобы сократить ненужное и потенциально опасное использование Accessibility, не повлияв при этом на его первоначальную задачу, Google обновил политику магазина приложений, введя новый набор требований к приложениям, которые хотят использовать данный API. Разработчики, чьи приложения ориентированы на Android 12 или более новые версии и используют API Accessibility по причинам, не связанным с доступностью, должны заполнить обширную форму заявления о разрешении и получить одобрение Google Play. Они также должны на видном месте в своем приложении указать, зачем им нужен доступ к API Accessibility. Наконец, они должны потребовать от пользователя дать согласие на включение службы (еще до того, как он дойдет до встроенного диалога Android).

Приложение, которые действительно предназначены для пользователей с ограниченными возможностями, под эти требования и ограничения не попадают.

Google также незаметно ввел в Android 12 новую функцию, предупреждающую пользователей о включенных службах доступности. Время от времени в Android будет появляться уведомление под названием "проверьте настройки спец.возможностей", которое напоминает пользователю о включенных службах спец. возможностей. Это уведомление появляется через 24 часа после того, как пользователь включит службу доступности, которая не была объявлена инструментом доступности и не была установлена из доверенного источника установки. Другими словами, Android доверяет только тем приложениям, которые по своей сути являются инструментами доступности и проверены надежным магазином приложений.

Однако предупреждение, появляющееся через 24 часа после того, как пользователь уже включил службу доступности, может не защитить пользователей от вредоносных приложений, которые действуют быстро. Отчасти поэтому Android 13 накладывает дополнительные ограничения на использование Accessibility API.

Ограничение доступа к службам доступности в Android 13

Когда пользователь устанавливает приложение с сервисом доступности на Android 13, система может заблокировать включение сервиса доступности. Если это ограничение применяется, состояние службы будет отображаться серым цветом в настройках, а при нажатии на службу появится диалоговое окно с текстом "для вашей безопасности эта настройка в настоящее время недоступна".

Android 13 применяет это ограничение ко всем приложениям, которые устанавливаются из APK-файла, скаченного со стороннего ресурса. Google подтвердил Esper, что это ограничение было разработано таким образом, чтобы не затрагивать приложения, установленные как из предустановленных магазинов приложений (например Google Play), так и установленные вручную (например, F-Droid). Это связано с тем, что компания не хочет ограничивать доступ к API для всех приложений, загружаемых со сторонних источников - она просто хочет ограничить доступ для приложений, полученных из менее легитимных источников.

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

Эти ограничения связаны с новым разрешением в Android 13 под названием ACCESS_RESTRICTED_SETTINGS. Это разрешение контролирует, может ли пользователь включить службу доступности приложения. Когда приложение было загружено со стороннего источника, сначала разрешение устанавливается в значение "запретить". После просмотра диалога "Ограниченные настройки", разрешение устанавливается в положение "игнорировать". В этот момент пользователь может перейти на страницу информации о приложении, коснуться меню с тремя точками, а затем коснуться "разрешить ограниченные настройки", чтобы разблокировать доступ к службе доступности. Затем пользователю будет предложено пройти аутентификацию, и если он ее пройдет, для приложения будет установлено значение "разрешить". Система не сообщает пользователю, что он может это сделать, но это может измениться в будущих сборках Android 13.

Кроме того, разрешение ACCESS_RESTRICTED_SETTINGS закрывает доступ только к службам доступности, но вполне вероятно, что в будущем оно может быть использовано для закрытия доступа к другим API.

Google может предоставить руководство по этому недокументированному изменению на предстоящей конференции для разработчиков I/O, поэтому обязательно следите за этим событием, чтобы узнать обо всех изменениях в новом выпуске ОС. 

Источник: Esper Blog