Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en cms de statamic (CVE-2026-71293)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-200 Revelación de información
Fecha de publicación:
05/08/2026
Última modificación:
23/10/2026

Descripción

El resolvedor de aumento de usuario de Statamic CMS, AugmentedUser::get() en src/Auth/AugmentedUser.php, contiene un caso explícito para el manejador ’two_factor_recovery_codes’ que devuelve los códigos de recuperación de doble factor sin procesar del usuario sin restricción de acceso: ’if ($handle === ’two_factor_recovery_codes’) { return new Value($this -> data -> get(’two_factor_recovery_codes’), ...); }’. A diferencia de campos sensibles como password/password_hash, que están completamente excluidos de AugmentedUser, two_factor_recovery_codes no está excluido del aumento ni presente en las listas de protección de variables Antlers de Statamic (guardedVariablePatterns/guardedContentVariablePatterns en src/Providers/ViewServiceProvider.php, y las rutas de protección de GlobalRuntimeState en tiempo de ejecución), que por defecto solo protegen config.app.key. En cualquier campo de plantilla Antlers donde la renderización de plantilla sin procesar/dinámica esté habilitada para un campo dado (una opción de campo a nivel de blueprint, configurada por un administrador/desarrollador), una plantilla como ’{{ current_user.two_factor_recovery_codes }}{{ value }}|{{ /current_user.two_factor_recovery_codes }}’ renderiza los propios códigos de recuperación 2FA del usuario que visualiza directamente en la respuesta HTML, permitiendo a un atacante que pueda ver o capturar esa respuesta (por ejemplo, a través de una página compartida/observable, o un enlace manipulado que haga que una víctima lo renderice) obtener los códigos y eludir la 2FA. La explotación requiere que la renderización dinámica de Antlers ya esté habilitada en un campo por el que fluyen los datos del usuario objetivo, lo cual es un privilegio de configuración de blueprint en lugar de un permiso estándar de edición de contenido.