<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VulnFeed.org: craftcms cms</title><link>https://vulnfeed.org/</link><description>Every disclosure, as it lands. Critical-only feed available.</description><language>en</language><atom:link href="https://vulnfeed.org/feed/product/craftcms-cms.xml" rel="self" type="application/rss+xml"/><item><title>CVE-2026-115935: Control panel only API response emulation replaces &quot;securityKey&quot; and reaches server RCE</title><link>https://vulnfeed.org/cve/CVE-2026-115935/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-115935/</guid><pubDate>Fri, 23 Oct 2026 22:16:59 +0000</pubDate><description>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.</description></item><item><title>CVE-2026-115938: Low privilege condition filter escapes Twig sandbox, recovers &quot;securityKey&quot; and reaches RCE</title><link>https://vulnfeed.org/cve/CVE-2026-115938/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-115938/</guid><pubDate>Fri, 23 Oct 2026 22:16:59 +0000</pubDate><description>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.</description></item></channel></rss>
