Как Root Detection на аниме игра доведе до откриване на уязвимост в сигурността в телефони от LG, OnePlus, Huawei, Xiaomi и други

Установено е, че смартфони от няколко производители като LG, OnePlus, Huawei, Xiaomi изпускат информация за процеса на приложения. Ето какво означава това.

Използва се мобилната операционна система Android на над 2 милиарда устройства всеки месец както от редовни потребители, така и от технологични ентусиасти. Въпреки че броят на хората, които отключват буутлоудъра и руутват своите смартфони, е относително малък, когато в сравнение с общата популация от потребители на Android, все още има много от нас във форуми като XDA и Reddit. Magisk е незаменим инструмент за бърникащата общност. Той осигурява безсистемен root достъп и има инструменти като MagiskHide, за да даде възможност на потребители с root права да продължат да използват приложенията, игрите и услугите, на които се радват, без ограничения. Въпреки това, популярна аниме игра умело злоупотребява с уязвимост на сигурността на системата, за да заобиколи анти-рут откриването на Magisk. Ето как работи това и кои устройства са засегнати от тази уязвимост на сигурността.

  • Една игра е използвала грешка, за да открие дали дадено устройство е руутнато. Ако устройството е руутнато, играта блокира потребителя да играе.
  • Грешката позволява на приложението да чете състоянието на други приложения в паметта, без да са необходими специални разрешения. Грешката не позволява на приложенията да крадат данни от други приложения. Грешката не е тежка и е сравнително безвредна.
  • Google вече е наясно на проблема и са актуализирали своите инструменти за тестване, за да се уверят, че всички устройства са защитени.

Заден план

Популярна аниме игра, наречена Fate/Grand Order, блокира опитите на руутнати потребители да играят играта. XDA признат разработчик topjohnwu, водещият разработчик на Magisk, преди това откри начин за да заобиколи откриването на root на Fate/Grand Order, но решението му не работеше на неговия OnePlus 6 въпреки всичките му усилия. Решен да не се отказва, разработчикът анализира Fate/Grand Order, за да разбере как все още открива root на неговото устройство OnePlus. Както той обяснява в своя Среден пост, това го доведе до откриването на уязвимост в сигурността, с която Fate/Grand Order очевидно злоупотребява, за да продължи да открива root достъп на устройства OnePlus.

Fate/Grand Order (английски)Разработчик: Aniplex Inc.

Цена: Безплатно.

4.

Изтегли

Procfs и Android

В Unix-базирани операционни системи има специална файлова система, наречена "procfs", съдържаща информация за процеси (помислете за приложения), като използването на тяхната памет (помислете за RAM), състояние (дали процесът работи, спане и др.). В повечето базирани на Unix операционни системи потребителят и приложенията имат лесен достъп до procfs, за да видят какви видове приложения и услуги се изпълняват на тяхната система (мислете за това като диспечера на задачите на Window.) Въпреки това, Google започна да блокирайте достъпа до procfs започвайки от Android 7.0 Nougat. Преди Android Nougat, приложения като SystemPanel можеха да събират данни за това кои приложения се изпълняват, без да се нуждаят от специални разрешения. След Android Nougat приложенията трябва да използват API като Статистика за използване или AccessibilityService, като и двете са затворени от разрешения, които трябва да бъдат предоставени от потребителя.

Системен панел 2Разработчик: NextApp, Inc.

Цена: Безплатно.

4.2.

Изтегли

Google не позволява на приложенията да четат състоянието на други приложения чрез procfs, като монтира /proc с флаг "hidepid=2." Чрез монтиране на procfs с hidepid=2, приложенията могат да виждат само състоянието на своя собствен процес. По този начин едно приложение ще трябва да използва приетите API като UsageStats или AccessibilityService, за да получи информация какви приложения и услуги се изпълняват на устройството.

Уязвимост

Ами ако procfs не е монтиран с hidepid=2? Е, тогава приложенията ще могат свободно да четат състоянието на други приложения (и точки на монтиране), работещи в системата, без да се нуждаят от допълнителни разрешения*. Google монтира procfs с hidepid=2 на собствените си устройства, но не налага това изискване на устройства от други производители. Няколко устройства от LG, OnePlus, Huawei/Honor, Xiaomi и други не са монтирали procfs с hidepid=2, от което се възползват приложения като Fate/Grand Order, за да открият дали Magisk присъства на устройството.

*Промяна в сигурността в Android 9 Pie не позволява на приложенията да четат информация извън техния собствен „SELinux контекст“, тъй като всяко приложение вече е изолирано индивидуално. SELinux е модул на ядрото, който действа като своеобразен пазач, блокирайки достъпа на приложения и услуги до файлове, които не би трябвало да имат. Контекстът на SELinux е като етикет за файл, който има информация като потребител и роля. Приложенията със същия SELinux контекст могат да четат информация за други приложения в същия контекст, ако флагът hidepid=2 не е активиран за procfs. На устройства, работещи с Android 9 Pie, само приложения, които са създадени, насочени към Android Pie, ще имат новите промени на Android Pie в SELinux, които се прилагат към тях. Приложенията, които са насочени към Android 8.1 Oreo или по-стари, ще използват старите правила на SELinux, позволявайки им достъп информация за процеси в същия SELinux контекст, стига procfs да е монтиран без hidepid=2. Повечето приложения, работещи на вашето устройство, трябва поне да са насочени към Android 8.0 Oreo благодарение на нови изисквания на Google Play, но много от тях все още не са актуализирани, за да са насочени към Android Pie.

Следните екранни снимки показват последствията от немонтирането на procf с hidepid=2.

колко лошо е това

Ако трябва да сравним тази уязвимост на системата с експлойти като Fusée Gelée, Блуборн, КРАК, и Стопяване/Призрак, тогава този бъг бледнее в сравнение. Приложенията не могат да използват това, за да получат root достъп или да откраднат вашите пароли. Вашите банкови сметки са в безопасност, както и вашите кредитни карти. Най-лошото, което едно приложение може да направи, е да разбере дали друго приложение работи на вашето устройство, което има много ограничени употреби. Не забравяйте, че това е стандартно поведение на много 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

Не

Google

Pixel 2

Android 9 Pie

Не

Google

Pixel 3

Android 9 Pie

Не

Google

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

Мото 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 вече ще изисква всички устройства да монтират procfs с hidepid=2. Те ще наложат това чрез актуализиране пакетът за тестове за съвместимост (CTS), набор от тестове, които всички устройства трябва да преминат, за да могат да използват приложения и услуги на Google Play. Всички производители на оригинално оборудване (които искат да продават устройства с предварително инсталиран Google Play Store) трябва в крайна сметка да издадат актуализация за повторно монтиране на procfs с hidepid=2 в близко бъдеще. Тъй като устройствата OnePlus бяха първите открити с този проблем, OnePlus вече е уведомен и работи по поправка. Ще актуализираме тази статия, ако други OEM производители коментират тази грешка, но няма нужда да се чудите дали OEM на вашето устройство ще издаде актуализация. Ако искат тяхната актуализация да премине CTS, тогава трябва да поправят тази грешка.