
Prueba de concepto de exploit para XenForo CVE-2026-73318, una omisión de autorización que permite a los administradores del ACP activar el re-acuerdo de políticas en todo el sitio. Incluye pasos de reproducción y un script en Python.
XenForo anterior a 2.3.13 permite que cualquier administrador del ACP active el re-acuerdo de la política de privacidad y los términos a nivel de todo el sitio.
Las entradas de navegación del ACP están limitadas a administradores con el permiso option, pero ForceAgreementController no aplica ese permiso. Las solicitudes directas de cualquier administrador del ACP autenticado llegan a ambos formularios y a sus acciones POST que modifican el estado.
Las acciones actualizan las marcas de tiempo globales de la política. Los usuarios cuya aceptación registrada sea anterior a esos valores se ven obligados a pasar por la correspondiente puerta de acuerdo. El fallo no permite al administrador limitado editar el texto de la política; le permite activar el flujo de re-acuerdo en todo el foro fuera de su rol asignado.
Lo reproduje en XenForo 2.3.12 (build 2031270) con un administrador no superusuario que solo tenía un permiso del ACP no relacionado. La cuenta recibió HTTP 403 desde Options pero HTTP 200 desde ambas rutas de force-agreement. XenForo 2.3.13 contiene la corrección.
python poc.py https://xenforo.example LIMITED_ADMIN --confirm
La contraseña se lee con un prompt oculto. Esto cambia dos marcas de tiempo globales. Usa un foro aislado, registra los valores originales y restáuralos después de las pruebas.
Descubierto por Marco Paciaroni (BomboBombone).