
Отчёт и скрипт proof-of-concept для CVE-2026-96875 — отражённой XSS в иерархических фильтрах MediaWiki Cargo Drilldown, с замечаниями по валидации и ссылками на исправление в upstream.
Автор отчёта: Marco Paciaroni (BomboBombone).
Cargo не сохранял экранирование при форматировании значения фильтра иерархии для хлебных крошек Drilldown. Данные запроса могли интерпретироваться как HTML на итоговой странице.
В записи CVE как затронутые указаны версии Cargo вплоть до 3.9.4.
Описанный сценарий требовал публичной таблицы Cargo с полем иерархии. Анонимный злоумышленник мог подготовить запрос, который жертва открывает, что приводило к выполнению скрипта в origin вики.
В исходном отчёте зафиксировано выполнение в браузере при отражённом отображении фильтра на локальном экземпляре MediaWiki. Обычное значение фильтра отображалось как текст.
Изменение в upstream убирает декодирование сущностей из форматированного вывода фильтра и корректирует обработку сообщений для сохранения нужной текстовой границы.
python poc.py https://wiki.example TABLE FIELD
Скрипт отправляет запрос с фильтром иерархии с безвредным DOM-маркером и сообщает, содержит ли ответ неэкранированный элемент изображения.
В публичном описании CVE эта проблема в настоящее время обозначена как stored XSS. В поданном отчёте описано значение запроса, отражаемое в ответе. Настоящий отчёт описывает наблюдаемое поведение, не изменяя запись CVE.