
Informe saneado y script de prueba de concepto local que demuestra el bypass del hook EmailUserAuthorizeSend de la API action=emailuser de MediaWiki (CVE-2026-102973).
Reportero: Marco Paciaroni (BomboBombone).
La ruta de la API action=emailuser de MediaWiki no invocaba el hook EmailUserAuthorizeSend. Cuando una extensión o una política del sitio utilizaba ese hook para denegar a un remitente, el formulario web aplicaba la denegación mientras que la ruta de la API aún podía enviar el mensaje.
Esto depende de la configuración. Solo afecta a un wiki cuando una política local o una extensión utiliza EmailUserAuthorizeSend como control de autorización. La configuración del núcleo estándar no proporciona por sí misma un hook de denegación. Una cuenta afectada también necesita el permiso normal de envío de correo electrónico.
Configure un wiki de prueba local aislado con un hook temporal que deniegue a un remitente desechable, y configure el correo de MediaWiki para que entregue únicamente a un receptor SMTP local como Mailpit. Cree una cuenta de destinatario desechable para ese receptor. El script compara el formulario web denegado con la solicitud de la API e informa si la API omitió el hook de política.
El script rechaza las URL de wiki que no sean de loopback, requiere una bandera de confirmación explícita de SMTP local y una confirmación escrita, y solicita la contraseña del remitente. No utilice un wiki configurado para enviar correo externamente.
python poc.py --base http://127.0.0.1:8080 --username PolicyTestSender --target CVE102973TestRecipient --confirm-local-smtp
El mensaje de denegación del hook debe contener email-policy-denied (el marcador predeterminado). El remitente necesita el permiso normal sendemail, y el destinatario debe usar la dirección del receptor local.