← Back to CVE Explorer

CVE-2026-71293

Full vulnerability record from the local CVENow database.

Description

Statamic CMS's user-augmentation resolver, AugmentedUser::get in src/Auth/AugmentedUser.php, contains an explicit case for the handle that returns the user's raw two-factor recovery codes with no access restriction.

Severity
MEDIUM
CVSS score
6.2 (v3.1)
Vulnerability status
Deferred
Source identifier
309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c
Published
2026-08-05 13:24:54.060000
Last modified
2026-10-23 21:10:00.157000
View original CVE JSON
{
  "id": "CVE-2026-71293",
  "sourceIdentifier": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
  "published": "2026-08-05T13:24:54.060",
  "lastModified": "2026-10-23T21:10:00.157",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Statamic CMS's user-augmentation resolver, AugmentedUser::get in src/Auth/AugmentedUser.php, contains an explicit case for the handle that returns the user's raw two-factor recovery codes with no access restriction."
    },
    {
      "lang": "es",
      "value": "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."
    }
  ],
  "affected": [
    {
      "source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
      "affectedData": [
        {
          "vendor": "statamic",
          "product": "cms",
          "defaultStatus": "unaffected",
          "programFiles": [
            "src/Auth/AugmentedUser.php",
            "src/Providers/ViewServiceProvider.php"
          ],
          "versions": [
            {
              "version": "0",
              "lessThanOrEqual": "6.23.0",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:N/A:N",
          "baseScore": 6.2,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "HIGH",
          "userInteraction": "REQUIRED",
          "scope": "CHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "NONE",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 1.7,
        "impactScore": 4.0
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-05T15:35:58.608812Z",
          "id": "CVE-2026-71293",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-200"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/statamic/cms",
      "source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c"
    },
    {
      "url": "https://github.com/statamic/cms/blob/master/src/Auth/AugmentedUser.php",
      "source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c"
    }
  ]
}