
Rapport assaini et script de preuve de concept local démontrant le contournement du hook EmailUserAuthorizeSend de l'API action=emailuser de MediaWiki (CVE-2026-102973).
Rapporteur : Marco Paciaroni (BomboBombone).
Le chemin d'accès API action=emailuser de MediaWiki n'invoquait pas le hook EmailUserAuthorizeSend. Lorsqu'une extension ou une politique de site utilisait ce hook pour refuser un expéditeur, le formulaire web appliquait le refus tandis que le chemin d'accès API pouvait toujours envoyer le message.
Cela dépend de la configuration. Cela affecte un wiki uniquement lorsqu'une politique locale ou une extension utilise EmailUserAuthorizeSend comme contrôle d'autorisation. La configuration de base du cœur ne fournit pas de hook de refus à elle seule. Un compte affecté doit également disposer de la permission normale d'envoi d'e-mail.
Configurez un wiki de test local isolé avec un hook temporaire qui refuse un expéditeur jetable, et configurez la messagerie MediaWiki pour qu'elle ne livre qu'à un récepteur SMTP local tel que Mailpit. Créez un compte destinataire jetable pour ce récepteur. Le script compare le formulaire web refusé avec la requête API et indique si l'API a ignoré le hook de politique.
Le script refuse les URL de wiki non-loopback, exige un indicateur de confirmation SMTP local explicite et une confirmation saisie, et demande le mot de passe de l'expéditeur. N'utilisez pas un wiki configuré pour envoyer du courrier vers l'extérieur.
python poc.py --base http://127.0.0.1:8080 --username PolicyTestSender --target CVE102973TestRecipient --confirm-local-smtp
Le message de refus du hook doit contenir email-policy-denied (le marqueur par défaut). L'expéditeur a besoin du droit normal sendemail, et le destinataire doit utiliser l'adresse du récepteur local.