Skip to main content

Craft CMS CVE-2026-115935

| EUVDEUVD-2026-109191 HIGH
Code Injection (CWE-94)
2026-10-23 Hackrate GHSA-j6hf-w48h-c9f9
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-priv accessCp user
  2. Delivery
    Post fake API headers to process-api-response-headers
  3. Exploit
    CRLF-inject new CRAFT_SECURITY_KEY into .env
  4. Execution
    Forge signed login redirect with Twig system()
  5. Impact
    Execute OS commands as PHP worker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated Craft control-panel account possessing the accessCp permission (explicitly a non-admin, low-privileged user) and network reach to the app/process-api-response-headers control-panel action. The concrete trigger is CRLF/newline injection into the X-Craft-Plugin-Licenses response header value, which Craft's .env writer persists without stripping newlines, allowing insertion of an attacker-chosen CRAFT_SECURITY_KEY; the attacker then forges a signed login redirect containing a Twig system() callback. The limiting factor is that a valid control-panel login is mandatory - this is not exploitable by fully unauthenticated internet attackers - but no admin rights, no user interaction, and no non-default configuration are needed, so any CP user with accessCp qualifies. This source is independent of the prior Twig-sandbox key-read report, so fixing one does not fix this one.

Impact

This is a genuine priority despite requiring authentication. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes a network-reachable, low-complexity attack needing only low privileges, with high impact to confidentiality, integrity and availability (VC:H/VI:H/VA:H) - consistent with the described outcome of arbitrary OS command execution as the PHP worker. The decisive factor is the privilege model: PR:L here means any authenticated control-panel user holding only the accessCp permission (explicitly a non-admin), so the vulnerability converts a routine low-trust CP account into full server RCE, a severe privilege-escalation-to-code-execution chain. The vendor (Craft CMS) and GHSA-9hp6-3565-gvh5 confirm the mechanism and that a patch exists, and vuln.today assigns a 'this_week' decision label, indicating elevated but not emergency urgency. No CISA KEV listing and no EPSS score are provided in the input, so widespread or active exploitation is NOT established - the signal set points to a high-impact, authenticated flaw that is credible and patch-available rather than a confirmed mass-exploitation event. A public report reference from Hackrate (HCKRT-WM3VSE) exists but is not verified as working exploit code. The only notable caveat: the vendor CVSS and my assessment agree, so there is no CVSS-vs-description conflict to flag here.

Exploit ScenarioDerived

An attacker who holds (or phishes/registers) a low-privileged Craft control-panel account with the accessCp permission sends a crafted request to the app/process-api-response-headers action, embedding newline characters in the X-Craft-Plugin-Licenses value to inject a CRLF-based new CRAFT_SECURITY_KEY into the .env file. Once Craft loads the attacker-known key, they forge a signed login redirect carrying a Twig system() callback, achieving OS command execution as the PHP worker. A public report reference (Hackrate HCKRT-WM3VSE) exists but is not verified as working exploit code.

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

Authenticated, low-privileged Craft CMS control-panel users (any account holding only the accessCp permission) can escalate to arbitrary operating-system command execution as the PHP worker. By sending a fake Craft API response header whose X-Craft-Plugin-Licenses value contains embedded newlines, the user abuses a CRLF injection in the app/process-api-response-headers action: Craft writes the value into the .env file without stripping line breaks, so the attacker can inject an attacker-known CRAFT_SECURITY_KEY. Once that key is loaded, the attacker forges a signed login redirect carrying a Twig system() callback. Both the 4.x branch (4.0.0 through 4.18.8) and the 5.x branch (5.0.0 through 5.11.1) are affected; vendor fixes exist in 4.18.9 and 5.11.2, and no public exploit code was identified at time of analysis. The vulnerability requires a valid control-panel login, but no admin rights, no user interaction and no non-default configuration, so any CP user with accessCp qualifies.

RemediationAI

