
LG Root Exploit
Эксплойт root для LG
Автор: [email protected]
Особая благодарность: Juggie за то, что указал на необычный бинарный файл в обновлении (spritebud), что привело меня к обнаружению этой уязвимости.
Тема: Состояние гонки (race condition) в программном обеспечении резервного копирования Sprite Software, устанавливаемом OEM-производителем на Android-устройства LG.
CVE ID: CVE-2013-3685
Эффект: Локально эксплуатируемая уязвимость, требующая минимального взаимодействия с пользователем устройства и позволяющая выполнять код с правами root. При определённых обстоятельствах возможна эксплуатация этой уязвимости без ведома пользователя устройства
Продукты: "Backup" "spritebud"
Производители: Sprite Software LG Electronics Возможно, другие производители
Затронутые версии: spritebud 1.3.24 backup 2.5.4105 Вероятно, также другие версии
Затронутые устройства (зависит от конфигурации прошивки): LG-E971 LG Optimus G LG-E973 LG Optimus G LG-E975 LG Optimus G LG-E975K LG Optimus G LG-E975T LG Optimus G LG-E976 LG Optimus G LG-E977 LG Optimus G LG-F100K LG Optimus Vu LG-F100L LG Optimus Vu LG-F100S LG Optimus Vu LG-F120K LG Optimus Vu LG-F120L LG Optimus Vu LG-F120S LG Optimus LTE Tag LG-F160K LG Optimus LTE 2 LG-F160L LG Optimus LTE 2 LG-F160LV LG Optimus LTE 2 LG-F160S LG Optimus LTE 2 LG-F180K LG Optimus G LG-F180L LG Optimus G LG-F180S LG Optimus G LG-F200K LG Optimus Vu 2 LG-F200L LG Optimus Vu 2 LG-F200S LG Optimus Vu 2 LG-F240K LG Optimus G Pro LG-F240L LG Optimus G Pro LG-F240S LG Optimus G Pro LG-F260K LG Optimus LTE 3 LG-F260L LG Optimus LTE 3 LG-F260S LG Optimus LTE 3 LG-L21 LG Optimus G LG-LG870 LG (Unknown) LG-LS860 LG Mach LG-LS970 LG Optimus G LG-P760 LG Optimus L9 LG-P769 LG Optimus L9 LG-P780 LG Optimus L7 LG-P875 LG Optimus F5 LG-P875h LG Optimus F5 LG-P880 LG Optimus 4X HD LG-P940 LG Prada LG-SU540 LG Prada 3.0 LG-SU870 LG Optimus 3D Cube LG-US780 LG Lollipop Возможно, также другие устройства.
Информация о продуктах:
"Backup" и "spritebud" — это система резервного копирования и восстановления настроек и приложений, написанная компанией Sprite Software и устанавливаемая на смартфоны LG под управлением Android. "Backup" — это пользовательское приложение (front end), а "spritebud" — служба, выполняющая функции резервного копирования и восстановления.
Подробности:
Демон "spritebud" запускается init-скриптами и работает с правами root. Прослушивая unix-сокет, демон принимает инструкции от приложения "Backup". Поскольку "spritebud" работает с правами root, с помощью специально сформированного резервного копирования мы можем записывать данные в любой файл, изменять его права и владельца.
Сформированный backup содержит данные восстановления для нашего приложения-эксплойта "com.cunninglogic.lgpwn". Данные включают фиктивный файл размером 50 МБ (a), используемый для расширения нашего окна эксплуатации, бинарный файл su (b), скрипт (c) для установки su и текстовый файл (d), содержащий путь к нашему скрипту. Все файлы принадлежат приложению и доступны всем на запись, чтение и исполнение. Все файлы восстанавливаются в алфавитном порядке. Весь backup после сжатия занимает примерно 2 МБ. Структура этого backup выглядит следующим образом:
drwxrwxrwx u0_a114 u0_a114 2013-05-28 20:13 files
./files:
Перед восстановлением наше приложение-эксплойт запускается, наблюдает за процессом и ждёт. Во время восстановления демон spritebud сначала создаёт каталог files, затем устанавливает его права и владельца. Далее он распаковывает и восстанавливает файл "a" — наш фиктивный файл размером 50 МБ. Во время восстановления "a" наше приложение-эксплойт успевает превратить "d" — наш текстовый файл, содержащий полный путь к нашему скрипту (c), — в символическую ссылку на /sys/kernel/uevent_helper. После восстановления файла "d" наш путь записывается в uevent_helper. Когда происходит событие hotplug (а они возникают каждые несколько секунд), путь, содержащийся в uevent_helper, выполняется ядром, после чего наш скрипт (c) запускается и устанавливает бинарный файл su (b).