Skip to main content

Craft CMS EUVDEUVD-2026-109206

| CVE-2026-115938 HIGH
Improper Neutralization of Special Elements Used in a Template Engine (CWE-1336)
2026-10-23 Hackrate GHSA-gg4p-9c93-5hfp
8.7
CVSS 4.0 · Vendor: Hackrate
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege CP user
  2. Delivery
    Submit crafted element-search condition
  3. Exploit
    Character oracle leaks securityKey via JSON responses
  4. Execution
    Forge HMAC-signed redirect parameter
  5. Impact
    Reach unsandboxed renderObjectTemplate, invoke PHP callables as web server user

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V1 - Encoding and Sanitization Template injection prevention
Exploitation Conditions

Requires a valid authenticated Craft control panel account of any privilege level (PR:L) - exploitation is not anonymous. No non-default configuration is needed: the element-search condition feature, its allowed 'column' filter delegating to Yii ArrayHelper, and the JSON element-index endpoint are standard control panel functionality, so default installations in the vulnerable ranges (4.0.0 to <4.18.9 and 5.0.0 to <5.11.2) are affected. The only hard limiter is the authentication requirement; the oracle and subsequent HMAC forgery require no user interaction and no special platform or deployment mode. Patching to 4.18.9 or 5.11.2 is the stated fix.

Impact

This is a genuine high-priority issue rather than a CVSS-inflated one, though the authentication prerequisite tempers it. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N, VC:H/VI:H/VA:H, score 8.7) describes a network-reachable, low-complexity attack that achieves full confidentiality, integrity and availability impact - effective remote code execution as the web server user. The decisive limiter is PR:L: the attacker must already hold a valid control panel account, so this is not anonymous internet exploitation but rather a privilege-escalation/sandbox-escape path available to any logged-in CP user (including low-trust editors). No EPSS score was provided in the input, and the vulnerability is NOT listed in CISA KEV, so there is no evidence of widespread active exploitation; the vuln.today decision label is 'this_week', indicating elevated but not emergency urgency. A public PoC reference exists (the vendor advisory describes a working regression proof using a harmless substr() callback and the Hackrate hacktivity writeup), but it is not verified as a packaged, OS-command-executing exploit - the advisory explicitly notes the proof does not run an OS command. Net: treat as a prompt-patch item for any Craft CMS deployment where untrusted or numerous users have control panel access; the barrier is account access, not configuration.

Exploit ScenarioDerived

A low-privilege but authenticated Craft control panel user submits an element-search condition whose selector is evaluated as a sandboxed Twig object template; by chaining single-segment column lookups that delegate to Yii ArrayHelper outside Twig's SecurityPolicy, they build a remote character oracle (author ID 1 vs. empty JSON array) to exfiltrate GeneralConfig::securityKey one character at a time. With the key recovered offline, the attacker forges Craft's HMAC-signed parameters (e.g. redirect) that reach the unsandboxed View::renderObjectTemplate(), invoking native PHP callables as the web server user. A public PoC reference exists demonstrating the sandbox escape with substr(); it is not verified as a working OS-command exploit.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.7% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

Any authenticated control panel user in Craft CMS - regardless of privilege level - can escape the Twig sandbox through an element-search condition and use a boolean oracle to recover the site's GeneralConfig::securityKey character by character, then forge Craft's HMAC-signed parameters offline and reach unsandboxed View::renderObjectTemplate(), where Twig string-callable syntax invokes native PHP callables as the web server user. Default installations in the ranges 4.0.0 to before 4.18.9 and 5.0.0 to before 5.11.2 are affected; no non-default configuration is required and no user interaction is involved. The vendor-released fix is 4.18.9 (4.x) and 5.11.2 (5.x); exploitation is not confirmed in the wild and no EPSS or KEV signal was supplied, though the advisory documents a regression proof that invokes a harmless substr() callback rather than an OS command. The vulnerability is a genuine high-priority issue rather than a CVSS-inflated one, though the authentication prerequisite tempers it.

RemediationAI

Vendor-released patch: upgrade composer/craftcms/cms to 4.18.9 for the 4.x branch or 5.11.2 for the 5.x branch, per GHSA-v4q3-2g5g-wjj6 and the 5.11.2 release notes; because the same 5.11.2 release also fixes unrelated high-severity SQL injection and permission escalation bugs, sites on 5.x should not defer the update. The advisory documents no separate workaround, and the vulnerable behavior is standard control panel functionality (element-search conditions, the 'column' filter, and the JSON element-index endpoint), so disabling it means removing the feature rather than toggling a setting. The practical compensating control is to shrink the PR:L exposure: audit and reduce control panel accounts, and treat every existing CP account as a potential launch point, since any privilege level suffices. Because the chain depends on recovering GeneralConfig::securityKey, rotate that secret after any suspected exploitation so an already-exfiltrated key cannot be reused for HMAC forgery - rotating it invalidates existing signed tokens, links and sessions, which is the expected side effect. Finally, review control panel and web server logs for anomalous element-search or element-index JSON requests that vary a single character and return alternating empty and non-empty result sets, which is the signature of the oracle.

Affected VersionsENISA

CMS 5.0.0 <5.11.2
CMS 4.0.0 <4.18.9

Affected Packages

