Craft CMS Improper Authorization: Arbitrary Password Reset via Element Save
A flaw in Craft CMS lets any logged-in user silently reset their own password, and lets users with 'Edit users' permission reset any other user's password, including admins, without needing elevated…

The problem
The elements/save action accepts a newPassword field for User elements. The UserPasswordValidator rule for newPassword carried no on scenario restriction, making the field freely mass-assignable through the generic element save flow.
The dedicated users/set-password action, which enforces elevated session checks and current-password verification, is bypassed entirely. Any authenticated control-panel user can reset their own password. A user with the Edit users permission can reset any other user's password, including administrator accounts, escalating to full account takeover.
Proof of concept
A working proof-of-concept for this issue in craftcms/cms, with the exact payload below.
POST /index.php?p=actions/elements/save HTTP/1.1
Host: target.example.com
Content-Type: application/x-www-form-urlencoded
Cookie: CraftSessionId=<valid_session>
CSRF=<csrf_token>&elementType=craft%5Celements%5CUser&elementId=<target_user_id>&newPassword=Attacker123%21In Yii2, a model validator without an explicit on scenario applies to every scenario, including the default mass-assignment scenario used by elements/save. Because UserPasswordValidator had no scenario guard on the newPassword rule, posting newPassword to the element save endpoint was silently accepted and persisted.
The patch (commit cbdf45fbd3ab548b147d7de375f6f6f580b7c294) adds an on scenario restriction so the newPassword validator only fires during the dedicated password-change scenario, which requires an elevated session. This removes newPassword from the mass-assignable attribute surface in the generic save flow.
The root cause maps to CWE-285 (Improper Authorization) and is a textbook mass-assignment / missing access control check.
The fix
Upgrade Craft CMS to version 5.10.8 or later. No configuration workaround exists for earlier releases. After upgrading, review control-panel user permissions and audit recent password-change activity for signs of exploitation.
Related research
- highCVE-2026-56382: Craft CMS RCE via Yii2 Event Handler Injection in FieldsController
- highCVE-2026-55794CVE-2026-55794: Craft CMS Authenticated RCE via Twig Injection in Referer Header
- highCVE-2026-55790CVE-2026-55790: Craft CMS DOM XSS via Poisoned GitHub Issue Title in CraftSupport Widget
- highCVE-2026-67434CVE-2026-67434: PHP_CodeSniffer OS Command Injection via Crafted Filename in Blame Reports