Современные стандарты сжатия видео — это чудо скрытой сложности и результат десятилетий научной работы. Спецификация H.264 это около 800 страниц правил, которые определяют, как декодировать видео. Но чем больше сложность, тем больше риски безопасности, тем легче пропустить ошибку в битовом потоке, который слишком сложен для понимания и декодирования.
Если посмотреть на экосистему декодирования, то здесь совместно работают многоуровневые инструменты от аппаратных ускорителей на CPU и GPU (список производителей аппаратных декодеров), привилегированные драйверы и программные компоненты. Вместе они образуют сложный разнородный коктейль из привилегированного, практически непроверяемого и уязвимого кода.
В результате мы приближаемся к тому, что вирусы могут скрытно внедряться в видео и распространяться через популярные видеоплатформы, используя уязвимости в аппаратных декодерах на смартфонах и программных декодерах в браузерах на ПК.
Группа исследователей Вилли Р. Васкес, Стивен Чековей и Ховав Шахам из Университета Остина (США) и Оберлинского колледжа (США) поставила перед собой задачу изучить безопасность инфраструктуры распространения современного видео, в частности видеодекодеров H.264 как наиболее популярный сегодня формат видео. Они разработали специальную раму H26Forge анализировать, генерировать и манипулировать синтаксически правильными, но семантически нестандартными видео. Такие ролики формально соответствуют формату H.264, но вызывают различные сбои в работе декодеров.
Рис. 1. Архитектура H26Forge (30 000 строк кода на Rust)
Используя эту структуру, исследователи обнаружили ряд ошибок в системе декодирования H.264 на различных платформах, включая повреждение памяти ядра в iOS, повреждение памяти в Firefox и VLC в Windows, а также ошибки в памяти видеоускорителя и памяти ядра процессора в несколько Android-устройств. .
Инжир. 2
Все уязвимости официально задокументированы в бюллетенях CVE-2022-3266, CVE-2022-32939, CVE-2022-42846, CVE-2022-42850 И CVE-2022-22675.
Кодек H.264 работает, находя сходство между видеоизображениями и кодируя эту информацию, а затем отправляя инструкции о том, как воссоздать изображение в конечную точку. Эти инструкции называются элементами синтаксиса, а значения, которые они принимают, называются семантикой. Значения энтропийно кодируются с использованием таких алгоритмов, как exp-Golomb, CABAC или CAVLC.
Вот некоторые элементы синтаксиса H.264:

Изменяя перечисленные параметры, вы можете манипулировать поведением декодера, чтобы он считывал память за пределами выделенного массива. Например, на следующем рисунке схематично показан механизм эксплуатации уязвимостей. CVE-2022-22675.
Рис. 3. Эксплуатация уязвимости CVE-2022-22675. Слева — правильно упорядоченный битовый поток H.264, воспроизводимый сверху вниз, а справа — декодированный контент в памяти по мере ее заполнения. Вторая строка принудительно перезаписывает PPS со значением num_ref_idx_ l0_active_minus1
, что в конечном итоге приводит к записи произвольного значения длины в память путем корректировки смещения в каждом последующем фрагменте, записи значений в обратном порядке. Код эксплойта для этой уязвимости опубликован в листинге 2 по адресу п. 17–18
Результаты работы представлены в научная статьяи в более популярной форме, опубликованной в джаггернаут провод один из авторов.
Новый канал распространения вируса
Вы помните, какой дырой в безопасности всей ИТ-инфраструктуры был Adobe Flash, интегрированный во все браузеры и операционные системы через плагины. Фактически, один и тот же монолитный плагин был установлен на каждом компьютере в мире, что делало его привлекательной целью для взлома. Единственная уязвимость 0day открывает все двери для злоумышленников.
Есть риск, что кодеки H.264 станут такой же универсальной отмычкой для злоумышленников, а распространение вируса начнется через YouTube и другие популярные видеоплатформы — и через уязвимости браузерных декодеров.

Рис. 4. Уязвимость CVE-2022-3266 с воспроизведением памяти за пределами выделенного диапазона при некорректном программном рендеринге видео в браузере Firefox (исправлено в версии 105). Реализовано за счет уменьшения значения SPS в фрейме H.264, что сломало декодер
Хотя на практике нам еще предстоит увидеть такие массовые атаки, экосистема интернет-видео уже созрела для нового типа вируса, говорят исследователи. На форумах ХН Они говорятчто цветовая рябь в видео как массовое заражение ближе всего к классической «лавине» (снежной катастрофе) мы помним по культовому киберпанковскому произведению Стивенсона, придумавшего концепцию «Метавселенной» в 1992 году.
Примечание. Уязвимости, перечисленные в этой статье, были исправлены в последних версиях iOS, VLC и Firefox. Производители аппаратных декодеров H.264 для смартфонов были уведомлены об этой проблеме. Авторы отмечают, что подобные уязвимости присутствуют и в декодерах H.265, но разработанный фреймворк H26Forge не умеет генерировать видеоматериалы для их эксплуатации.