SafetyNet пояснив, чому Android платити та інші програми не працюють на вкорінених пристроях
Вкорінення вашого пристрою Android дає вам доступ до більш широкого спектру програм і більш глибокого доступу до системи Android. Але деякі програми, такі як Google Pay-платний Android, не працюватимуть на укоріненому пристрої.
Google використовує те, що називається SafetyNet, щоб визначити, чи вкорінюється ваш пристрій, і блокує доступ до цих функцій. Google не єдиний, або багато інших програм також не працюватимуть на вкорінених пристроях Android, хоча вони можуть перевіряти наявність кореня іншими способами..
SafetyNet: Як Google знає, що ви вкоренили свій телефон Android
Пристрої Android пропонують "SafetyNet API", який є частиною рівня Служб Google Play, встановлених на пристроях Android, які схвалюють Google. Цей API "надає доступ до служб Google, які допомагають оцінити здоров'я та безпеку пристрою Android", повідомляє Google. Якщо ви розробник Android, ви можете викликати цей API у вашій програмі, щоб перевірити, чи пристрій, на якому ви працюєте, був підроблений.
Цей API SafetyNet призначений для перевірки того, чи було підроблено пристрій, чи він був укорінений користувачем, працює користувальницький ROM або був інфікований шкідливим програмним забезпеченням низького рівня, наприклад.
Пристрої, які поставляються з Google Play Store та іншими встановленими програмами, повинні передавати Google «Комплект тестів сумісності для Android». Укорінення пристрою або встановлення спеціального ПЗУ запобігає тому, щоб пристрій був "сумісним з CTS". Ось як API SafetyNet може визначити, якщо ви вкоренилися, він просто перевіряє сумісність CTS. Подібним чином, якщо ви отримаєте пристрій Android, який ніколи не потрапляв із додатками Google, наприклад, однією з цих 20 таблеток, що поставляються безпосередньо з заводу в Китаї, він не буде вважатися "сумісним із CTS", навіть якщо ви його не вкорінили..
Щоб отримати цю інформацію, служби Google Play завантажують програму з назвою "snet" і запускають її у фоновому режимі на вашому пристрої. Програма збирає дані з вашого пристрою і регулярно надсилає їх до Google. Google використовує цю інформацію для різних цілей, починаючи з отримання картини ширшої екосистеми Android, щоб визначити, чи було змінено програмне забезпечення вашого пристрою. Google не пояснює, що саме шукає snet, але ймовірно, що snet перевіряє, чи ваш системний розділ був змінений з заводського стану.
Ви можете перевірити статус SafetyNet вашого пристрою, завантаживши додаток, як SafetyNet Helper Sample або SafetyNet Playground. Додаток запитає службу SafetyNet від Google про стан вашого пристрою і повідомить вам, як він отримує відповідь від сервера Google.
Більше технічних деталей читайте у цьому блозі, написаному Джоном Козиракісом, технічним стратегом компанії Cigital, що займається питаннями безпеки програмного забезпечення. Він вкопався в SafetyNet і більше пояснює, як він працює.
Це до програми
SafetyNet є необов'язковим для розробників програм, і розробники програм можуть обрати його чи ні. SafetyNet лише запобігає роботі програми, якщо розробник програми не хоче, щоб вона працювала на вкорінених пристроях.
Більшість програм взагалі не перевірятимуть API SafetyNet. Навіть програма, яка перевіряє API SafetyNet, наприклад тестові програми вище, не перестане працювати, якщо отримає погану відповідь. Розробник програми повинен перевірити API SafetyNet і зробити додаток відмовитися від функціонування, якщо він дізнається, що програмне забезпечення вашого пристрою було змінено. Власний додаток Google для платних Android є гарним прикладом цього в дії.
Android Pay не працюватиме на вкорінених пристроях
Платформа мобільних платежів Android від Google не працює взагалі на вкорінених пристроях Android. Спробуйте запустити його, і ви просто побачите повідомлення, що “Android Pay не можна використовувати. Google не може підтвердити, що ваш пристрій або програмне забезпечення, на якому він працює, сумісні з Android. "
Мова йде не тільки про вкорінення, звичайно, запуск користувальницького ПЗУ також поставить вас назустріч цій вимозі. API SafetyNet стверджує, що він не є "сумісним з Android", якщо ви використовуєте спеціальний диск, з яким пристрій не прийшов.
Пам'ятайте, що це не просто виявляє вкорінення. Якщо ваш пристрій був заражений певним шкідливим програмним забезпеченням на рівні системи з можливістю шпигунства на платформі Android Pay та інших програмах, API SafetyNet також запобігає функціонуванню Android Pay, що є дуже корисним.
Вкорінення вашого пристрою порушує звичайну модель безпеки Android. Android Pay зазвичай захищає платіжні дані за допомогою функцій пісочниці Android, але програми можуть вирватися з пісочниці на укоріненому пристрої. Google не має можливості дізнатися, як безпечний Android Pay буде на певному пристрої, якщо він корені або працює невідомий користувальницький ROM, тому вони блокують його. Інженер Android Pay пояснив проблему на форумі XDA Developers, якщо вам цікаво прочитати більше.
Інші способи програми можуть виявляти корінь
SafetyNet - це лише один із способів, яким програма може перевірити, чи працює вона на кореневому пристрої. Наприклад, пристрої Samsung включають систему безпеки з назвою KNOX. Якщо ви викорінюєте свій пристрій, безпека KNOX спрацьовує. Samsung Pay, власна програма Samsung для мобільних платежів, відмовиться працювати на вкорінених пристроях. Samsung використовує KNOX для цього, але він може так само добре використовувати SafetyNet.
Крім того, багато програм сторонніх виробників заблокують вас від їх використання, і не всі вони використовують SafetyNet. Вони можуть просто перевіряти наявність відомих кореневих програм і процесів на пристрої.
Важко знайти найновіший список програм, які не працюють, коли коріння пристрою. Однак RootCloak надає кілька списків. Ці списки можуть бути застарілими, але вони найкращі, які ми можемо знайти. Багато банківських та інших програм для мобільних гаманців, які блокують доступ до укорінених телефонів, намагаючись захистити вашу банківську інформацію від захоплення інших програм. Програми для служб потокової передачі відео також можуть відмовитися від функціонування на укоріненому пристрої як своєрідну меру DRM, намагаючись запобігти запису захищеного відеопотоку.
Деякі програми можуть бути перехоплені
Google грає в кіт-і-мишу гру з SafetyNet, постійно оновлюючи її в спробі залишитися попереду людей, що обійшли його. Наприклад, розробник Android Chainfire створив новий метод укорінення пристроїв Android, не змінюючи системного розділу, відомого як "безсистемний корінь". SafetyNet спочатку не виявив таких пристроїв, як підроблений, і Android Pay працював - але SafetyNet був в остаточному підсумку оновлений, щоб виявити цей новий метод вкорінення. Це означає, що Android Pay більше не працює разом із системою без кореня.
Залежно від того, як програма перевіряє доступ до кореневої системи, ви можете її обдурити. Наприклад, як повідомляється, існують способи коріння деяких пристроїв Samsung без відключення безпеки KNOX, що дозволить вам продовжувати використовувати Samsung Pay.
У випадку з програмами, які просто перевіряють кореневі програми у вашій системі, існує модуль Xposed Framework з ім'ям RootCloak, який, як повідомляється, дозволяє вам у будь-якому випадку обдурити їх. Це працює з програмами, такими як DirecTV GenieGo, Best Buy CinemaNow і фільми Flixster, які зазвичай не працюють на укорінених пристроях. Однак, якщо ці програми були оновлені, щоб використовувати Google SafetyNet, їх не було б так легко обдурити таким чином.
Більшість програм продовжуватиме працювати нормально, коли ви вкорінюєте пристрій. Додатки для мобільних платежів є великим винятком, як і деякі інші банківські та фінансові програми. Платні послуги потокового відео іноді намагаються заблокувати вас від перегляду їхніх відео.
Якщо потрібна програма не працює на кореневому пристрої, ви завжди можете вимкнути пристрій, щоб його використовувати. Програма повинна працювати після повернення пристрою до безпечного, заводського стану.
Зображення: Danny Choo на Flickr