Уязвимость в эталонных реализациях кодеков AV1 и VP8/VP9

В развиваемой альянсом Open Media (AOMedia) библиотеке libaom, предоставляющей эталонную реализацию формата кодирования видео AV1, выявлена критическая уязвимость (CVE-2024-5171), приводящая к целочисленному переполнению и записи в область вне границ буфера при обработке слишком больших значений в некоторых параметрах. Аналогичная уязвимость (CVE-2024-5197) выявлена в библиотеке libvpx с реализацией кодеков VP8 и VP9. Проблемы устранены в обновлениях libaom 3.9.0 и libvpx 1.14.1. В дистрибутивах уязвимости пока остаются неисправленными (Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD).

Уязвимости в libaom присвоен максимальный уровень опасности (10 из 10), подразумевающий возможность эксплуатации при обработке в приложениях, использующих данную библиотеку, специально оформленного контента. В libvpx уровень опасности выставлен в 5.9 из 10, что соответствует ограниченным условиям эксплуатации. Основная опасность уязвимостей в libaom и libvpx вызвана тем, что эти библиотеки используется в web-браузерах, медиапроигрывателях и сервисах, осуществляющих перекодирвоание видео.

Уязвимость проявляется в libaom при вызове функций aom_img_alloc(), aom_img_wrap() или om_img_alloc_with_border() с большими значениями в параметрах d_w, d_h и align, которые приводят к целочисленному переполнению при расчёте смещений и размеров буферов. В аналогичное переполнение возникает в функциях vpx_img_alloc() и vpx_img_wrap(). Указанные функции используется при кодировании видео.

Наибольшую опасность уязвимость могла представлять для атаки на браузеры, в которых прошлые похожие уязвимости могли быть эксплуатированы через открытие в браузере специально оформленной страницы, вызывающей JavaScript-функции для кодирования видео, или через манипуляций с WebRTC. По заявлению представителей Google уязвимость не затрагивает движок Chromium, так как в функции aom_img_alloc(), aom_img_wrap(), vpx_img_alloc() и vpx_img_wrap() передавались только проверенные значения аргументов d_w и d_h.
В Firefox для декодирования AV1 в Firefox используется библиотека dav1d, но для кодирования применяется libaom. Подвержен ли Firefox проблеме пока не ясно так как информация о том, как уязвимость затрагивает конкретные продукты пока не опубликована.

Release. Ссылка here.