{"id":"CVE-2026-31857","summary":"CraftCMS has an RCE vulnerability via relational conditionals in the control panel","details":"Craft is a content management system (CMS). Prior to 5.9.9 and 4.17.4, a Remote Code Execution vulnerability exists in the Craft CMS 5 conditions system. The BaseElementSelectConditionRule::getElementIds() method passes user-controlled string input through renderObjectTemplate() -- an unsandboxed Twig rendering function with escaping disabled. Any authenticated Control Panel user (including non-admin roles such as Author or Editor) can achieve full RCE by sending a crafted condition rule via standard element listing endpoints. This vulnerability requires no admin privileges, no special permissions beyond basic control panel access, and bypasses all production hardening settings (allowAdminChanges: false, devMode: false, enableTwigSandbox: true). Users should update to the patched 5.9.9 or 4.17.4 release to mitigate the issue.","aliases":["GHSA-fp5j-j7j4-mcxc"],"modified":"2026-08-12T03:51:24.231664087Z","published":"2026-03-11T17:30:29.092Z","database_specific":{"cwe_ids":["CWE-94"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31857.json","cna_assigner":"GitHub_M"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31857.json"},{"type":"ADVISORY","url":"https://github.com/craftcms/cms/security/advisories/GHSA-fp5j-j7j4-mcxc"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-31857"},{"type":"FIX","url":"https://github.com/craftcms/cms/commit/8d4903647dcfd31b8d40ed027e27082013347a80"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/craftcms/cms","events":[{"introduced":"e3456380bdf7b18a5bb4c47c2e61e62805960915"},{"fixed":"5020fa5be830af712694f9f8164599a1789cc094"},{"introduced":"856f45f2766b1a1df5db437b5cd3fe5cce896b5b"},{"fixed":"74eb5d3a9ffa935df1a4fc2b6ddb1042d9f8e582"},{"introduced":"982efcd14d7e93a1a54f0905b61f242de6b53d8a"},{"fixed":"8d4903647dcfd31b8d40ed027e27082013347a80"}],"database_specific":{"source":["CPE_RANGE","CPE_STRING","REFERENCES"],"cpe":["cpe:2.3:a:craftcms:craft_cms:*:*:*:*:*:*:*:*","cpe:2.3:a:craftcms:craft_cms:4.0.0:-:*:*:*:*:*:*","cpe:2.3:a:craftcms:craft_cms:4.0.0:rc1:*:*:*:*:*:*","cpe:2.3:a:craftcms:craft_cms:4.0.0:rc2:*:*:*:*:*:*","cpe:2.3:a:craftcms:craft_cms:4.0.0:rc3:*:*:*:*:*:*","cpe:2.3:a:craftcms:craft_cms:5.0.0:-:*:*:*:*:*:*","cpe:2.3:a:craftcms:craft_cms:5.0.0:rc1:*:*:*:*:*:*"],"extracted_events":[{"introduced":"4.0.0.1"},{"fixed":"4.17.4"},{"introduced":"5.0.1"},{"fixed":"5.9.9"},{"introduced":"4.0.0-NA"},{"last_affected":"4.0.0-NA"},{"introduced":"4.0.0-rc1"},{"last_affected":"4.0.0-rc1"},{"introduced":"4.0.0-rc2"},{"last_affected":"4.0.0-rc2"},{"introduced":"4.0.0-rc3"},{"last_affected":"4.0.0-rc3"},{"introduced":"5.0.0-NA"},{"last_affected":"5.0.0-NA"},{"introduced":"5.0.0-rc1"},{"last_affected":"5.0.0-rc1"}]}},{"type":"GIT","repo":"https://github.com/nystudio107/craft-seomatic","events":[{"introduced":"a31f7d211b52d55d274c66a291310ceec64c733f"},{"last_affected":"a31f7d211b52d55d274c66a291310ceec64c733f"}],"database_specific":{"source":"CPE_STRING","cpe":"cpe:2.3:a:craftcms:craft_cms:4.0.0:-:*:*:*:*:*:*","extracted_events":[{"introduced":"4.0.0-NA"},{"last_affected":"4.0.0-NA"}]}}],"versions":["4.0.0-NA","4.0.0-rc1","4.0.0-rc2","4.0.0-rc3","5.0.0-NA","5.0.0-rc1","4.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31857.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U"}]}