Безопасность
Безопасность файлов: проверка и защита
Полный гид: как проверять загрузки на вирусы, шифровать данные, безопасно передавать файлы и делать бэкапы.
Центр CERT/CC раскрыл 26 августа 2026 года две незакрытые уязвимости в mwEmbed — HTML5-видеоплеере компании Kaltura. Злоумышленник без аутентификации может прочитать любой файл на сервере и при определённых условиях добиться выполнения произвольного кода. Патча не существует: Kaltura не ответила на обращение CERT/CC.

Коротко: CVE-2026-19913 (CVSS 9.1) — параметр ServiceUrl принимает схему file://, сервер читает локальный файл и отражает его байты в ошибке десериализации. CVE-2026-19912 (CVSS 10.0) — path-traversal в uiconf_id позволяет сбросить веб-шелл за пределами директории кэша. Затронуты html5lib v2.45, v2.103 и более ранние v2.x-релизы. Патча нет; защита — блокировка mwEmbedLoader.php на WAF или обратном прокси.
26 августа 2026 года CERT/CC опубликовал уязвимость VU#308749 и два связанных CVE-идентификатора. Оба дефекта найдены исследователем Герьяном Вемекампом (компания AndDone) и затрагивают компонент mwEmbedLoader.php в библиотеке mwEmbed, которую Kaltura распространяет также под названием html5lib — это HTML5-плеер, встраиваемый на страницы для потоковой видеодоставки.
Kaltura — платформа управления видеоконтентом, которую используют университеты, корпоративные порталы и медиаслужбы. Уязвимый эндпоинт присутствует как на инсталляциях клиентов, так и на собственной многопользовательской CDN-инфраструктуре Kaltura. По данным CERT/CC, связаться с вендором не удалось, и на момент публикации ни одного патча не существует.
По состоянию на 26 августа 2026 года ни CVE-2026-19913, ни CVE-2026-19912 не числились в каталоге CISA KEV и не имели записи в NVD. Оценки CVSS 9.1 и 10.0 выставлены самим исследователем. Это не снижает реального риска — уязвимый код подтверждён независимо в 21 релизном теге, вплоть до West-23.5.0 от 13 августа 2026.
CVE-2026-19913 — уязвимость произвольного чтения файлов с рейтингом 9.1 по шкале CVSS (оценка исследователя). Корень проблемы — в параметре ServiceUrl, который mwEmbedLoader.php принимает из GET-запроса и передаёт PHP-клиенту KalturaClientBase как цель HTTP-обращения.
Стандартное предназначение ServiceUrl — указать URL бэкенд-API Kaltura. Однако код не проверяет ни схему, ни источник: если передать file:///etc/passwd или любой другой локальный путь, PHP-клиент прочитает файл и передаст содержимое в unserialize(). Десериализация завершается ошибкой, но байты прочитанного файла отражаются в тексте этой ошибки и возвращаются атакующему.
Вемекамп показал, что таким образом можно извлечь файл конфигурации приложения /opt/kaltura/app/configurations/local.ini. Этот файл содержит строки подключения к базе данных в открытом виде, пароли административной консоли и ссылки на внутренние хосты. Получив их, атакующий фактически получает полный контроль над экземпляром Kaltura.
Единственное условие для эксплуатации CVE-2026-19913 — сетевой доступ к эндпоинту mwEmbedLoader.php. Ни сессионного токена Kaltura, ни учётных данных не нужно. Для инсталляций, опубликованных в интернете, это означает нулевой барьер для массового сканирования.
CVE-2026-19912 (CVSS 10.0, оценка исследователя) превращает ту же точку входа в удалённое выполнение произвольного кода. Цепочка атаки использует два параметра одновременно.
Первый шаг — атакующий указывает в ServiceUrl адрес собственного сервера, отдающего специально сформированный PHP-сериализованный объект с исполняемым кодом. PHP-клиент Kaltura забирает содержимое и передаёт в unserialize().
Второй шаг — параметр uiconf_id вставляется в путь директории кэша без какой-либо санитизации. Если подставить последовательность ../../ или аналогичный path-traversal, результат записи (файл веб-шелла) оказывается за пределами разрешённой директории кэша — в папке, доступной веб-серверу напрямую. Последующий HTTP-запрос к этому файлу запускает произвольный PHP-код от имени процесса веб-сервера.
Вторая ступень цепочки требует файлового бэкенда кэша, который является настройкой Kaltura по умолчанию. При использовании исключительно memcache запись файла не происходит и именно этот путь к RCE недоступен. Тем не менее CERT/CC подчёркивает: конфигурация с memcache не является безопасной, поскольку CVE-2026-19913 (чтение файлов) работает независимо от бэкенда кэша.
Исследователь дополнительно проверил: файл KalturaClientBase.php, содержащий уязвимый вызов unserialize(), идентичен по байтам в 21 релизном теге — от Jupiter-10.9.0 (апрель 2015) до West-23.5.0 (13 августа 2026). Это означает, что код существует в неизменённом виде более одиннадцати лет.
Затронуты все инсталляции Kaltura, которые используют html5lib версий v2.45, v2.103 и более ранних v2.x-релизов с открытым эндпоинтом mwEmbedLoader.php. Помимо самостоятельно развёрнутых экземпляров, эндпоинт присутствует и на общей многопользовательской CDN Kaltura: по оценке CERT/CC, это затрагивает всех арендаторов, обслуживаемых через эту инфраструктуру.
Успешная эксплуатация CVE-2026-19913 открывает доступ к:
local.ini и соседних файлах конфигурации;apache или nginx).Успешная эксплуатация CVE-2026-19912 при файловом кэше даёт полный контроль над сервером: выполнение команд, изменение видеоконтента, горизонтальное перемещение по инфраструктуре. Это тот тип уязвимости в программах для работы с файлами, где прочитанный файл конфигурации превращается в плацдарм для захвата всего сервера — о типовых векторах мы рассказывали в разделе безопасность файлов.
Параллельно в 2026 году были раскрыты похожие проблемы в других обработчиках файлов: уязвимость CVE-2026-16633 в PDF.js позволяла выполнять JavaScript при открытии PDF в браузере, а в Foxit PDF Reader были закрыты множественные RCE. Общий паттерн один: небезопасная десериализация или недостаточная валидация входных данных при обработке файлов.
Поскольку патча нет и связаться с вендором до сих пор не удалось, CERT/CC предлагает следующие меры защиты:
ServiceUrl. Если убрать эндпоинт целиком невозможно, разрешить только легитимные URL бэкенда Kaltura и отклонять любые другие схемы, в том числе file://, gopher://, dict://.mwEmbedLoader.php с параметром ServiceUrl, содержащим file:// или нестандартные хосты, а также подозрительные значения uiconf_id с ../-последовательностями.unserialize() — в 2017 году вышло исправление релиза 13.2.0. Как только появится новая версия, обновиться немедленно.Узнать, какая версия html5lib развёрнута на вашем сервере, можно из заголовка ответа или из тега VERSION в исходниках репозитория. Если версия относится к ветке v2.x и эндпоинт доступен извне — необходимо немедленно применить сетевую блокировку.