Смартфони кількох виробників, як-от LG, OnePlus, Huawei, Xiaomi, виявили витік інформації про процеси програм. Ось що це означає.
Використовується мобільна операційна система Android понад 2 мільярди пристроїв кожного місяця як звичайними споживачами, так і ентузіастами технологій. Хоча кількість людей, які розблокують завантажувач і рутують свої смартфони, відносно невелика порівняно із загальною популяцією користувачів Android, нас все ще багато на таких форумах, як XDA та Reddit. Magisk є незамінним інструментом для спільноти майстрів. Він надає безсистемний root-доступ і має такі інструменти, як MagiskHide, які дозволяють користувачам root-доступу продовжувати користуватися додатками, іграми та послугами, якими вони користуються, без обмежень. Однак популярна аніме-гра спритно зловживала вразливістю системи безпеки, щоб обійти анти-root виявлення Magisk. Ось як це працює та на які пристрої впливає ця вразливість безпеки.
- Гра використовувала помилку, щоб виявити, чи було рутовано пристрій. Якщо пристрій рутований, гра блокує користувача від гри.
- Помилка дозволяє додатку читати статус інших додатків у пам’яті, не потребуючи спеціальних дозволів. Помилка не дозволяє програмам красти будь-які дані з інших програм. Помилка несерйозна і досить нешкідлива.
- Google вже в курсі проблеми та оновили свої інструменти тестування, щоб переконатися, що всі пристрої захищені.
Фон
Популярна аніме-гра під назвою Fate/Grand Order блокує користувачам із root-доступом спроби зіграти в гру. Визнаний розробник XDA topjohnwu, провідний розробник Magisk, раніше знайшов спосіб щоб обійти виявлення кореневої системи Fate/Grand Order, але його рішення не працювало на його OnePlus 6, незважаючи на всі його зусилля. Вирішивши не здаватися, розробник проаналізував Fate/Grand Order, щоб з’ясувати, як він все ще виявляє root на його пристрої OnePlus. Як він пояснює у своєму Середній пост, це привело його до виявлення вразливості безпеки, якою Fate/Grand Order, очевидно, зловживав, щоб продовжувати виявляти root-доступ на пристроях OnePlus.
Ціна: безкоштовно.
4.
Procfs і Android
В операційних системах на основі Unix існує спеціальна файлова система під назвою "procfs", яка містить інформацію про процеси (наприклад, програми), як-от використання пам’яті (оперативна пам’ять), статус (чи працює процес, спати тощо). У більшості операційних систем на основі Unix користувач і програми мають легкий доступ до procfs, щоб побачити, які види програми та служби працюють у їхній системі (подумайте про це як про диспетчер завдань Window). Однак Google почав заблокувати доступ до procfs починаючи з Android 7.0 Nougat. До Android Nougat такі програми, як SystemPanel, могли збирати дані про запущені програми, не потребуючи жодних спеціальних дозволів. Після Android Nougat додатки повинні використовувати такі API Статистика використання або AccessibilityService, обидва з яких обмежені дозволами, які має надати користувач.
Ціна: безкоштовно.
4.2.
Google забороняє додаткам зчитувати статус інших додатків через procf, монтуючи /proc із прапорцем «hidepid=2». Монтуючи procf із hidepid=2, програми можуть бачити лише стан свого процесу. Таким чином, програмі потрібно буде використовувати прийнятні API, такі як UsageStats або AccessibilityService, щоб отримати інформацію про те, які програми та служби працюють на пристрої.
Вразливість
Що робити, якщо procfs не змонтовано з hidepid=2? Ну, тоді програми зможуть вільно читати статус інших програм (і точок монтування), запущених у системі, не потребуючи жодних додаткових дозволів*. Google монтує procfs із hidepid=2 на своїх власних пристроях, але вони не застосовують цю вимогу до пристроїв інших виробників. Кілька пристроїв від LG, OnePlus, Huawei/Honor, Xiaomi та інших не монтували procf з hidepid=2, якими користуються такі програми, як Fate/Grand Order, щоб визначити, чи присутній Magisk на пристрій.
*Зміни в системі безпеки в Android 9 Pie не дозволяють програмам читати інформацію поза їхнім власним «контекстом SELinux», оскільки кожна програма тепер ізольована окремо. SELinux — це модуль ядра, який діє як свого роду сторож, блокуючи додаткам і службам доступ до файлів, до яких вони не мають доступу. Контекст SELinux подібний до мітки для файлу, який містить інформацію про користувача та роль. Програми з тим самим контекстом SELinux можуть читати інформацію про інші програми в тому самому контексті, якщо для procfs не ввімкнено позначку hidepid=2. На пристроях під керуванням Android 9 Pie нові зміни SELinux Android Pie застосовуватимуться лише до програм, створених для Android Pie. Програми, націлені на Android 8.1 Oreo або старіших версій, використовуватимуть старі правила SELinux, що дозволить їм отримати доступ інформація про процеси в тому самому контексті SELinux, якщо procfs монтується без нього hidepid=2. Більшість додатків, які працюють на вашому пристрої, повинні бути принаймні націлені на Android 8.0 Oreo завдяки нові вимоги Google Play, але багато з них ще не оновлено для Android Pie.
Наступні знімки екрана показують наслідки немонтування procf із hidepid=2.
Наскільки це погано?
Якби ми порівняли цю вразливість системи з такими експлойтами, як Fusée Gelée, Блюборн, ТРІЩИНА, і Meltdown/Spectre, тоді ця помилка блідне в порівнянні. Програми не можуть використовувати це для отримання кореневого доступу або викрадення ваших паролів. Ваші банківські рахунки та кредитні картки в безпеці. Найгірше, що може зробити програма, це визначити, чи запущено на вашому пристрої іншу програму, яка має дуже обмежене використання. Пам’ятайте, що це стандартна поведінка багатьох дистрибутивів GNU/Linux і що Google нещодавно почав блокувати доступ до procfs з Android Nougat. Ця помилка дозволяє програмам обходити потребу в певних дозволах для моніторингу інших процесів, але вони все одно не можуть зламати пісочницю Android і викрасти дані з інших програм. Незважаючи на це, це ненавмисна поведінка та порушує функцію конфіденційності Android, тому її потрібно виправити.
Чи впливає мій пристрій?
Ось список пристроїв, які, як ми виявили, не монтують procfs із hidepid=2:
OEM |
пристрій |
Версія Android |
procfs Витоки |
---|---|---|---|
Asus |
ZenFone 5Z |
Android 8.0 Oreo |
Так |
BlackBerry |
КЛЮЧ2 |
Android 8.0 Oreo |
Немає |
Необхідний |
PH-1 |
Android 9 Pie |
Немає |
Pixel 2 |
Android 9 Pie |
Немає |
|
Pixel 3 |
Android 9 Pie |
Немає |
|
Pixel 3 XL |
Android 9 Pie |
Немає |
|
Честь |
Магія 2 |
Android 9 Pie |
Так |
HTC |
U12+ |
Android 8.0 Oreo |
Так |
Huawei |
Mate 20 X |
Android 9 Pie |
Так |
LG |
G7 ThinQ |
Android 8.0 Oreo |
Так |
LG |
V40 ThinQ |
Android 8.1 Oreo |
Так |
Motorola |
Moto G4 |
Android 8.1 Oreo |
Немає |
Nokia |
7.1 |
Android 8.1 Oreo |
Немає |
OnePlus |
6 |
Android 8.1 Oreo/Android 9 Pie |
Так |
OnePlus |
6T |
Android 9 Pie |
Так |
Razer |
Телефон 2 |
Android 8.1 Oreo |
Так |
Samsung |
Galaxy Note 8 |
Android 8.0 Oreo |
Немає |
Samsung |
Galaxy Note 9 |
Android 8.1 Oreo/Android 9 Pie |
Немає |
Samsung |
Galaxy S7 |
Android 8.0 Oreo |
Немає |
Samsung |
Galaxy S8 |
Android 8.0 Oreo |
Немає |
Samsung |
Galaxy S9 |
Android 9 Pie |
Немає |
Samsung |
Galaxy S9+ (Exynos) |
Android 8.0 Oreo |
Так |
Sony |
Xperia XZ1 |
Android 9 Pie |
Немає |
Xiaomi |
Mi Mix 2S |
Android 9 Pie |
Так |
Xiaomi |
POCO F1 |
Android 8.1 Oreo |
Так |
Як перевірити, чи вражений ваш пристрій
Досить легко перевірити, чи ваш пристрій передає інформацію про процес іншим програмам (іншими словами, procfs не монтується з hidepid=2). Хоча ви можете використовувати команди оболонки, як і ми, ви також можете перевірити за допомогою програми, розробленої topjohnwu. Його програма також дозволяє повторно монтувати procfs за допомогою hidepid=2, якщо ваш телефон рутований.
Завантажити ProcGate
Чи буде виправлення?
Так, це буде виправлено. Google тепер вимагатиме, щоб усі пристрої монтували procf із hidepid=2. Вони забезпечуватимуть це шляхом оновлення набір тестів на сумісність (CTS), набір тестів, які мають пройти всі пристрої, щоб мати можливість використовувати програми та служби Google Play. Усі OEM-виробники (які хочуть продавати пристрої з попередньо встановленим магазином Google Play Store) мають зрештою випустити оновлення для перемонтування procfs із hidepid=2 найближчим часом. Оскільки пристрої OnePlus були першими, у яких виявлено цю проблему, OnePlus вже повідомили про проблему та працюють над її виправленням. Ми оновимо цю статтю, якщо інші OEM-виробники прокоментують цю помилку, але немає потреби гадати, чи OEM вашого пристрою випустить оновлення. Якщо вони хочуть, щоб їх оновлення пройшло CTS, вони повинні виправити цю помилку.