GHSA-9p7c-v5x3-rfx8: Medium severity composer/craftcms/cms vulnerability

Published Aug 6, 2026
·
Updated

The reorder-sets action in Craft CMS’s GlobalsController is missing the requireAdmin() check that the adjacent save-set and delete-set actions both enforce. Any authenticated control panel user can POST to /actions/globals/reorder-sets and permanently reorder all global sets in the project config, regardless of whether they have admin access. The reordering is written through to the project config and persists across requests.

Description

GlobalsController exposes three administrative actions for managing global set structure. Two of them gate on admin status; the third does not.

Prerequisites

- A Craft CMS instance with at least two global sets and a non-admin control panel user account.

Impact

A non-admin control panel user can reorder all global sets. While this does not expose or modify content, reordering global sets modifies the project config -- a versioned artifact that is typically committed to source control and deployed across environments. An attacker can create noise in the project config history, trigger config-sync conflicts, or manipulate the display order seen by all editors in the admin panel. The same non-admin user cannot create or delete global sets because those actions correctly enforce requireAdmin().

Affected Software

2 affected componentsFixes available
composer/craftcms/cms>=5.0.0-RC1<5.10.3
5.10.3
composer/craftcms/cms>=4.0.0-RC1<4.18.1
4.18.1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade composer/craftcms/cms to a version that resolves this vulnerability.

    Fixed in 5.10.3
  2. Upgrade

    Upgrade composer/craftcms/cms to a version that resolves this vulnerability.

    Fixed in 4.18.1
  3. Configuration

    Add/enable the missing requireAdmin() authorization check in the GlobalsController `reorder-sets` action (the `/actions/globals/reorder-sets` endpoint) so that non-admin control panel users cannot permanently reorder all global sets.

    Craft CMS GlobalsController Require admin check for reorder-sets action = requireAdmin()

Event History

Aug 6, 2026
Advisory Published
via GitHub·08:55 PM
Data Sourced
via GitHub·08:55 PM
DescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203