PSA: будьте обережні з встановленням будь-чого, якщо для SELinux встановлено дозвіл

click fraud protection

Недокументована функція Android дозволяє будь-якому довільному додатку отримати кореневий доступ у дозволеному середовищі SELinux. Читайте далі, щоб дізнатися більше!

У світі модифікації Android люди схильні вважати root-доступ наріжним каменем усього. Це дозволяє користувачам повністю контролювати свої пристрої та додавати функції, які не завжди доступні в стандартній конфігурації. Але, як кажуть, «з великою потужністю приходить велика відповідальність» — нерозумно обходити модель безпеки Android, якщо ви не знаєте, на що йдете. Для досвідчених ентузіастів Android на наших форумах, ви, напевно, знаєте про потенційну можливість існування бекдорів на вашому пристрої, і ви, швидше за все, використовуєте надійний мод із підтримкою root-доступу поверх останньої версії Android із найновішою безпекою патчі. Зважаючи на це, ви можете знати кількох людей, які насправді не дбають про те, які кореневі налаштування вони встановлюють, якщо вони, здавалося б, працюють на них. Ось чому ви все ще можете знайти вантажівку модів, які працюють лише тоді, коли для SELinux встановлено дозвіл, що, у свою чергу, робить користувачів надзвичайно вразливими до загроз безпеці.

Що таке SELinux

SELinux, або Linux із підвищеною безпекою, це модуль безпеки ядра Linux, спеціально розроблений для доступу та керування політиками безпеки. Спочатку було представлено в Android 4.3 Jelly Bean і встановлено режим Enforcing за умовчанням, починаючи з Android 4.4 KitKat, SELinux допомагає застосовувати права контролю доступу та намагається запобігти підвищенню привілеїв напади. Коротко кажучи, SELinux діє як перешкода для несанкціонованого контролю над вашим пристроєм, наприклад програмою або вразливістю, спрямованою на зловмисне отримання кореневого доступу. Встановлення SELinux на «Enforcing» за замовчуванням є одним із ключових способів захисту звичайних користувачів від таких атак.

Чому дозволений SELinux не рекомендується

Повторюємо, що типовий спосіб отримання кореневого доступу на пристрої Android не обов’язково потребує зміни статусу SELinux. Зміщення режиму SELinux із «Примусового» до «Дозвільного» навмисно вимикає одну з ключових функцій безпеки на пристрої, тому користувач повинен явно дозволити це, встановивши спеціалізоване користувальницьке ядро ​​або змінивши параметри існуючого завантажувального образу. Погано закодована модифікація без належної політики SELinux зазвичай змушує кінцевих користувачів переходити на дозволений SELinux і, по суті, розширює поверхню атаки. Саме такий розробник vvb2060 продемонстрували, коли вони опублікував доказ концепції методу ескалації привілеїв де єдиною вимогою для отримання контролю є дозволений SELinux.

Входить Magica

Користувачеві надзвичайно легко отримати повний кореневий доступ на власному пристрої під керуванням Android 10 (або новішої версії) з дозволом SELinux. зробити: Все, що вам потрібно зробити, це натиснути кнопку install, і "Magica" автоматично отримає root-доступ у службі та встановить Magisk у завантажувальну систему. зображення. Це щось набагато ширше за обсягом, ніж просто налаштування вашого пристрою. За словами XDA Senior Recognized Developer і Magisk Maintainer topjohnwu, будь-яка довільна програма, включно зі зловмисним програмним забезпеченням, може назавжди рутувати ваш пристрій без вашої згоди та дозволу за допомогою PoC.

Якщо вам цікаво на технічному рівні, що Magica використовує, topjohnwu пояснив наступне в публікація на Reddit:

«Коли SELinux має дозвіл під час завантаження, zygote дізнається про це та вимкне фільтри системного виклику seccomp. Це фактично не обмежує, які системні виклики дозволені в сторонніх процесах.

В Android 10+ з’явилася нова «недокументована» функція під назвою «App Zygote», де стороннім програмам дозволено створювати власні Zygote для «ізольованих служб» (також майже незадокументованих). І «App Zygote», і «Isolated Services» — це спеціальні функції, розроблені для Chrome/Webview*. Процеси App Zygote запускаються зі спеціальними дозволами, і якщо seccomp вимкнено, він може викликати setuid 0 і підвищити свої привілеї та отримати root-доступ.

Порівняно з тим, що надають звичайні root-рішення (наприклад, Magisk), це все ще певним чином обмежує, однак безліч заходів безпеки в Android буде повністю втрачено, якщо UID=0. Наприклад, його достатньо, щоб використовувати його для виправлення завантажувальних образів, що означає, що його можна використовувати для ін’єкції зловмисного програмного забезпечення, такого як модифікований Magisk, щоб допомогти йому отримати «справжні» права root.

Оновлення: що може сам UID=0? У рамках Android майже всі служби мають сліпе зелене світло, коли UID запитуваного процесу дорівнює 0. Це означає, що цей кореневий процес здатний маніпулювати безліччю речей за допомогою спеціальних API Android (наприклад, ActivityManager)"

*За даними розробника aviraxp, ці дві функції більш загально розроблені «для спільного використання ресурсів і пам’яті між кількома ізольованими процесами».

Висновок

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