CERT Coordination Center (CERT/CC) раскрыл две неустранённые уязвимости в библиотеке HTML5-плеера Kaltura: CVE-2026-19913 позволяет читать произвольные локальные файлы, а CVE-2026-19912 ведёт к удалённому выполнению кода. Обе ошибки находятся в обработчике mwEmbedLoader.php библиотеки mwEmbed, которую Kaltura также распространяет под названием html5lib. Атакующему не нужны ни учётная запись, ни токен сессии Kaltura: достаточно сетевого доступа к обработчику. Исправления на момент раскрытия не существовало. CERT/CC сообщил: «Нам не удалось связаться с Kaltura для координации работы над этими уязвимостями».
К уязвимым CERT/CC отнёс html5lib v2.45, html5lib v2.103 и более ранние версии, а также другие выпуски ветки v2.x, в которых доступен опасный обработчик. Платформа Kaltura используется для управления видео, публикации и воспроизведения материалов, а также интеграции видео с веб-приложениями. mwEmbedLoader.php встречается в отдельных клиентских установках, на собственных производственных узлах Kaltura и в общей многопользовательской CDN-инфраструктуре компании. CERT/CC отдельно предупредил: «Поскольку затронутый обработчик также доступен в общей многопользовательской CDN-инфраструктуре Kaltura, эти уязвимости касаются не только отдельных клиентских установок, но и каждого арендатора, обслуживаемого такими общими узлами».
Источник обеих проблем находится в файле deployment/uiconf/KalturaClientBase.php. Обработчик принимает параметр ServiceUrl, после чего PHP-клиент KalturaClientBase обращается по указанному адресу и передаёт полученный ответ функции unserialize(). Код не проверяет происхождение ответа, схему URL и содержимое данных перед десериализацией. В итоге пользователь фактически управляет источником объекта, который сервер считает ответом внутреннего API. Одна и та же ошибка даёт два разных результата: утечку файлов при использовании локального URL и выполнение кода, если к десериализации добавить управляемую запись в файловую систему.
Для эксплуатации CVE-2026-19913 в ServiceUrl передаётся адрес со схемой file://, указывающий на локальный файл сервера. KalturaClientBase читает его вместо штатного ответа API и отправляет содержимое в unserialize(). Десериализация обычного конфигурационного файла завершается ошибкой, зато необработанный текст файла попадает в диагностическое сообщение и возвращается нападающему. Исследователь Gerjan Wemekamp из AndDone, обнаруживший обе уязвимости, показал чтение /opt/kaltura/app/configurations/local.ini. В этом файле могут храниться открытым текстом строки подключения к базе данных, пароли администраторов и консоли, ссылки на внутренние узлы, партнёрские секреты и API-ключи. Техническое описание Wemekamp опубликовал во вторник, однако точная дата публикации в доступных материалах не указана. Он присвоил CVE-2026-19913 оценку 9,1; это оценка автора отчёта, а не CERT/CC.
CVE-2026-19912 использует тот же вызов unserialize(), но дополняет его параметром uiconf_id. Нападающий размещает по адресу ServiceUrl вредоносный сериализованный объект с PHP-кодом. Приложение загружает объект, десериализует его и при работе файлового кэша записывает данные на диск. Значение uiconf_id без очистки добавляется к пути каталога кэша, поэтому последовательности ../ позволяют выйти за его пределы и сохранить файл в доступном через веб каталоге. После прямого запроса загруженного файла сервер исполняет PHP-код от имени пользователя веб-сервера. Wemekamp оценил эту уязвимость в 10,0, также самостоятельно; CERT/CC собственных оценок для двух CVE не публиковал.
Запись файла зависит от файлового кэша, который используется Kaltura по умолчанию. Wemekamp пояснил: «Этап размещения файла зависит от файлового серверного механизма кэширования, используемого Kaltura по умолчанию. Конфигурация только с memcache может подавить запись и тем самым перекрыть именно этот путь к удалённому выполнению кода. Но безопасным развёртывание от этого не становится». Полную цепочку с установкой веб-шелла исследователь воспроизвёл на Docker-образе Kaltura Server 2019 года. Границы проверки он сформулировал точно: «Полная установка веб-шелла была продемонстрирована на Docker-образе Kaltura Server 2019 года. В текущем выпуске я подтвердил наличие обеих половин цепочки и то, что часть с десериализацией по-прежнему работает описанным образом». Следовательно, доказанной сквозной атаки на актуальный производственный выпуск в отчёте нет, хотя необходимые компоненты цепочки в нём сохранились.
По состоянию на 25 августа 2026 года сведений об эксплуатации CVE-2026-19912 или CVE-2026-19913 не поступало. Ни один идентификатор не находился в каталоге Known Exploited Vulnerabilities (KEV), который ведёт Cybersecurity and Infrastructure Security Agency (CISA), и для них отсутствовали записи в National Vulnerability Database (NVD). CERT/CC обозначил статус Kaltura по обеим уязвимостям словом Unknown; публичного заявления поставщика через процесс координации также не было. Отсутствие карточки NVD само по себе теперь говорит меньше, чем раньше: в апреле 2026 года National Institute of Standards and Technology (NIST) объявил, что больше не обогащает каждую CVE-запись. Приоритет получили ошибки из KEV, уязвимости в ПО федеральных органов США и продуктах, признанных критическими по Executive Order 14028.
Проверка публичного серверного репозитория Kaltura, проведённая The Hacker News 25 августа 2026 года, показала редкую долговечность опасного кода. Файл deployment/uiconf/KalturaClientBase.php с небезопасным unserialize() оказался побайтово одинаковым в 21 ссылке на выпуски: от Jupiter-10.9.0, зафиксированного 27 апреля 2015 года, до West-23.5.0 от 13 августа 2026 года. Сам вызов и вывод полученных данных в сообщении об ошибке обнаруживаются ещё в ссылке на выпуск с коммитом от 10 марта 2014 года. Опасное поведение, выходит, прожило в кодовой базе свыше двенадцати лет.
Kaltura уже исправляла похожие ошибки, но этот файл тогда не затронули. В августе 2017 года, за несколько недель до публикации бюллетеня Telekom Security о трёх недостатках платформы Kaltura, компания выпустила коммит с удалением трёх небезопасных вызовов unserialize(). Исправления вошли в релиз 13.2.0 и изменили три файла, среди которых не было KalturaClientBase.php. Старый вызов остался на месте. Проблема не ограничивается PHP-продуктами Kaltura: в июле 2026 года атакам подверглась Fastjson 1.x из-за другой неустранённой ошибки десериализации, причём исправленного артефакта Fastjson 1.x на тот момент также не выпустили.
Пока патча нет, внешний доступ к mwEmbedLoader.php следует полностью закрыть либо оставить лишь для узлов, которым обработчик действительно нужен. Для ServiceUrl требуется жёсткий список разрешённых адресов: собственный сервер API конкретной установки или единственный штатный API-узел. Все прочие назначения и схемы, кроме допустимых HTTP и HTTPS, надо отклонять; file:// следует блокировать без исключений. В uiconf_id нельзя пропускать ../, абсолютные пути и любые разделители каталогов. На уровне веб-сервера необходимо запретить выполнение PHP в каталогах кэша и развести права так, чтобы доступная на запись директория не могла одновременно обслуживать исполняемый PHP-код.
Исходящие соединения сервера приложения тоже стоит ограничить: описанная цепочка RCE требует загрузки вредоносного сериализованного объекта с управляемого атакующим адреса. Один лишь переход на memcache перекрывает конкретную запись файла, но оставляет небезопасную десериализацию и чтение локальных файлов. Если mwEmbedLoader.php был доступен извне, содержимое local.ini следует считать потенциально раскрытым. Замене подлежат учётные данные базы, административные и консольные пароли, партнёрские секреты и API-ключи; внутренние имена узлов и связанные настройки нужно проверить на утечку и пригодность для дальнейшего продвижения по сети.
Хронология раскрытия растянулась на месяцы. Wemekamp впервые отправил отчёт контакту безопасности поставщика 23 марта 2026 года, повторил отправку с корпоративной почты 13 апреля, а 23 мая связался с директором Kaltura по информационной безопасности через LinkedIn. 2 июля он передал дело национальному CERT, название которого не раскрыто; 8 июля 2026 года Kaltura уведомил уже CERT/CC. Ни исследователь, ни CERT/CC не назвали адрес первоначальной отправки и точный канал первых сообщений. Опубликованный Kaltura файл security.txt, обновлённый 28 мая 2024 года, направляет исследователей в программу вознаграждений на HackerOne. В исходных контактных данных упоминается ещё один адрес для запросов безопасности, но само поле с адресом пусто. В результате AndDone и Gerjan Wemekamp передали технические сведения, CERT/CC оформил раскрытие, а ответа Kaltura и исправления к моменту публикации так и не появилось.
К уязвимым CERT/CC отнёс html5lib v2.45, html5lib v2.103 и более ранние версии, а также другие выпуски ветки v2.x, в которых доступен опасный обработчик. Платформа Kaltura используется для управления видео, публикации и воспроизведения материалов, а также интеграции видео с веб-приложениями. mwEmbedLoader.php встречается в отдельных клиентских установках, на собственных производственных узлах Kaltura и в общей многопользовательской CDN-инфраструктуре компании. CERT/CC отдельно предупредил: «Поскольку затронутый обработчик также доступен в общей многопользовательской CDN-инфраструктуре Kaltura, эти уязвимости касаются не только отдельных клиентских установок, но и каждого арендатора, обслуживаемого такими общими узлами».
Источник обеих проблем находится в файле deployment/uiconf/KalturaClientBase.php. Обработчик принимает параметр ServiceUrl, после чего PHP-клиент KalturaClientBase обращается по указанному адресу и передаёт полученный ответ функции unserialize(). Код не проверяет происхождение ответа, схему URL и содержимое данных перед десериализацией. В итоге пользователь фактически управляет источником объекта, который сервер считает ответом внутреннего API. Одна и та же ошибка даёт два разных результата: утечку файлов при использовании локального URL и выполнение кода, если к десериализации добавить управляемую запись в файловую систему.
Для эксплуатации CVE-2026-19913 в ServiceUrl передаётся адрес со схемой file://, указывающий на локальный файл сервера. KalturaClientBase читает его вместо штатного ответа API и отправляет содержимое в unserialize(). Десериализация обычного конфигурационного файла завершается ошибкой, зато необработанный текст файла попадает в диагностическое сообщение и возвращается нападающему. Исследователь Gerjan Wemekamp из AndDone, обнаруживший обе уязвимости, показал чтение /opt/kaltura/app/configurations/local.ini. В этом файле могут храниться открытым текстом строки подключения к базе данных, пароли администраторов и консоли, ссылки на внутренние узлы, партнёрские секреты и API-ключи. Техническое описание Wemekamp опубликовал во вторник, однако точная дата публикации в доступных материалах не указана. Он присвоил CVE-2026-19913 оценку 9,1; это оценка автора отчёта, а не CERT/CC.
CVE-2026-19912 использует тот же вызов unserialize(), но дополняет его параметром uiconf_id. Нападающий размещает по адресу ServiceUrl вредоносный сериализованный объект с PHP-кодом. Приложение загружает объект, десериализует его и при работе файлового кэша записывает данные на диск. Значение uiconf_id без очистки добавляется к пути каталога кэша, поэтому последовательности ../ позволяют выйти за его пределы и сохранить файл в доступном через веб каталоге. После прямого запроса загруженного файла сервер исполняет PHP-код от имени пользователя веб-сервера. Wemekamp оценил эту уязвимость в 10,0, также самостоятельно; CERT/CC собственных оценок для двух CVE не публиковал.
Запись файла зависит от файлового кэша, который используется Kaltura по умолчанию. Wemekamp пояснил: «Этап размещения файла зависит от файлового серверного механизма кэширования, используемого Kaltura по умолчанию. Конфигурация только с memcache может подавить запись и тем самым перекрыть именно этот путь к удалённому выполнению кода. Но безопасным развёртывание от этого не становится». Полную цепочку с установкой веб-шелла исследователь воспроизвёл на Docker-образе Kaltura Server 2019 года. Границы проверки он сформулировал точно: «Полная установка веб-шелла была продемонстрирована на Docker-образе Kaltura Server 2019 года. В текущем выпуске я подтвердил наличие обеих половин цепочки и то, что часть с десериализацией по-прежнему работает описанным образом». Следовательно, доказанной сквозной атаки на актуальный производственный выпуск в отчёте нет, хотя необходимые компоненты цепочки в нём сохранились.
По состоянию на 25 августа 2026 года сведений об эксплуатации CVE-2026-19912 или CVE-2026-19913 не поступало. Ни один идентификатор не находился в каталоге Known Exploited Vulnerabilities (KEV), который ведёт Cybersecurity and Infrastructure Security Agency (CISA), и для них отсутствовали записи в National Vulnerability Database (NVD). CERT/CC обозначил статус Kaltura по обеим уязвимостям словом Unknown; публичного заявления поставщика через процесс координации также не было. Отсутствие карточки NVD само по себе теперь говорит меньше, чем раньше: в апреле 2026 года National Institute of Standards and Technology (NIST) объявил, что больше не обогащает каждую CVE-запись. Приоритет получили ошибки из KEV, уязвимости в ПО федеральных органов США и продуктах, признанных критическими по Executive Order 14028.
Проверка публичного серверного репозитория Kaltura, проведённая The Hacker News 25 августа 2026 года, показала редкую долговечность опасного кода. Файл deployment/uiconf/KalturaClientBase.php с небезопасным unserialize() оказался побайтово одинаковым в 21 ссылке на выпуски: от Jupiter-10.9.0, зафиксированного 27 апреля 2015 года, до West-23.5.0 от 13 августа 2026 года. Сам вызов и вывод полученных данных в сообщении об ошибке обнаруживаются ещё в ссылке на выпуск с коммитом от 10 марта 2014 года. Опасное поведение, выходит, прожило в кодовой базе свыше двенадцати лет.
Kaltura уже исправляла похожие ошибки, но этот файл тогда не затронули. В августе 2017 года, за несколько недель до публикации бюллетеня Telekom Security о трёх недостатках платформы Kaltura, компания выпустила коммит с удалением трёх небезопасных вызовов unserialize(). Исправления вошли в релиз 13.2.0 и изменили три файла, среди которых не было KalturaClientBase.php. Старый вызов остался на месте. Проблема не ограничивается PHP-продуктами Kaltura: в июле 2026 года атакам подверглась Fastjson 1.x из-за другой неустранённой ошибки десериализации, причём исправленного артефакта Fastjson 1.x на тот момент также не выпустили.
Пока патча нет, внешний доступ к mwEmbedLoader.php следует полностью закрыть либо оставить лишь для узлов, которым обработчик действительно нужен. Для ServiceUrl требуется жёсткий список разрешённых адресов: собственный сервер API конкретной установки или единственный штатный API-узел. Все прочие назначения и схемы, кроме допустимых HTTP и HTTPS, надо отклонять; file:// следует блокировать без исключений. В uiconf_id нельзя пропускать ../, абсолютные пути и любые разделители каталогов. На уровне веб-сервера необходимо запретить выполнение PHP в каталогах кэша и развести права так, чтобы доступная на запись директория не могла одновременно обслуживать исполняемый PHP-код.
Исходящие соединения сервера приложения тоже стоит ограничить: описанная цепочка RCE требует загрузки вредоносного сериализованного объекта с управляемого атакующим адреса. Один лишь переход на memcache перекрывает конкретную запись файла, но оставляет небезопасную десериализацию и чтение локальных файлов. Если mwEmbedLoader.php был доступен извне, содержимое local.ini следует считать потенциально раскрытым. Замене подлежат учётные данные базы, административные и консольные пароли, партнёрские секреты и API-ключи; внутренние имена узлов и связанные настройки нужно проверить на утечку и пригодность для дальнейшего продвижения по сети.
Хронология раскрытия растянулась на месяцы. Wemekamp впервые отправил отчёт контакту безопасности поставщика 23 марта 2026 года, повторил отправку с корпоративной почты 13 апреля, а 23 мая связался с директором Kaltura по информационной безопасности через LinkedIn. 2 июля он передал дело национальному CERT, название которого не раскрыто; 8 июля 2026 года Kaltura уведомил уже CERT/CC. Ни исследователь, ни CERT/CC не назвали адрес первоначальной отправки и точный канал первых сообщений. Опубликованный Kaltura файл security.txt, обновлённый 28 мая 2024 года, направляет исследователей в программу вознаграждений на HackerOne. В исходных контактных данных упоминается ещё один адрес для запросов безопасности, но само поле с адресом пусто. В результате AndDone и Gerjan Wemekamp передали технические сведения, CERT/CC оформил раскрытие, а ответа Kaltura и исправления к моменту публикации так и не появилось.