~ / search / GHSA-6mrr-q3pj-h53w

GHSA-6mrr-q3pj-h53w

Craft CMS: Unauthenticated Users Can Perform Restricted Project Config Sync Operations

Source: GitHub Advisory Database (reviewed) Moderate CVE-2026-33159

Packages

EcosystemPackageAffectedFixed in
Packagist craftcms/cms >= 5.0.0-RC1, < 5.9.14 5.9.14
Packagist craftcms/cms >= 4.0.0-RC1, < 4.17.8 4.17.8

Details

As written in the advisory (Markdown source, shown as plain text).

### Summary Guest users can access Config Sync updater `index`, obtain signed `data`, and execute state-changing Config Sync actions (`regenerate-yaml`, `apply-yaml-changes`) without authentication. ### Details `ConfigSyncController` extends `BaseUpdaterController`, and the base updater is anonymously accessible for control panel requests. `index` emits signed updater state (`data`), which can be reused by guests in subsequent requests. Sensitive actions that are reachable via this method are `actionApplyYamlChanges`, `actionRegenerateYaml`, `applyExternalChanges`, and `regenerateExternalConfig`. #### Reproduction steps 1. Guest POST to: http POST /admin/actions/config-sync/index 2. Extract data from returned JS state: Craft.updater = ... setState({"data":"<signedData>", ...}); 3. Reuse data as a guest: ``` POST /admin/actions/config-sync/regenerate-yaml data=<signedData>&<csrfParam>=<csrfToken> ``` or ``` POST /admin/actions/config-sync/apply-yaml-changes data=<signedData>&<csrfParam>=<csrfToken> ``` 4. Observe completed response and state/file changes. ### Impact Unauthenticated users can execute project configuration sync operations that should be restricted to trusted admin/deployment contexts. Depending on the pending YAML/config state, this can cause unauthorized config state transitions and a service integrity risk. ### Resources https://github.com/craftcms/cms/commit/7f0ead833f7

References

External links from the advisory. They lead to third-party sites.