CVE-2026-35445: CSRF
Impact
Affected versions of Winter CMS did not validate the handler name submitted through the form postback mechanism (handler POST field) in the same way as AJAX requests (XWINTERREQUESTHANDLER header). The AJAX path validates that handler names match the on[A-Z][\w+] pattern, but the postback path passed the handler name directly to the handler dispatcher with no validation.
This allowed an authenticated backend user to call any method on a controller — including action-prefixed, protected, and private methods — by submitting a crafted POST request with a handler field, as long as the controller either:
- Contains a publicly available action via the $publicActions property, or - Degrades or removes the $requiredPermissions check in its constructor based on a condition
The backend's own Users controller was affected by the second scenario: it set $requiredPermissions to null for the myaccount action, allowing any authenticated backend user to access the controller without the backend.manageusers permission. Combined with the postback bypass, this allowed calling controller methods such as updateonDelete, updateonRestore, updateonUnsuspendUser, and updateonManualPasswordReset with attacker-controlled parameters.
Note that CSRF tokens are still verified on all POST requests, so the attacker must be logged into the backend with a valid session.
To actively exploit this security issue, an attacker would need access to the Backend with a user account with any level of access.
The Winter CMS maintainers strongly recommend that all Winter CMS sites that have any reliance on the roles & permissions system to update immediately. Security fixes have been backported to all major versions of Winter (1.0, 1.1, and 1.2).
Patches
The postback handler path now validates handler names using the same rules as the AJAX path. The My Account functionality has been moved to a dedicated controller that does not expose user management methods. Defence in depth has been applied at the model level to prevent unauthorized user record modifications regardless of the entry point.
This security issue has been fixed as of v1.2.13.
Workarounds
If users cannot upgrade, they may apply the following changes to their Winter CMS installation manually to resolve this issue:
1. In modules/backend/classes/Controller.php, validate the handler POST field against the on[A-Z][\w+] pattern before passing it to runAjaxHandler(). 2. In modules/backend/controllers/Users.php, remove the conditional that sets $requiredPermissions to null for the myaccount action.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
composer/winter/wn-backend-moduleto a version that resolves this vulnerability.Fixed in 1.2.13 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 1.2.13 - Configuration
In modules/backend/classes/Controller.php, validate the `_handler` POST field against the `on[A-Z][\w+]*` pattern before passing it to `runAjaxHandler()`.
Winter CMS backend Controller (modules/backend/classes/Controller.php) _handler POST field validation = Validate _handler against the pattern on[A-Z][\w+]* before passing it to runAjaxHandler() - Configuration
In modules/backend/controllers/Users.php, remove the conditional that sets `$requiredPermissions` to `null` for the `myaccount` action (so access requires the intended `backend.manage_users` permission).
Winter CMS backend Users controller (modules/backend/controllers/Users.php) $requiredPermissions for myaccount action = Remove conditional that sets $requiredPermissions to null for the myaccount action
Event History
Frequently Asked Questions
What is the severity of CVE-2026-35445?
CVE-2026-35445 has a risk score of 65, indicating a medium severity vulnerability.
How do I fix CVE-2026-35445?
To fix CVE-2026-35445, ensure that the handler names validated through the form postback mechanism match the pattern required for AJAX requests.
Which versions of Winter CMS are affected by CVE-2026-35445?
CVE-2026-35445 affects versions of Winter CMS that do not validate the `_handler` POST field properly.
What type of vulnerability is CVE-2026-35445 classified as?
CVE-2026-35445 is classified as a Cross-Site Request Forgery (CSRF) vulnerability.
Where can I find more information about CVE-2026-35445?
Further information regarding CVE-2026-35445 can be found on the GitHub advisories related to Winter CMS.