Skip to main content

Statamic CMS EUVDEUVD-2026-53378

| CVE-2026-71293 MEDIUM
Information Exposure (CWE-200)
2026-08-05 TuranSec GHSA-jppw-r5j3-xf7x
6.2
CVSS 3.1 · Vendor: TuranSec
Share

Severity by source

Vendor (TuranSec) PRIMARY
6.2 MEDIUM
AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:N/A:N
vuln.today AI
6.2 MEDIUM

PR:H confirmed by blueprint-configuration requirement; UI:R by victim page-load dependency; S:C because recovery codes enable account takeover beyond the CMS itself.

3.1 AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (TuranSec).

CVSS VectorVendor: TuranSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

1
Analysis Generated
Aug 05, 2026 - 13:54 vuln.today

DescriptionCVE.org

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.

AnalysisAI

Statamic CMS exposes authenticated users' raw two-factor authentication recovery codes through the Antlers templating engine due to a missing access restriction in the AugmentedUser::get() resolver. Unlike password and password_hash fields, which are explicitly excluded from augmentation, two_factor_recovery_codes is returned without restriction and is absent from all Antlers variable guard lists. An administrator or developer who has configured a blueprint field with dynamic Antlers rendering enabled can craft a template ({{ current_user.two_factor_recovery_codes }}) that, when rendered by a victim visiting the page, leaks that victim's 2FA recovery codes into the HTML response - enabling 2FA bypass. No public exploit has been identified at time of analysis, and exploitation requires a high-privilege prerequisite (blueprint configuration access).

Technical ContextAI

Statamic CMS (CPE: cpe:2.3:a:statamic:cms:*:*:*:*:*:*:*:*) is a Laravel/PHP-based flat-file CMS with a template engine called Antlers. The vulnerability root cause is CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor), arising from an asymmetric treatment of sensitive fields in the AugmentedUser class (src/Auth/AugmentedUser.php). Statamic explicitly excludes password and password_hash from user augmentation entirely, but includes an affirmative, unguarded case for two_factor_recovery_codes that returns raw codes via $this->data->get('two_factor_recovery_codes'). The Antlers template guard system in ViewServiceProvider.php uses guardedVariablePatterns and guardedContentVariablePatterns to block sensitive variables from template access, but two_factor_recovery_codes is not listed - only config.app.key is guarded by default. When a blueprint field is configured to allow dynamic/raw Antlers rendering (a per-field, admin-controlled option), the {{ current_user.two_factor_recovery_codes }} variable resolves and outputs codes directly into rendered HTML.

RemediationAI

No vendor-released patch or advisory has been identified at the time of this analysis; the only references provided point to the upstream GitHub repository without a tagged fix release or changelog entry. As a primary compensating control, administrators should audit all blueprint configurations and disable dynamic/raw Antlers rendering on any field where user-supplied or user-contextual data is rendered - this directly removes the exploitation prerequisite. As a secondary control, review and extend Statamic's guardedVariablePatterns and guardedContentVariablePatterns in ViewServiceProvider.php to explicitly include two_factor_recovery_codes, preventing template resolution of this handle even if dynamic rendering is enabled; note this requires direct code modification and must be re-applied after CMS updates. Access to blueprint configuration (the high-privilege prerequisite) should be restricted to the minimum necessary administrators. Monitor the upstream repository at https://github.com/statamic/cms for a patch release and apply it promptly once available.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

Share

EUVD-2026-53378 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy