
Исследователь безопасности Расмус Мооратс обнаружил цепочку из двух уязвимостей в OxygenOS, которая позволяла обычному Android-приложению получить привилегии root на OnePlus 15. Для атаки достаточно было установить APK без специальных разрешений. OnePlus подтвердила, что проблемы затрагивают множество устройств OnePlus и Oppo с разными версиями ПО, но полный список моделей не раскрыла.
Исследователь Мооратс сначала разработал эксплойт на OnePlus 12 Pro, который уже был разблокирован и получил root-доступ для других задач. Затем он установил тот же неизменённый APK на OnePlus 15 с OxygenOS 16.0.3.503, февральским патчем безопасности 2026 года и ядром 6.12.23. Атака сработала с первой попытки.
Как сообщает исследователь Расмус Мооратс, первая ошибка находилась в системной службе AtlasService, связанной со сбором телеметрии и отладочных событий. Служба работала с UID 0 и принимала запросы от любого процесса без проверки прав. Через специально сформированное событие приложение могло передать данные в команду, которую системный компонент запускал от имени root.
Команда выполнялась в домене SELinux dumpstate, где действуют ограничения. Но процесс всё ещё мог читать и записывать большую часть каталога /data, а также обращаться к ряду системных сервисов, доверявших запросам от UID 0. Чтобы получить полные привилегии, исследователь использовал вторую уязвимость.
Вторая проблема затронула vendor HAL OplusLogCore, службу с интерфейсом doShell. Она проверяла только UID вызывающего процесса: если он равнялся нулю, сервис запускал переданную команду через оболочку /vendor/bin/sh. Получив root-доступ через AtlasService, вредоносное приложение могло воспользоваться этим интерфейсом.
Дочерний процесс OplusLogCore переходил в домен vendor_qti_init_shell. У него был полный набор Linux-возможностей, включая права на загрузку модулей ядра, прямой доступ к оборудованию и трассировку процессов. Через эти два сервиса приложение переходило из стандартного домена untrusted_app к root с широкими системными правами.
Тестовый APK не запрашивал разрешений и был рассчитан на API 35. Приложение сохраняло скрипт и файл classes.dex во внешнем каталоге собственных данных, доступном процессу dumpstate, после чего запускало цепочку вызовов. Доступ к установленному APK оказался закрыт политиками SELinux, поэтому исследователь извлекал нужный dex-файл во внешнее хранилище приложения.
Мооратс впервые сообщил OnePlus об обеих проблемах 18 апреля 2026 года. 20 мая компания подтвердила наличие уязвимостей в нескольких продуктах и предупредила исследователя о возможных юридических последствиях публикации работы. В июне OnePlus сообщила о ходе исправления и попросила отложить раскрытие деталей.
На OnePlus 15 ошибки исправили в OxygenOS 16.0.10.500(EX01). Исследователь опубликовал техническое описание 24 сентября, после назначенного им срока раскрытия. OnePlus не назвала все модели и версии прошивок, для которых вышли аналогичные исправления.