
Очищенный отчёт и PoC-скрипт, работающий только через loopback, демонстрирующий хранимый XSS через URL-адреса лицензий `javascript:` в MediaSearch QuickView (CVE-2026-103585).
Автор отчёта: Marco Paciaroni (BomboBombone).
MediaSearch QuickView использовал LicenseUrl.value из CommonsMetadata напрямую в качестве назначения ссылки. CommonsMetadata копировал значение licensetpl_link из редактируемого описания файла, не ограничивая схему URL. Редактор мог сохранить URL со схемой javascript:; посетитель, открывший этот файл в MediaSearch и перешедший по отображаемой ссылке лицензии, мог выполнить скрипт в origin вики.
Парный CVE-2026-103584 охватывает исходный путь CommonsMetadata.
Используйте одноразовое описание файла на локальной тестовой вики с безобидным маркером:
<span class="licensetpl"><span class="licensetpl_link">javascript:alert("CVE_LICENSE_URL_XSS")</span><span class="licensetpl_short">Test license</span><span class="licensetpl_long">Local test</span></span>
Затем обратитесь к локальному API:
python poc.py --api http://127.0.0.1:8080/w/api.php --title File:LicenseUrlProbe.png
Скрипт проверяет, возвращает ли API исполняемую схему в LicenseUrl.value. Чтобы наблюдать поведение браузера, откройте файл в локальном MediaSearch QuickView и перейдите по ссылке лицензии. Скрипт допускает только loopback-адреса API.