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

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

Автозаповнення є однією з найбільших і найбільш розрекламованих нових функцій, представлених з випуском Android 8.0 Oreo. Багато різних програм для керування паролями, як-от LastPass, уже впровадили цей новий API у свої програми. І поки це може виявитися досить покращення Порівняно з попередніми реалізаціями автозаповнення з використанням Accessibility Services існує потенційний недолік безпеки, який слід враховувати. Минулого місяця на GitHub було опубліковано офіційний документ, у якому задокументовано невід’ємну помилку в Android Oreo Autofill API, яка може потенційно може призвести до того, що ваш менеджер паролів випустить більше ваших особистих даних, ніж ви йому дозволили. Ми збираємося зробити короткий виклад білої книги, написаної Марком Мерфі (більш відомим як CommonsWare) і опубліковано на його сторінці GitHub 8 серпня 2017 року.


Потенційний витік даних в API автозаповнення Android Oreo

Як працює недолік?

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

В Android Oreo це працює дещо по-іншому, оскільки програми для паролів тепер офіційно підтримуються API автозаповнення. Додатки сторонніх паролів більше не потребують служб доступності, оскільки тепер вони можуть виконувати роль служби автозаповнення, спілкуючись із програмами через Autofill Framework. Коли користувач фокусується на віджеті, система запакує деяку інформацію про цей віджет/форму та надішле її до програми автозаповнення. Потім програма повертає відповідні дані автозаповнення, такі як паролі, електронні листи, дані кредитних карток або будь-які інші конфіденційні дані. Система Android діє як посередник між програмою, яка зберігає дані, і програмою, яка їх запитує.

Програма автозаповнення в Android 8.0 Oreo

Однак шкідливі програми або зловмисне програмне забезпечення можуть скористатися функцією автозаповнення, щоб отримати більше даних для себе. Зловмисна діяльність може вимагати введення додаткових даних автозаповнення за допомогою невидимого або прихованого віджета. Поки користувач погоджується заповнити один із видимих ​​віджетів, як-от форму для входу чи щось подібне, невидимий віджет також отримує додаткові дані, навіть якщо ви їх не бачите. Це може бути дуже небезпечно, якщо витік інформації – це ваш пароль, адреса чи дані кредитної картки!

Знімки екрана вище демонструють зловмисну ​​тестову програму, яка використовує цей недолік безпеки.

Відповідь Google на проблему

Відповідно до CommonsWare, ця проблема безпеки ще не має публічного рішення, опублікованого Google. Однак ми знаємо, що Google знає про проблему. CommonsWare стверджує, що інженери Google визнали існування проблеми в приватному звіті відстеження проблем, але було б важко (якщо не неможливо) виправити його або розгорнути виправлення.

але це не означає, що автозаповнення абсолютно небезпечно використовувати, оскільки Google використовує інший підхід до забезпечення безпеки даних. Компанія є наполягаючи на тому, щоб служби автозаповнення вирішували проблему самостійно і як такий, намагається підвищити обізнаність розробників щодо покращення своїх постачальників автозаповнення та зробити їх безпечнішими. Що саме пропонується?

Перш за все, провайдери автозаповнення повинні розділити свої дані. Замість того, щоб зберігати всі дані автозаповнення в одному пулі, розробники повинні розділити дані користувача, що зберігаються в розділах. Наприклад, розділ адреси/телефону, розділ кредитної картки, розділ пароля/імени користувача тощо. Служба автозаповнення має повертати дані лише одного розділу за раз на основі виділеного віджета. Це один із загальнодоступні сторінки у програмах автозаповнення, які захищають себе від витоку даних у невидимі віджети.

На думку інженерів Google, розробники менеджерів паролів повинні робити ще деякі речі. Наприклад, постачальник автозаповнення має повертати дані лише тій програмі, яка їх надала. Це слід зробити, перевіривши назву пакета та публічний підпис програми, щоб навіть змінений APK не міг отримати до нього доступ. Інша річ полягає в тому, що програми автозаповнення вимагають автентифікації перед фактичним наданням даних ця активність автентифікації інформує користувача про те, які дані будуть надані програмі, яка їх запитує. Ця порада насправді має багато помилок, найважливіша з яких полягає в тому, що ці поради насправді не виконуються Google.

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

Які програми захищені від цієї вади?

Ми звернулися до розробників 1Password, Enpass і LastPass щодо цієї вразливості, а групи безпеки, що стоять за цими 3 програмами, стверджував що вони є безпечний, хоча ми ще не перевірили ці заяви.

Як ми бачимо в наведених вище заявах, 1Password вимагає автентифікації від користувача перед заповненням даних, а також повідомляє його про те, які дані будуть заповнені заздалегідь. Це також допомагає вирішити проблему тихого заповнення, оскільки спливаюче вікно автентифікації з’являтиметься для кожної дії із запитом даних автозаповнення.

Enpass ніколи не відкриє весь брелок програмі, яка запитує, незалежно від того, чи є вона зловмисною чи справжньою. Користувачеві будуть представлені лише збережені елементи, які відповідають назві пакета програми, яка запитує. Вони також підтвердили, що будуть вживати додаткові заходи відповідно до порад Google.

Крім того, LastPass підтвердив нам, що, хоча вони не знали про проблему до випуску Android Oreo, їхній додаток використовує розділення даних для захисту користувачів, а також інші перевірки, щоб переконатися, що LastPass заповнює лише програму, пов’язану з записом.

Хоча з використанням цих 3 програм не повинно виникнути абсолютно ніяких проблем, якщо ви хочете залишатися в повному обсязі, вам слід вимкнути повністю автозаповнювати на вашому телефоні, доки ви не підтвердите з розробником менеджера паролів, що його програма захищена від цієї лінії напад. На щастя, це можна легко зробити, перейшовши в «Налаштування» > «Система» > «Мови та введення» > «Додатково», знайшовши параметр «Сервіс автозаповнення», торкнувшись його та вибравши «Немає».

Як ми вже говорили вище, невідомо, чи зможе Google справді виправити цю проблему, тому використання надійних додатків або просто відключення цієї функції є єдиним способом безпеки. Якщо ви хочете прочитати більше про це питання та всі подробиці, пов’язані з ним, вам слід прочитати оригінал технічний документ, що документує це на GitHub.


Цю статтю було оновлено 9/13/17, щоб точніше відобразити наслідки відповідей LastPass, Enpass і 1Password.