Google погрожує видалити додатки зі службами доступності з Play Store

click fraud protection

Google надсилає електронні листи з попередженнями, щоб розробники не використовували служби доступності не за призначенням, інакше їхні програми буде видалено з Play Store.

оновлення: LastPass щойно відповів на цю новину та заявляє, що «негайного впливу» на їхні додатки для Android не буде. Чи означає це, що інші програми будуть пом’якшені, ще належить побачити.

Деякі з найбільш інноваційних програм у магазині Play побудовано на використанні API у спосіб, який Google ніколи не планував. Існують програми, які можуть змінити призначення клавіш гучності, щоб пропускати музичні композиції, записувати та відтворювати сенсорні введення на веб-сторінок або ігор і навіть надає альтернативні клавіші навігації, щоб ви могли використовувати весь пристрій екран. Усі ці приклади, які я щойно згадав, покладаються на API доступності Android. Але це може скоро змінити, оскільки команда Google Play Store надсилає електронні листи розробникам із повідомленням, що вони можуть більше не впроваджують служби доступності, якщо вони не дотримуються вказівок Google.


Що таке служба доступності?

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

Служба доступності, яку зазвичай називають a11y, — це програма, якій система може передавати певну інформацію залежно від того, що події служба доступності реєструється для прослуховування. Програма, яка хоче запровадити службу доступності, має додати android.permission.BIND_ACCESSIBILITY_SERVICE дозвіл на файл AndroidManifest, щоб лише система могла прив’язуватися до служби програми.

Наприклад, якщо служба доступності створена для прослуховування TYPE_VIEW_CLICKED події, тоді ця служба отримуватиме інформацію від системи про будь-які кнопки, які може натиснути користувач. Служба доступності також може реагувати на певні жести та KeyEvents і використовувати їх до того, як їх отримають інші програми. Нарешті, служба доступності також може впроваджувати певні KeyEvents, такі як кнопка «Назад», «Розділений екран» або кнопка останніх програм.

Таким чином, служби доступності можуть бути надзвичайно потужний і корисний. Кілька найпопулярніших інноваційних програм у Google Play Store покладаються на a11y для виконання своїх обов’язків. Ось лише деякі з кількох прикладів, які я придумав на голову:

  • Автовведення - перехоплювати KeyEvents і виконувати жести натискання/гортання
  • Кнопка Mapper - перехоплювати KeyEvents і перевідображати їх на інші KeyEvents
  • Озеленити - автоматичне сплячий режим додатків, примусово закриваючи їх перед вимкненням екрана
  • Введення+ - визначити, коли відкрита програма для клавіатури, щоб показати плаваючу кнопку дії
  • LastPass - сканувати сторінки на предмет імені користувача/паролю (необхідно до Android Oreo)
  • Швидке перемикання - відправити KeyEvent для кнопки "Назад".
  • Tasker - визначати, коли програми відкриті, щоб ви могли виконувати будь-які дії, визначені користувачем
  • Тип машини - записуйте весь введений текст, щоб ви ніколи не втратили жодного текстового введення

Жоден із цих додатків не використовує a11y так, як задумав Google, тобто допомагати користувачам з обмеженими можливостями. Б’юся об заклад, що переважна більшість програм, які реалізують Службу доступності, роблять це для функцій, які не належать Google. Але в цьому й полягає краса Android і API, як-от Accessibility — зазвичай Google не обмежує, що розробники можуть, а що — ні. Однак цей невиразний підхід до використання служб доступності змінюється, як і Google Play Команда магазину надсилає електронні листи розробникам, попереджаючи їх про майбутні зміни в їхній політиці щодо a11y.


Що саме робить Google?

Компанія інформує розробників, що якщо їхня програма використовує Службу доступності з будь-якої причини, крім допомоги користувачам з обмеженими можливостями, вони повинні скасувати використання цього дозволу протягом 30 днів, інакше їхню програму буде видалено з Play Store. Недотримання цієї вимоги може призвести до порушення облікового запису розробника Play Store, яке може зрештою призведе до припинення облікового запису.

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

Повний електронний лист надіслано розробникам

Привіт, розробники в ****,

Ми зв’язуємося з вами, оскільки ваш додаток **** із назвою пакета **** запитує "android.permission. BIND_ACCESSIBILITY_SERVICE.' Програми, які запитують служби доступності, слід використовувати лише для того, щоб допомогти користувачам з обмеженими можливостями користуватися пристроями та програмами Android. Ваша програма має відповідати нашим Дозволи політику та вимоги до явного розкриття інформації Дані користувача політики.

