GHSA-jppw-r5j3-xf7x

Suggest an improvement
Source
https://github.com/advisories/GHSA-jppw-r5j3-xf7x
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-jppw-r5j3-xf7x/GHSA-jppw-r5j3-xf7x.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-jppw-r5j3-xf7x
Aliases
  • CVE-2026-71293
Published
2026-08-05T15:32:21Z
Modified
2026-09-01T20:10:46Z
Severity
  • 6.2 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:N/A:N CVSS Calculator
Summary
Statamic CMS exposes two-factor recovery codes through dynamic Antlers rendering
Details

Statamic CMS's user-augmentation resolver, AugmentedUser::get() in src/Auth/AugmentedUser.php, contains an explicit case for the two_factor_recovery_codes handle that returns the user's raw two-factor recovery codes with no access restriction: if ($handle === 'two_factor_recovery_codes') { return new Value($this->data->get('two_factor_recovery_codes'), ...); }. Unlike sensitive fields such as password/password_hash, which are excluded from AugmentedUser entirely, two_factor_recovery_codes is neither excluded from augmentation nor present in Statamic's Antlers variable guard lists (guardedVariablePatterns/guardedContentVariablePatterns in src/Providers/ViewServiceProvider.php, and the runtime GlobalRuntimeState guard paths), which by default only guard config.app.key. On any Antlers template field where raw/dynamic template rendering is enabled for a given field (an admin/developer-configured, blueprint-level field option), a template such as {{ current_user.two_factor_recovery_codes }}{{ value }}|{{ /current_user.two_factor_recovery_codes }} renders the viewing user's own 2FA recovery codes directly into the HTML response, allowing an attacker who can view or capture that response (e.g. via a shared/observable page, or a crafted link causing a victim to render it) to obtain the codes and bypass 2FA. Exploitation requires that dynamic Antlers rendering already be enabled on a field the target user's data flows through, which is a blueprint-configuration privilege rather than a standard content-editing permission.

Database specific
{
    "cwe_ids":  [
        "CWE-200",
        "CWE-522"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-09-01T19:56:31Z",
    "nvd_published_at":  "2026-08-05T13:24:54Z",
    "severity":  "MODERATE"
}
References

Affected packages

Packagist / statamic/cms

Package

Name
statamic/cms
Purl
pkg:composer/statamic/cms

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.0.0-alpha.1
Last Affected
6.30.0

Affected versions

v6.*
v6.0.0-alpha.1
v6.0.0-alpha.2
v6.0.0-alpha.3
v6.0.0-alpha.4
v6.0.0-alpha.5
v6.0.0-alpha.6
v6.0.0-alpha.7
v6.0.0-alpha.8
v6.0.0-alpha.9
v6.0.0-alpha.10
v6.0.0-alpha.11
v6.0.0-alpha.12
v6.0.0-alpha.13
v6.0.0-alpha.14
v6.0.0-alpha.15
v6.0.0-alpha.16
v6.0.0-alpha.17
v6.0.0-alpha.18
v6.0.0-alpha.19
v6.0.0-alpha.20
v6.0.0-alpha.21
v6.0.0-beta.1
v6.0.0-beta.2
v6.0.0-beta.3
v6.0.0-beta.4
v6.0.0-beta.5
v6.0.0-beta.6
v6.0.0
v6.1.0
v6.2.0
v6.2.1
v6.2.2
v6.2.3
v6.2.4
v6.2.5
v6.3.0
v6.3.1
v6.3.2
v6.3.3
v6.4.0
v6.4.1
v6.5.0
v6.6.0
v6.6.1
v6.6.2
v6.6.3
v6.7.0
v6.7.1
v6.7.2
v6.7.3
v6.8.0
v6.9.0
v6.10.0
v6.11.0
v6.12.0
v6.13.0
v6.14.0
v6.15.0
v6.16.0
v6.17.0
v6.18.0
v6.18.1
v6.19.0
v6.20.0
v6.20.1
v6.20.2
v6.20.3
v6.21.0
v6.22.0
v6.23.0
v6.24.0
v6.24.1
v6.24.2
v6.25.0
v6.26.0
v6.27.0
v6.27.1
v6.27.2
v6.28.0
v6.29.0
v6.30.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-jppw-r5j3-xf7x/GHSA-jppw-r5j3-xf7x.json"