Продолжающийся анализ кода Stagefright выявил ещё две критические уязвимости, затрагивающие 100% мобильных устройств с ОС Android. Они присутствовали в самой первой версии Android 1.0, выпущенной семь лет назад, и сохранялись во всех релизах — вплоть до Android 5.1.1. Используя их, атакующая сторона может получить несанкционированный удалённый доступ к смартфону или планшету. В некоторых сценариях атака происходит совершенно незаметно для владельца и не требует от него выполнения каких либо действий.
Когда в апреле вице-президент Zimperium Джошуа Дрейк (Joshua Drake) обнаружил семь ошибок в библиотеке мультимедийного движка Stagefright, под удар попали 95% всех устройств с ОС Android (около миллиарда) и многие популярные программы. Выступая с докладом на конференциях Black Hat и DEF CON’23, он предположил, что это лишь начало. Дрейк оказался прав. Отчёт о двух новых ошибках в библиотеке libstagefright получил название Stagefright 2.0. На этот раз злоумышленник должен использовать их совместно, чтобы загрузить модифицированный MP3 или MP4 файл на устройство и получить контроль над ним.
Ошибки возникают при обработке метаданных, поэтому протроянить устройство можно и через функцию предварительного просмотра – мультимедийные файлы даже не требуется открывать. Как и семь других уязвимостей в Stagefright, они позволяют удалённо взломать смартфон или планшет. Для этого требуется передать на него изменённое MMS-сообщение, заманить на протрояненную веб-страницу или доставить контент как-то иначе.
Интерес к библиотеке Stagefright объясняется тем, что она крайне популярна, а использующей её мультимедийный движок позволяет напрямую работать с памятью в обход виртуальной машины Java. Написанный на C++, он запускается как сервис с правами системы. Stagefright игнорирует «песочницу» и другие средства изоляции процессов.
При попытке обработать модифицированные файлы в нём возникает ошибка, и произвольный код оказывается записан в память. В случае преднамеренной модификации MP3/MP4 файлов, таким кодом может быть набор команд для НСД к устройству и кражи данных. Дополнительным преимуществом оказывается механизм запуска медиасервера, предусматривающий его автоматический рестарт в случае возникновения ошибки.
Новые ошибки в Stagefrigth описаны в бюллетенях CVE-2015-6602 и CVE-2015-3876 (семь других, известных с апреля, опубликованы в CVE-2015-1538, CVE-2015-1539, CVE-2015-3824, CVE-2015-3826, CVE-2015-3827, CVE-2015-3828 и CVE-2015-3829). Все они позволяют осуществить удаленное выполнение произвольного кода и повысить привилегии. Злоумышленник может получить доступ к камере, микрофону, а также возможность считывать и записывать данные на карту памяти (или раздел /emulated/ в устройствах без карты памяти). Используя другие уязвимости, атакующая сторона может получить полный удалённый контроль.
Опасность усугубляется тем, что вредоносный код может быть доставлен разными способами. Помимо традиционных фишинговых методов, требующих каких-то действий со стороны пользователя, это может и массовая атака. Например, взлом известных сайтов с внедрением модифицированных мультимедийных файлов, их массовая рассылка через клиенты мгновенных сообщений или MMS. В таких сценариях от пользователя уже мало что зависит – заражение произойдёт автоматически и, скорее всего, останется незамеченным.
Как и подобает «белому» хакеру, Джошуа Дрейк оповестил Google о найденных уязвимостях прежде, чем сообщил о них на своей странице. Первое письмо было отправлено в штаб-квартиру Google ещё в середине августа, но выпустить патч оказалось непростым делом. Stagefright глубоко интегрирован в систему, а единого механизма доставки патчей у Google не существует.
Подробности о Stagefright 2.0 можно посмотреть в презентации Дрейка. Дополнительные детали будут опубликованы только после 5 октября, когда выйдет ежемесячный пакет исправлений для Android. Автоматически он будет загружен только на устройства серии Nexus (начиная с четвёртого). Остальные производители используют кастомные прошивки, обновление которых происходит нерегулярно и может занять не один месяц.
Радует в этой истории только одно: из-за множества вариантов реализации воспроизведения мультимедийных файлов, наличие уязвимого компонента не всегда означает лёгкую возможность взлома. Проверить конкретное устройство с ОС Android можно при помощи обновлённой утилиты Zimperium Stagefright detector.
В статье использованы иллюстрации из доклада Джошуа Дрейка на Balck Hat и авторские скриншоты.