CVE-2026-115935: Control panel only API response emulation replaces "securityKey" and reaches server RCE
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 CRAFTSECURITYKEY 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.
Affected Software
Event History
Frequently Asked Questions
Which users can exploit this issue?
Any authenticated Craft control panel user with accessCp can exploit it; administrator privileges are not required.
What does an attacker need to achieve code execution?
The attacker needs control panel access and the ability to submit fake Craft API response headers to the process-api-response-headers action. They use newline characters in X-Craft-Plugin-Licenses to inject an attacker-known CRAFT_SECURITY_KEY, then forge a signed login redirect that invokes a Twig system() callback.
Is this the same issue as the earlier report involving the security key?
No. The earlier report obtained the existing key through a Twig sandbox bypass, while this issue replaces the key through fake API headers and CRLF injection. Fixing only one of those sources does not address the other.
Is a fixed release identified?
A reference to the Craft CMS 5.11.2 release is provided. The supplied data does not state the affected version range or explicitly confirm which versions are fixed.