Потрібна дія: якщо ви ще цього не робите, ви повинні пояснити користувачам, як ваша програма використовує "android.permission. BIND_ACCESSIBILITY_SERVICE', щоб допомогти користувачам з обмеженими можливостями використовувати пристрої та програми Android. Програми, які не відповідають цій вимозі протягом 30 днів, можуть бути видалені з Google Play. Крім того, ви можете видалити будь-які запити на служби доступності у своїй програмі. Ви також можете скасувати публікацію програми.

Якщо вам потрібно внести зміни у свої програми, виконайте наведені нижче дії.

  • Прочитайте Дозволи і Дані користувача політики, щоб дізнатися більше, і переконайтеся, що ваша програма відповідає всім правилам, переліченим у Програмна політика розробника.
  • Якщо вам не потрібен дозвіл BIND_ACCESSIBILITY_SERVICE у вашій програмі або дозвіл використовується для чогось іншого, ніж для допомоги користувачам з обмеженими можливостями у використанні пристроїв і програм Android:
    1. Видаліть запит на цей дозвіл із маніфесту програми.
    2. Увійдіть у свою Play Console і завантажте свій модифікований APK, сумісний із політикою.
  • Або, якщо вам потрібен дозвіл BIND_ACCESSIBILITY_SERVICE у вашій програмі, щоб допомогти користувачам з обмеженими можливостями використовувати пристрої та програми Android:
    1. Включіть такий фрагмент в опис додатка в магазині: «Цей додаток використовує служби доступності».
    2. Перед тим, як попросити користувача надати цей дозвіл у вашому додатку, надайте чітку інформацію про таке використання. Ваша інформація має відповідати кожній із наведених нижче вимог.
      • Розкриття має бути надано через android: резюме і android: опис елементи класу AccessibilityServiceInfo
      • У розкритті має бути описано функції, які дозвіл служби доступності вмикає для вашої програми. Кожна функція, яка використовується із запитом на службу доступності, має бути заявлена ​​у вашому звіті з обґрунтуванням.

Крім того, ви можете скасувати публікацію програми.

Усі порушення відслідковуються. Серйозні або неодноразові порушення будь-якого характеру призведуть до припинення дії вашого облікового запису розробника, розслідування та можливого припинення пов’язаних облікових записів Google.

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

З повагою,

Команда перевірки Google Play

читати далі


Чому Google видаляє служби доступності з Play Store?

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

Зусилля Google щодо захисту користувачів від зловмисних служб доступності здебільшого зосереджені на розкритті інформації. Наразі вмикається служба доступності, яка реєструється для певних подій, як-от TYPE_VIEW_TEXT_CHANGED призведе до діалогового вікна з попередженням про те, що програма може викрасти ваші паролі. Ви можете подумати, що таке повідомлення буде ефективним у запобіганні користувачам від безвідповідального надання додатків. Однак було багато задокументованих випадків, коли програми обманом змушували користувачів надавати a11y. Деякі атаки йдуть ще далі, наприклад Експлойт Cloak and Dagger і Атаки Toast Message Overlay які соціально інженерно змушують користувача надавати a11y, неправильно представляючи, з чим вони взаємодіють на екрані.

Такі атаки ефективні на переважній більшості пристроїв Android. Google досяг значних успіхів у запобіганні атакам накладених або тост-повідомлень (як це можна побачити в AOSP, якщо ви шукаєте a11y), але все дійшло до того, що Google вирішив, що їм краще обмежити використання служб доступності повністю. Це має сенс, але це дійсно відстій оскільки цей крок призведе до втрати функціональності багатьох інноваційних програм.


Що можуть зробити розробники?

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

Рефакторинг додатків, щоб більше не використовувати службу доступності, можливий для деяких, але не для всіх програм, які ми згадували. Менеджери паролів, такі як LastPass, можуть перейти на Autofill Framework, але лише якщо користувач використовує Android 8.0 Oreo і вище. Якщо програма використовує a11y для відстеження того, коли інші програми відкриті, натомість цю програму можна написати за допомогою служби опитування за допомогою UsageStats API. Такі програми, як Tasker, можуть пережити такі зміни. Іншим, таким як Button Mapper і AutoInput, не пощастило — без root неможливо перехопити KeyEvents.

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


Оновлення 1: заплутана документація розробника

Документи розробника Google для створення служби доступності здається, суперечить цьому новому фокусу команди Google Play Store. На момент написання цієї статті сторінка має таке формулювання:

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

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

Дякуємо Жоао Діасу за цю інформацію.