Что защищает пароли Android AccountManager от чтения другими приложениями? - PullRequest
13 голосов
/ 18 ноября 2011

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

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

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

1 Ответ

9 голосов
/ 18 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...