
Relatório sanitizado e script PoC apenas em loopback demonstrando XSS armazenado via URLs de licença javascript: no MediaSearch QuickView (CVE-2026-103585).
Repórter: Marco Paciaroni (BomboBombone).
O MediaSearch QuickView usava o LicenseUrl.value do CommonsMetadata diretamente como destino de link. O CommonsMetadata copiava o valor de licensetpl_link de uma descrição de arquivo editável sem restringir seu esquema de URL. Um editor poderia armazenar uma URL javascript:; um visitante que abrisse esse arquivo no MediaSearch e seguisse o link de licença exibido poderia executar script na origem da wiki.
O CVE-2026-103584 pareado cobre o caminho de origem do CommonsMetadata.
Use uma descrição de arquivo descartável em uma wiki de teste local com um marcador inofensivo:
<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>
Em seguida, consulte a API local:
python poc.py --api http://127.0.0.1:8080/w/api.php --title File:LicenseUrlProbe.png
O script verifica se a API retorna o esquema executável em LicenseUrl.value. Para observar o comportamento do navegador, abra o arquivo no MediaSearch QuickView local e siga seu link de licença. O script permite apenas URLs de API em loopback.