
Rapport et preuve de concept pour CVE-2026-96878, une XSS stockée dans les alias de champs Exhibit de MediaWiki Cargo, avec notes de validation et références de correctifs en amont.
Rapporteur : Marco Paciaroni (BomboBombone).
Le moteur de rendu Exhibit de Cargo insérait les alias de champs dans sa présentation HTML sans les encoder pour les contextes de texte et d'attribut. Un éditeur de page pouvait persister une requête dont les alias étaient interprétés comme du balisage lors de la consultation de la page.
L'enregistrement CVE identifie Cargo jusqu'à la version 3.9.4 comme affecté.
Le scénario signalé nécessitait le format Exhibit, la permission de modifier une page affichée à d'autres utilisateurs, et une requête comportant plusieurs champs. L'exécution de script se produisait dans l'origine du wiki pour les visiteurs de cette page.
Le rapport original consigne une exécution dans le navigateur depuis une vue Exhibit sur une instance MediaWiki locale. Un alias ordinaire ne produisait aucun élément porteur d'événement.
La modification en amont construit la présentation Exhibit à l'aide d'assistants HTML qui encodent le texte des alias et les valeurs d'attribut dans leurs contextes respectifs.
python poc.py TABLE FIELD_ONE FIELD_TWO
Le script affiche une requête Cargo Exhibit avec un marqueur DOM inoffensif. Ajoutez-la uniquement à une page de test que vous êtes autorisé à modifier, observez la vue Exhibit rendue, puis retirez-la ensuite.
La description publique de la CVE qualifie actuellement ce problème de XSS réfléchi. Le rapport soumis décrit une requête persistée dans le contenu modifiable d'une page et déclenchée lors d'une consultation ultérieure de la page. Ce rapport décrit ce scénario stocké sans modifier l'enregistrement CVE.