
Санитизированный отчёт и PoC-скрипт, работающий только через loopback, для CVE-2026-103584 — XSS через схему URL `javascript:` в отображении LicenseUrl в MediaWiki CommonsMetadata.
Автор отчёта: Marco Paciaroni (BomboBombone).
CommonsMetadata копировало значение licensetpl_link из описания файла в поле LicenseUrl метаданных изображения, не ограничивая схему URL. Редактор мог сохранить URL со схемой javascript:. Когда интерфейс отображал эти метаданные как ссылку, посетитель, перешедший по ней, мог выполнить скрипт в origin вики.
Парная уязвимость CVE-2026-103585 охватывает путь потребителя MediaSearch QuickView.
Используйте одноразовое описание файла на локальной тестовой вики с безобидным маркером:
<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 и перейдите по ссылке лицензии. Скрипт допускает только loopback-адреса API.