Vendor-released patch: upgrade to Craft CMS 4.18.9 (4.x branch) or 5.11.2 (5.x branch) per advisory GHSA-9hp6-3565-gvh5 (https://github.com/craftcms/cms/security/advisories/GHSA-9hp6-3565-gvh5) and the release at https://github.com/craftcms/cms/releases/tag/5.11.2 - the 5.11.2 notes also state it fixes a high-severity SQL injection (GHSA-mjj9-pjh4-r48g) and high-severity permission escalation issues (GHSA-r56r-f696-c8w9), so the upgrade should not be deferred to a later maintenance window. Because the attack plants an attacker-chosen signing secret, upgrading alone is not sufficient on a system that may already have been touched: inspect .env for unexpected or duplicated CRAFT_SECURITY_KEY entries and replace the key with a freshly generated value after patching, accepting that all existing sessions and signed tokens will be invalidated and users must log in again. Since the prerequisite is any account holding accessCp, audit and prune control-panel accounts to the minimum set that genuinely needs control-panel access, and keep the control panel behind network restrictions or a trusted reverse proxy where feasible; both reduce exposure but do not replace the patch. Note that this issue is independent of the earlier Twig-sandbox key-disclosure report - remediating one does not remediate the other, so verify both code paths are addressed by the version you deploy.

Affected VersionsENISA

CMS 4.0.0 <4.18.9
CMS 5.0.0 <5.11.2

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

Craft CMS is a PHP content management system distributed as the Composer package craftcms/cms and built on the Yii2 framework; its runtime configuration, including the cryptographically sensitive CRAFT_SECURITY_KEY used to sign sessions and tokens, is stored in a .env file. The app/process-api-response-headers control-panel action emulates Craft API responses, and the X-Craft-Plugin-Licenses value supplied through it is passed to the application's .env writer. The writer does not validate for line breaks, so a value containing CRLF sequences introduces arbitrary additional lines into .env rather than staying a single scalar. This is a classic configuration-file injection primitive: the attacker plants a CRAFT_SECURITY_KEY of their own choosing, and once Craft reloads that key the attacker controls the signing secret and can mint a valid signed login redirect containing a Twig system() callback. The ultimate impact class is CWE-94 (Code Injection) because the injected secret is the stepping stone to evaluating arbitrary Twig/PHP and executing OS commands, even though the entry primitive itself is newline/header injection plus missing input validation. The 5.11.2 release notes add a craft\helpers\StringHelper::containsNewlines() helper, which is consistent with the newline-checking fix for this issue. Notably, this is a distinct code path from the earlier Twig-sandbox-bypass report that *reads* the existing key; this one *replaces* it, so remediating one does not remediate the other.

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-reachable CP action with low-complexity CRLF injection by any authenticated accessCp user (PR:L, not PR:N), no user interaction, yielding full RCE so C/I/A all High.

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 - 22:03 EUVD
CVE Published
Oct 23, 2026 - 21:40 cve.org
HIGH 8.7

DescriptionCVE.org

The app/process-api-response-headers action accepts fake Craft API response headers from any authenticated control panel user.

A non-admin user with only accessCp can place newline characters in X-Craft-Plugin-Licenses. Craft passes this value to its .env writer without removing the newlines.

This lets the user insert a new attacker-known CRAFT_SECURITY_KEY into .env. After Craft loads that key, the user can forge a signed login redirect containing a Twig system() callback.

This is different from the previous report. That report reads the existing key through a Twig sandbox bypass. This report replaces the key through fake API headers and CRLF injection. Fixing either source does not fix the other.

Technical POC Analysis

The bug class is CWE-94 code injection, realized through a CRLF/header-value injection into a configuration file.

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-115935 in Craft CMS allows any low-privileged control-panel user (with only accessCp permission) to escalate to arbitrary operating system command execution as the PHP worker. This affects all organizations running affected Craft CMS versions (4.x before 4.18.9 and 5.x before 5.11.2) and could lead to full server compromise. Leadership should prioritize patching because a compromised CP account (e.g., via phishing or credential reuse) can be leveraged to execute commands, potentially resulting in data breach, service disruption, and reputational damage.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.7%
Top 48% exploitable
Prevalence
Medium
popular commercial PHP CMS, moderate but non-ubiquitous web footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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