euvd cms fix: 4.18.9, 5.11.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-1336, improper neutralization of special elements used in a template engine - server-side template injection. Craft CMS lets a control panel user supply an element-search condition whose element selector is rendered as a Twig object template under a sandbox. Craft's allowed 'column' filter hands property lookup to Yii's ArrayHelper rather than keeping the resolution inside Twig, so the SecurityPolicy's property and method allowlists (which are empty in the sandbox configuration) are never consulted; repeated single-segment lookups walk the object graph outside the sandbox's authority. The condition value is ultimately cast to an integer, but that does not protect the secret: the template can be made to yield author ID 1 when a guessed key character matches and an impossible ID otherwise, so the JSON element-index endpoint returns entries in the first case and an empty array in the second, producing a stable remote character oracle against GeneralConfig::securityKey. With that key recovered, the same low-privileged user can compute Craft's generic HMAC wire format offline and submit signed parameters - redirect being the cited example - that are accepted and passed to View::renderObjectTemplate() without a sandbox, where Twig's string-callable form reaches native PHP callables. Impact is escape of the intended template security authority and execution of attacker-selected PHP callables as the web server user; SQL injection and permission escalation fixes shipped in the same 5.11.2 release are separate advisories, not part of this chain.

Know when Cms gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Hackrate) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.8 HIGH

Network JSON endpoint and a reliable deterministic oracle give AV:N/AC:L; any CP account suffices so PR:L; PHP callable execution as web server user yields C:H/I:H/A:H within one authority, so S:U.

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

Primary rating from Vendor (Hackrate).

CVSS VectorVendor: Hackrate

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 23, 2026 - 23:18 EUVD
CVE Published
Oct 23, 2026 - 21:58 cve.org
HIGH 8.7

DescriptionCVE.org

Craft CMS allows any authenticated control panel user to submit an element-search condition whose element selector is evaluated as a sandboxed Twig object template. Craft’s allowed column filter delegates property lookup to Yii ArrayHelper, outside Twig’s SecurityPolicy. Repeated single-segment lookups therefore bypass the sandbox’s empty property/method allowlists.

The vulnerable condition value is ultimately cast to an integer. That does not protect the secret: the template can return author ID 1 when a guessed key character is correct and an impossible ID otherwise. The JSON endpoint returns entries for the first case and an empty array for the second, forming a stable remote character oracle.

After recovering GeneralConfig::securityKey, the same user can compute Craft’s generic HMAC wire format offline. Signed parameters such as redirect are then accepted and passed to unsandboxed View::renderObjectTemplate(), where Twig’s string-callable form can invoke native PHP callables. The regression proof uses the harmless substr() callback and observes abcdef becoming cdef; it does not execute an OS command.

Technical POC Analysis

CWE-1336 (improper neutralisation of special elements used in a template engine - server-side template injection) in craftcms/cms (Composer package).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-115938 is a high-severity vulnerability in Craft CMS that allows any authenticated control panel user, even with minimal privileges, to escape the Twig sandbox and potentially execute arbitrary PHP code as the web server user. This affects all default installations of Craft CMS versions 4.0.0 to 4.18.9 and 5.0.0 to 5.11.2, meaning most organizations using these versions are exposed. Leadership should prioritize remediation because a low-privileged insider or compromised account could escalate to full server compromise, putting sensitive data and systems at risk.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include restricting control panel access to trusted users, monitoring for suspicious activity, and reviewing user privileges; however, upgrading to the fixed versions (4.18.9 or 5.11.2) is the definitive remediation once available.

Threat Intelligence Overview

EPSS Score
0.7%
Top 48% exploitable
Prevalence
Medium
popular PHP CMS, meaningful but not ubiquitous web footprint
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.7%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

More in Cms

View all
CVE-2020-7357 CRITICAL POC
9.9 Aug 06

Cayin CMS suffers from an authenticated OS semi-blind command injection vulnerability using default credentials. Rated c

CVE-2012-4405 MEDIUM
6.8 Sep 18

Multiple integer underflows in the icmLut_allocate function in International Color Consortium (ICC) Format library (iccl

CVE-2021-47753 CRITICAL POC
9.8 Jan 15

phpKF CMS 3.00 Beta allows unauthenticated PHP file upload by disguising it as a PNG, then renaming it for execution. Po

CVE-2019-9874 CRITICAL POC
9.8 May 31

Deserialization of Untrusted Data in the Sitecore.Security.AntiCSRF (aka anti CSRF) module in Sitecore CMS 7.0 to 7.2 an

CVE-2019-9875 HIGH POC
8.8 May 31

Deserialization of Untrusted Data in the anti CSRF module in Sitecore through 9.1 allows an authenticated attacker to ex

CVE-2026-113358 HIGH POC
8.7 Oct 20

Unauthenticated file disclosure in LavaLite CMS through 10.1.2 allows remote attackers to download private stored files

CVE-2026-56382 HIGH POC
8.6 Jun 21

Authenticated remote code execution in Craft CMS versions 5.5.0 through 5.9.13 allows admin users to execute arbitrary P

CVE-2012-5894 HIGH POC
7.5 Nov 17

SQL injection vulnerability in hava_post.php in Havalite CMS 1.1.0 and earlier allows remote attackers to execute arbitr

CVE-2012-5893 MEDIUM POC
6.8 Nov 17

Unrestricted file upload vulnerability in hava_upload.php in Havalite CMS 1.1.0 and earlier allows remote attackers to e

CVE-2015-2083 MEDIUM POC
6.8 Feb 25

Cross-site request forgery (CSRF) vulnerability in Ilch CMS allows remote attackers to hijack the authentication of admi

CVE-2012-5919 MEDIUM POC
4.3 Nov 19

Multiple cross-site scripting (XSS) vulnerabilities in Havalite 1.0.4 and earlier allow remote attackers to inject arbit

CVE-2025-5429 MEDIUM POC
6.3 Jun 02

A security vulnerability in juzaweb CMS (CVSS 6.3). Risk factors: public PoC available.

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