Подтвердить что ты не робот

Что защищает пароли Android AccountManager от чтения другими приложениями?

Я пишу 1) приложение, в котором хранятся имя пользователя и пароль в AccountManager и 2) отдельное фоновое сервисное приложение, которое обращается к этим учетным данным для входа на мои серверы и т.д. Играя с этим, я нахожу, m можно вызвать AccountManager.getPassword(account) из Сервиса (приложение 2), чтобы получить доступ к типу учетных записей, которые я добавил в AccountManager, используя другое приложение (приложение 1).

Из-за этого я начинаю задаваться вопросом, что останавливает произвольное вредоносное приложение из 1), включая поля в манифесте, чтобы получить доступ к управлению учетной записью, а затем 2) от итерации по всем учетным записям определенного типа и вызова mAccountManger.getPassword(account) на них. Я знаю, что во время установки открывается диалоговое окно со всеми разрешениями, которые приложение запрашивает использовать, но я не думаю, что мы можем рассчитывать на то, что средний пользователь отклонит приложение, потому что он запрашивает подозрительные разрешения.

Есть ли способ предотвратить использование getPassword в типе учетной записи? Существуют ли способы защиты учетных записей в AccountManager из приложений, которые предоставили себе множество разрешений на учет?

4b9b3361

Ответ 1

Защита данных учетной записи основана на идентификаторе пользователя Linux (UID) процесса, делающего запрос. (См. Безопасность и разрешения в руководстве.) Каждая учетная запись связана с аутентификатором учетной записи (с идентификатором UID) и процессом, вызывающим getPassword (или несколько других методов) должен иметь тот же UID, что и аутентификатор.