Менеджеры паролей, использующие API автозаполнения Android Oreo, потенциально уязвимы к утечке данных

click fraud protection

Потенциальный недостаток безопасности в API автозаполнения Android Oreo позволяет менеджерам паролей передавать такие данные, как пароли, адреса или кредитные карты.

Автозаполнение — одна из самых масштабных и широко разрекламированных новых функций, представленных в выпуске Android 8.0 Oreo. Многие различные приложения для управления паролями, такие как LastPass, уже внедрили этот новый API в свои приложения. И хотя это может оказаться довольно хорошее улучшение По сравнению с предыдущими реализациями автозаполнения с использованием служб специальных возможностей, существует потенциальный недостаток безопасности, который следует учитывать. В прошлом месяце на GitHub был опубликован официальный документ, документирующий врожденный недостаток в API автозаполнения Android Oreo, который мог потенциально может привести к тому, что ваш менеджер паролей утечет больше ваших личных данных, чем вы дали ему на это разрешение.. Мы собираемся кратко изложить технический документ, написанный Марком Мерфи (более известным как CommonsWare) и опубликован на его странице GitHub 8 августа 2017 года.


Потенциальная ошибка утечки данных в API автозаполнения Android Oreo

Как работает недостаток?

Реализация автозаполнения в Android Nougat (и более ранних версиях) и в таких браузерах, как Google Chrome, очень проста. Обычно приложения для управления паролями используют службы специальных возможностей для сканирования содержимого экрана в поисках поля для входа и рекомендуют данные для автозаполнения на основе того, что они обнаруживают. Пока это работало, это может вызвать значительное отставание.

В Android Oreo это работает немного по-другому, поскольку приложения для паролей теперь официально поддерживаются API автозаполнения. Сторонние приложения для паролей больше не требуют служб специальных возможностей, поскольку теперь они могут выполнять роль службы автозаполнения, взаимодействуя с приложениями через платформу автозаполнения. Когда пользователь фокусируется на виджете, система упаковывает некоторую информацию об этом виджете/форме и отправляет ее в приложение автозаполнения. Затем приложение возвращает соответствующие данные автозаполнения, такие как пароли, адреса электронной почты, кредитные карты или любые другие конфиденциальные данные. Система Android выступает посредником между приложением, хранящим данные, и приложением, которое их запрашивает.

Приложение автозаполнения в Android 8.0 Oreo

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

На скриншотах выше показано вредоносное тестовое приложение, использующее этот недостаток безопасности.

Ответ Google на проблему

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

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

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

По мнению инженеров Google, есть и другие вещи, которые следует сделать разработчикам менеджеров паролей. Например, поставщик автозаполнения должен возвращать данные только тому конкретному приложению, которое их предоставило. Это следует сделать путем проверки имени пакета и общедоступной подписи приложения, чтобы даже модифицированный APK не мог получить к нему доступ. Другое дело, что приложения с автозаполнением требуют аутентификации перед фактическим предоставлением данных. это действие аутентификации, информирующее пользователя, какие данные будут предоставлены приложению, запрашивающему их. В этом совете на самом деле много ошибок, самая важная из которых заключается в том, что Google на самом деле не соблюдает эти советы.

Имейте в виду, что многие из приведенных выше предложений были взяты из частного отчета по отслеживанию проблем CommonsWare, а не из какой-либо официальной страницы документации Google. Для получения более подробной технической информации о том, как приложения, использующие API автозаполнения, могут защитить себя от такого рода атак, мы настоятельно рекомендуем вам прочитать полный технический документ от CommonsWare.

Какие приложения защищены от этого недостатка?

Мы обратились к разработчикам 1Password, Enpass и LastPass по поводу этой уязвимости, и команды безопасности, стоящие за этими тремя приложениями, сообщили об этой уязвимости. заявлено что они безопасный, хотя мы еще не проверили эти утверждения.

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

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

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

Хотя при использовании этих трех приложений не должно возникнуть абсолютно никаких проблем, если вы хотите оставаться в безопасности, вам следует отключить полностью автозаполнять на своем телефоне, пока вы не подтвердите разработчику вашего менеджера паролей, что его приложение защищено от этой строки. атака. К счастью, это можно легко сделать, зайдя в «Настройки» > «Система» > «Языки и ввод» > «Дополнительно» и найдя параметр «Служба автозаполнения», нажав на него и выбрав «Нет».

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


Эта статья была обновлена ​​13 сентября 2017 г., чтобы более точно отразить последствия ответов LastPass, Enpass и 1Password.