
Rapport assaini et script PoC limité au loopback pour CVE-2026-103584, une XSS par schéma d'URL javascript: dans le rendu de LicenseUrl de MediaWiki CommonsMetadata.
Rapporteur : Marco Paciaroni (BomboBombone).
CommonsMetadata copiait la valeur licensetpl_link depuis une description de fichier dans le champ LicenseUrl des métadonnées d'image sans restreindre son schéma d'URL. Un éditeur pouvait stocker une URL javascript:. Lorsqu'une interface rendait ces métadonnées sous forme de lien, un visiteur qui le suivait pouvait exécuter du script dans l'origine du wiki.
La CVE-2026-103585 associée couvre le chemin du consommateur MediaSearch QuickView.
Utilisez une description de fichier jetable sur un wiki de test local avec un marqueur inoffensif :
<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>
Interrogez ensuite l'API locale :
python poc.py --api http://127.0.0.1:8080/w/api.php --title File:LicenseUrlProbe.png
Le script vérifie si l'API renvoie le schéma exécutable dans LicenseUrl.value. Pour observer le comportement du navigateur, ouvrez le fichier dans l'interface MediaSearch locale et suivez son lien de licence. Le script n'autorise que les URLs d'API en boucle locale.