Уязвимость, позволяющая использовать функцию «нулевого клика» в Pixel 9: уязвимость в Dolby и ядре Linux.

Ключевые моменты:
  • Атака без клика на Pixel 9 с использованием аудиофайлов в SMS/RCS.
  • Уязвимость CVE-2025-54957 в декодере Dolby Unified позволяет выполнять удаленное выполнение кода (RCE).
  • Повышение привилегий ядра через драйвер Bigwave (CVE-2025-36934).
  • Усовершенствованная техника манипулирования памятью Scudo и обход ASLR.
  • Различия в безопасности между Pixel, Samsung и Apple при столкновении с одной и той же уязвимостью.

exploit-zero-click-pixel-9-dolby-decoder-kernel-linux-project-zero

команда Исследования в области безопасности Google. В рамках проекта Zero была задокументирована одна из самых сложных цепочек атак. В последнее время они ориентированы на прошивку Android.

Исследователи продемонстрировали, как можно удалённо взломать устройство Pixel 9. и без участия пользователя (атака без кликов) отправив простое SMS-сообщение или сообщение RCS. с прикрепленным аудиофайлом. Серьезность обнаружения заключается в том, что жертве не нужно воспроизводить аудио; простое получение сообщения запускает полную компрометацию системы.

Входной вектор: Автоматическая транскрипция

Шлюз для eЦель этой атаки заключается в интеграции интеллектуальных функций. в операционной системе. В современных версиях Android приложение Google Messages пытается автоматически создавать расшифровку полученных аудиосообщений. для облегчения поиска текста или обеспечения доступности. Этот процесс запускает службу com.google.android.tts.которая без вмешательства человека обрабатывает мультимедийный файл, используя кодеки системы. Именно здесь и происходит Злоумышленники обнаружили критическую уязвимость: уязвимость в библиотеке Dolby. Унифицированный декодер (UDC), идентифицированный как CVE-2025-54957.

El Техническая ошибка заключается в управлении памятью. этой библиотеки, в частности, в том, как она обрабатывает расширяемые форматы доставки метаданных (EMDF).в аудиопотоках Dolby Digital PlusДекодер страдает от переполнения При вычислении размера буфера, необходимого для структур данных, эта математическая операция некорректна. позволяет перезаписать используемый указатель для обработки следующего кадра синхронизации. Манипулируя этим указателем, Злоумышленник может перенаправлять операции записи. от декодера к произвольным областям памяти, в конечном итоге перезаписывая указатели на функции управляемыми данными и обеспечивая выполнение кода.

Использование уязвимостей в инженерии: Обход ASLR и Scudo

Исследователи отмечают, что для превращения этого переполнения в работающий эксплойт потребовалась чрезвычайно сложная разработка программного обеспечения, позволяющая обойти современные средства защиты Android, такие как рандомизация расположения адресного пространства (ASLR) и распределитель памяти Scudo. Исследователи обнаружили, что "эволюционная куча" (Куча evo), используемая декодером, представляет собой монолитную структуру, которая Процесс перезапускается с каждым кадром.Для обеспечения стабильной записи им пришлось манипулировать расположением памяти, заставляя распределитель памяти Scudo перемещать «динамический буфер».

Техника Это заключалось в преднамеренном повреждении заголовков фрагментов памяти. (фрагменты) из Scudo. Путем изменения воспринимаемого размера освобожденного фрагмента и принудительного последующего переназначения посредством последовательного декодирования нескольких аудиофайлов, lИм удалось переместить структуры данных в память.Это создало необходимое пространство для вставки вредоносного контейнера EMDF непосредственно перед критически важным заголовком памяти. С помощью ряда примитивов записи, называемых "WRITE DYNAMIC" и "WRITE STATIC", эксплойт перезаписывает указатели на определенные функции в статическом буфере декодера.

Тем не менее, Достижение выполнения произвольного кода представляло собой дополнительную проблему из-за ограничений SELinux. Это предотвращает создание исполняемым файлом в памяти самого процесса кодека или загрузку внешних библиотек. Креативное решение исследователей заключалось в использовании ROP-программирования (возвращаемого кода) для вызова функции pwrite и прямой записи вредоносного кода. Это позволяет процессу модифицировать себя, обходя стандартные средства защиты от записи и выполнения. Из-за случайного характера работы ASLR вероятность успеха эксплойта составляет приблизительно один случай из 255 попыток, что вполне вероятно, учитывая, что процесс автоматически перезапускается после неудачи, позволяя злоумышленнику повторять попытки до тех пор, пока не добьется успеха в течение нескольких минут.

Повышение привилегий: от кодека к ядру

Как только злоумышленник получит контроль над процессом медиакодека, Следующий шаг — получение полного контроля над устройством.. Для этого, Была использована вторая уязвимость. (CVE-2025-36934) в драйвере Bigwave ядра Linux. Этот драйвер управляет символьным устройством, доступным из контекста мультимедийного кодека. Уязвимость Это позволяло перезаписывать структуры ядра путем манипулирования вызовом ioctl. В частности, это повышает привилегии злоумышленника с уровня ограниченного пользователя до уровня ядра.

Следует отметить, что Этот маршрут восхождения стал возможен на Pixel 9 благодаря отсутствию фильтра системных вызовов. (seccomp) — ограничительный протокол в прошивке Google для обработки кодеков. В отличие от этого, такие устройства, как Samsung S24, использовали фильтры, которые, хотя и имели аналогичную уязвимость декодера Dolby, блокировали доступ к уязвимому драйверу ядра, тем самым предотвращая всю цепочку атак.

Влияние на экосистему и время реагирования

Этот инцидент подчеркивает сложность цепочки поставок мобильного программного обеспечения. Уязвимость в декодере Dolby не является исключительной для Android.Это также затрагивает Windows, ChromeOS и устройства Apple. Однако в экосистемах Apple (macOS и iOS) уязвимость нейтрализуется компиляцией библиотек с флагом -fbounds-safety, который вводит дополнительные проверки границ.

В ходе проведения корректировок также были выявлены существенные несоответствия. Хотя уязвимость была обнаружена и сообщена компании Dolby в середине 2025 года, Для того чтобы обновление дошло до всех конечных пользователей Android, потребовалось 139 дней.Бинарные патчи для экосистемы Android стали доступны только в октябре, а окончательное исправление для устройств Pixel было выпущено лишь в январе 2026 года, что оставляло значительный период уязвимости такого масштаба.

Если вас интересует более подробная информация, вы можете найти ее по ссылке: по следующей ссылке.