GHSA-265m-7826-wjqm: Craft CMS: Authenticated RCE via `condition.config` JSON cleanse bypass
(updated )
Craft CMS has an authenticated remote code execution issue in the control panel element-search condition handling.
Craft cleans the outer request-controlled condition array with Component::cleanseConfig(), but Conditions::createCondition() later decodes and merges the JSON string in condition.config without re-running cleanseConfig() on the decoded/merged configuration.
Because condition.config is a JSON string during the first cleanse, Yii special config keys such as as … and on … can be hidden inside it. After JSON decoding, those keys reach FieldLayout object creation and are interpreted by Yii as behavior/event configuration.
The RCE is semi-blind: the trigger endpoint returns a normal JSON response, and the command output is verified via a server-side file-write side effect retrieved in a subsequent request.
References
- github.com/advisories/GHSA-265m-7826-wjqm
- github.com/craftcms/cms/commit/353b5d676c88a854c9f6409ad83b837ca0c0e8da
- github.com/craftcms/cms/commit/789789dc9e2a4e2f2562f51aaf879fb7757d8340
- github.com/craftcms/cms/releases/tag/4.18.2
- github.com/craftcms/cms/releases/tag/5.10.6
- github.com/craftcms/cms/security/advisories/GHSA-265m-7826-wjqm
- nvd.nist.gov/vuln/detail/CVE-2026-72778
- www.vulncheck.com/advisories/craft-cms-rc1-before-authenticated-rce-via-condition-config
Code Behaviors & Features
Detect and mitigate GHSA-265m-7826-wjqm with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →