{"affected":[{"defaultStatus":"unaffected","ecosystem":"https://packagist.org","packageName":"craftcms/cms","product":"cms","source":"CNA: Hackrate","vendor":"craftcms","versions":[{"lessThan":"5.11.2","status":"affected","version":"5.0.0","versionType":"semver"},{"lessThan":"4.18.9","status":"affected","version":"4.0.0","versionType":"semver"}]}],"cveId":"CVE-2026-115938","cwes":["CWE-1336"],"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.\n\n\n\nThe 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.\n\n\n\nAfter 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.","epss":{"date":"2026-11-02","percentile":0.30797,"score":0.00369},"exploits":[],"kev":null,"metrics":[{"score":8.7,"severity":"high","source":"CNA: Hackrate","vector":"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","version":"4.0"},{"score":8.8,"severity":"high","source":"CNA: Hackrate","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},{"score":8.7,"severity":"high","source":"NVD: 7004884b-51e2-48e8-b4a2-5ca29e80453e","vector":"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","version":"4.0"},{"score":8.8,"severity":"high","source":"NVD: 7004884b-51e2-48e8-b4a2-5ca29e80453e","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","version":"3.1"}],"modifiedAt":1793636249370,"publishedAt":1792792731816,"references":[{"source":"CNA: Hackrate","tags":["third-party-advisory","technical-description","mitigation"],"url":"https://www.hckrt.com/hacktivity/HCKRT-DRNL9W"},{"source":"CNA: Hackrate","tags":["release-notes"],"url":"https://github.com/craftcms/cms/releases/tag/5.11.2"},{"source":"CNA: Hackrate","tags":["product"],"url":"https://github.com/craftcms/cms"},{"source":"CNA: Hackrate","tags":["third-party-advisory"],"url":"https://github.com/craftcms/cms/security/advisories/GHSA-v4q3-2g5g-wjj6"},{"source":"7004884b-51e2-48e8-b4a2-5ca29e80453e","tags":[],"url":"https://github.com/craftcms/cms"},{"source":"7004884b-51e2-48e8-b4a2-5ca29e80453e","tags":[],"url":"https://github.com/craftcms/cms/releases/tag/5.11.2"},{"source":"7004884b-51e2-48e8-b4a2-5ca29e80453e","tags":[],"url":"https://github.com/craftcms/cms/security/advisories/GHSA-v4q3-2g5g-wjj6"},{"source":"7004884b-51e2-48e8-b4a2-5ca29e80453e","tags":[],"url":"https://www.hckrt.com/hacktivity/HCKRT-DRNL9W"}],"remediation":[],"revision":"bdbd8121c3b54896f8bcd23169f06e44f2590d495c1246df110483297bac3f09","sources":[{"modifiedAt":1793631783061,"name":"CNA: Hackrate","retrievedAt":1793635727973,"url":"https://www.cve.org/CVERecord?id=CVE-2026-115938"},{"modifiedAt":1793636249370,"name":"NVD","retrievedAt":1793643437283,"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115938"},{"modifiedAt":null,"name":"FIRST EPSS","retrievedAt":1793635738968,"url":"https://api.first.org/data/v1/epss?cve=CVE-2026-115938"}],"ssvc":{"assessedAt":1793631764482,"automatable":"no","exploitation":"none","source":"ADP: CISA-ADP","technicalImpact":"total"},"status":"published","title":"Low privilege condition filter escapes Twig sandbox, recovers \"securityKey\" and reaches RCE","updatedAt":1793643437283}