Мениджърите на пароли, използващи API за автоматично попълване на Android Oreo, са потенциално уязвими за изтичане на данни

click fraud protection

Потенциален пропуск в сигурността на API за автоматично попълване на Android Oreo позволява на мениджърите на пароли да изтекат данни като пароли, адреси или кредитни карти.

Автоматично попълване е една от най-големите и най-известните нови функции, въведени с пускането на Android 8.0 Oreo. Много различни приложения за управление на пароли, като LastPass, вече са внедрили този нов API в своите приложения. И докато може да се окаже доста подобрение в сравнение с предишните реализации на автоматично попълване, използващи услуги за достъпност, има потенциален пропуск в сигурността, който трябва да се вземе предвид. Миналия месец в GitHub беше публикувана бяла книга, документираща присъщ недостатък в Android Oreo Autofill API, който може потенциално може да доведе до изтичане на повече от личните ви данни от вашия мениджър на пароли, отколкото сте му дали разрешение. Ще направим бърз преглед на бялата книга, написана от Марк Мърфи (по-известен като 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 относно тази уязвимост и екипите по сигурността зад тези 3 приложения са твърдеше че са сигурен, въпреки че все още не сме проверили тези твърдения.

Както можем да видим в твърденията по-горе, 1Password изисква удостоверяване от потребителя, преди да попълни данните, като също така ги уведомява какви данни ще бъдат попълнени предварително. Това също помага при проблема с безшумното попълване, тъй като ще се появи изскачащ прозорец за удостоверяване за всяка дейност, изискваща данни за автоматично попълване.

Enpass никога няма да разкрие целия ключодържател на искащото приложение, независимо дали е злонамерено или истинско. Само запазените елементи, съответстващи на името на пакета на искащото приложение, ще бъдат представени на потребителя. Те също потвърдиха, че ще въведат повече мерки след съветите на Google.

Освен това LastPass ни потвърди, че въпреки че не са знаели за проблема преди пускането на Android Oreo, приложението им използва разделяне на данни за защита на потребителите, заедно с други проверки, за да се уверите, че LastPass попълва само приложението, свързано с записа.

Въпреки че не би трябвало да има абсолютно никакви проблеми при използването на тези 3 приложения, ако искате да сте напълно наясно, трябва да деактивирате автоматично попълване напълно на телефона ви, докато не можете да потвърдите с разработчика на вашия мениджър на пароли, че тяхното приложение е безопасно от този ред на атака. За щастие това може да се направи лесно, като отидете в Настройки > Система > Езици и въвеждане > Разширени и намерите предпочитанието „Услуга за автоматично попълване”, докоснете го и изберете „Няма”.

Както казахме по-горе, не е известно дали Google наистина може да предложи корекция за това, така че използването на надеждни приложения или просто деактивирането на функцията е единственият начин да сте в безопасност. Ако искате да прочетете повече по този въпрос и всички подробности, свързани с него, трябва да прочетете оригинала бяла книга, която го документира на GitHub.


Тази статия беше актуализирана на 13.09.17 г., за да отразява по-точно значението на отговорите от LastPass, Enpass и 1Password.