OnePlus випадково попередньо встановив програму, яка діє як бекдор для кореневого доступу

OnePlus залишив інженерний тестовий додаток Qualcomm, який діє як бекдор для надання кореневого доступу на OnePlus 3, 3T і 5.

Оновлення: OnePlus випустив офіційна відповідь до справи. У майбутньому оновленні вони видалять кореневу функцію ADB з EngineerMode.

Минуло трохи більше місяця, як було виявлено, що OnePlus збирає особисту інформацію для аналітики. Компанія швидко змінила курс, і в оновленні компанія пообіцяла бути більш прозорою, чітко надаючи користувачам можливість відмовитися від аналітики OxygenOS. Хоча ця катастрофа згодом вирішилася, сьогодні ввечері піднімає свою потворну голову інша. Користувач у Твіттері під ім'ям "Елліот Олдерсон» (названий на честь головного героя популярного телесеріалу «Містер Робот») виявив, що OnePlus випадково залишив на місці програму діагностичного тестування зроблено компанією Qualcomm. Після декомпіляції цієї програми він виявив, що це можливо використовується для надання кореневого доступу, фактично діючи як бекдор.

Програма називається «EngineerMode», і це, по суті, системна програма, створена Qualcomm і надається OEM-виробникам, таким як OnePlus, щоб OEM-виробники могли легко перевірити всі апаратні компоненти пристрій. Програма попередньо встановлена ​​на всіх пристроях OnePlus 3, OnePlus 3T і OnePlus 5, і до неї можна легко отримати доступ через будь-який засіб запуску активності, оскільки всі дії програми експортуються.

Ми насправді повідомили про існування цієї програми кілька місяців тому, але на той час ми не мали уявлення, для чого його можна використовувати. Користувач Twitter декомпілював додаток (його джерело опубліковано в мережі тут) і знайшов цікаву дію під назвою DiagEnabled. Зокрема, в рамках активності виділявся один метод: escalatedUp. Цей метод приймає логічне значення (true/false) і рядок. Рядок — це пароль, який перевіряється методом перед встановленням властивостей системи persist.sys.adbroot і oem.selinux.reload_policy до 1.

Перша властивість системи є особливо цікавою, оскільки вона дозволяє користувачеві запускати ADB як root. Це одразу відкриває можливість отримати повний root-доступ до телефону — і все це без розблокування завантажувача. Отже, як саме змусити програму EngineerMode встановити ці властивості системи на «1»?

@fs0c131y потрібно було знайти правильний пароль для надсилання наміру, щоб передати логіку в опублікованому вище методі. Однак знайти цей пароль непросте завдання. Він декомпілював бібліотеку, відповідальну за генерацію пароля (під назвою libdoor.so), і знайшов, де знаходиться хеш пароля: /data/backup/fpwd. Пароль генерується з різних властивостей збірки, таких як ro.product.model і ro.product.brand і було б нелегко провести зворотне проектування.

На щастя з допомогою Девід Вайнштейн і Тепер безпечно у Твіттері він знайшов пароль, потрібний EngineerMode для підвищення прав адміністратора ADB до root.

Все, що потрібно зробити, це надіслати намір у такому форматі:

adb shell am start -n com.android.engineeringmode/.qualcomm.DiagEnabled --es "code""angela"

де com.android.engineeringmode/.qualcomm. DiagEnabled — це ім’я компонента DiagEnabled Activity, який ми використовуємо, «code» — це ім’я рядка, а «angela» — відповідне значення пароля.

@fs0c131y заявляє, що буде опублікувати заявку незабаром це надішле намір підвищити ADB до привілеїв root, виправити завантажувальний образ, щоб вимкнути dm-verity, і встановити двійкові файли su. Слідкуйте за форумами XDA, коли буде опубліковано цю кореневу програму.

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

Якщо ви все одно хочете захистити себе від цього експлойту, ви можете видалити програму від поточного користувача що запобігатиме надсиланню наміру до програми EngineerMode. Просто скористайтеся такою командою в ADB:

adbshellpmuninstall-k--user 0 com.android.engineermode

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


Оновлення 1: пароль «angela»

Користувач @fs0c131y опублікував оновлення на своїй сторінці в Twitter з паролем, який вам потрібен для доступу до кореневої оболонки ADB. Цей пароль...Анжела. Для тих із вас, хто не дивиться Містера Робота, Анджела — це ім’я одного з героїв. Я вважаю, що в Qualcomm має бути багато шанувальників Mr. Robot.

Якщо ви введете команду, яку я опублікував вище, в ADB, ви помітите, що ADB негайно відключається, а сервер перезавантажується. Введіть ADB ще раз, і ви помітите, що тепер це коренева оболонка.


Оновлення 2: Як було отримано пароль

Охоронна фірма Now Secure опублікувала допис у блозі, де докладно розповідає, як вони отримали пароль, необхідний для цього root-експлойту. Ви можете прочитати їх повний допис тут.


Оновлення 3: постраждало більше пристроїв

Ці останні новини не повинні бути несподіванкою, але, схоже, більше пристроїв постраждали від цього експлойту. Це пов’язано з тим, що програма EngineerMode є програмою Qualcomm, тому можливо, що інші OEM-виробники залишили її попередньо встановленою на своїх пристроях. Наразі користувачі звернулися до @fs0c131y у Twitter, щоб підтвердити, що програма встановлена ​​на деякі пристрої Asus Zenfone і Xiaomi. Ви можете легко перевірити, чи є на вашому пристрої ця програма, зайшовши в налаштування та подивившись, які програми встановлено.


Оновлення 4: рутування вашого пристрою

Використовуючи кілька команд через кореневу оболонку ADB, тепер це можливо вставте двійковий файл su на свій пристрій. Використовуючи це, ви потім можете встановити програму керування root-додатком, як-от SuperSU, а потім вільно надавати доступ root іншим програмам. Усе без розблокування завантажувача!


Оновлення 5: OnePlus відповідає

Компанія OnePlus офіційно відреагувала на ситуацію. В публікація в блозі, компанія повторює, що цей експлойт можна використовувати, лише якщо зловмисник має фізичний доступ до пристрою та ввімкнув USB Debugging. Щоб увімкнути USB Debugging, зловмиснику також потрібен PIN-код/пароль вашого пристрою. Таким чином, кореневий бекдор нелегко використати будь-якій програмі чи людині, але, тим не менш, OnePlus вирішить проблеми користувачів, видаливши цю функцію з програми EngineerMode.