Vulnerability GHSA-mpmw-f6h6-3g26

Medium Risk
MEDIUM RISK
CVSS Score: 4.3
Score Range: 4.0–6.9
Medium severity vulnerabilities (CVSS 4.0–6.9). Important issues that meaningfully reduce security confidence.
2 months ago
August 20, 2026 at 06:44 PM UTC
Winter: My Account preview exposes another backend user's profile by record ID
1.2.13 and v1.2.13
1.2.13 and v1.2.13

Summary

Winter: My Account preview exposes another backend user's profile by record ID

Details

Impact

Backend\Controllers\MyAccount, introduced in v1.2.13, declares an empty $requiredPermissions array so that any authenticated backend user can manage their own account. It implements the FormController behavior, which exposes three routable actions — create, update and preview — that each take a record id from the URL.

index() passes the authenticated user's own id to the behavior, but the inherited actions were left routable and formFindModelObject() was not scoped, so a caller-supplied id resolved against an unscoped Backend\Models\User query:

GET /backend/backend/myaccount/preview/{other_user_id}

preview disclosed the target user's first name, last name, login, email address and avatar; update was equally routable and additionally disclosed role, group membership, superuser flag and throttle state. Password controls render a mask, so no credential material was exposed. Backend user ids are sequential and trivially enumerated, and as these are GET actions no CSRF token is involved.

The behavior's AJAX handlers (create_onSave, update_onSave, update_onDelete) were also dispatchable on these routes, but cross-user writes were blocked by the Backend\Models\User authorization guards added in v1.2.13. The confirmed impact is unauthorized disclosure of backend user profile data.

To actively exploit this security issue, an attacker would need access to the Backend with a user account with any level of access.

Patches

MyAccount no longer exposes the generic record actions it never used as routes, and its form lookup is now pinned to the authenticated user:

  • protected $guarded = ['create', 'update', 'preview']; removes the inherited actions from routing. The guard has to be at the routing layer, as handler dispatch ({action}_{handler}) runs before the page action.
  • formExtendQuery() constrains every lookup made by the behavior to the current user's key.

This security issue has been fixed as of v1.2.14 (commit cdbc8f5a23db27f72ccec658a8e5769e6d9f6dcb).

Workarounds

There is no supported workaround other than upgrading. If you cannot upgrade immediately, you may apply the fix manually in modules/backend/controllers/MyAccount.php:

  1. Add protected $guarded = ['create', 'update', 'preview']; to the controller.
  2. Add a formExtendQuery() method that scopes the lookup to the current user:
public function formExtendQuery(\Winter\Storm\Database\Builder $query): void
{
    $query->whereKey($this->user->getKey());
}

References

Credit to Awwader ( @NRAwwad) for reporting the issue.

For more information

If you have any questions or comments about this advisory:

Related Vulnerabilities

Other vulnerabilities affecting the same packages

Medium Risk
2 months ago
Winter: Reflected XSS through the search query parameter in the backend Table widget
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-hq84-x37p-j6q5
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-hq84-x37p-j6q5
Medium Risk
2 months ago
Winter: CSRF through AJAX handler names reachable as backend page actions
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-p2ch-c2c3-4xm5
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-p2ch-c2c3-4xm5
Medium Risk
2 months ago
Winter: Stored XSS through cached Brand Settings and Editor Settings custom styles
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-5cwr-5jxg-pcf6
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-5cwr-5jxg-pcf6
High Risk
2 months ago
Winter: ImportExportController AJAX handlers bypass granular import/export permission gate
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-fm29-4mq3-phg6
v1.0.473 and v1.0.474 and v1.0.475 and v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-fm29-4mq3-phg6
Low Risk
2 months ago
Winter: Stored XSS through Backend List widget image columns
v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-7mpf-4465-7fc2
v1.1.2 and v1.1.3 and v1.1.4 and v1.1.5 and v1.1.6 and v1.1.7 and v1.1.8 and v1.1.9 and v1.1.10 and v1.1.11 and v1.2.0 and v1.2.1 and v1.2.2 and v1.2.3 and v1.2.4 and v1.2.5 and v1.2.6 and v1.2.7 and v1.2.8 and v1.2.9 and v1.2.10 and v1.2.11 and v1.2.12 and v1.2.13 GHSA-7mpf-4465-7fc2
View all vulnerabilities for these packages

Impacted packages

Timeline

Published
2 months ago
August 20, 2026 at 06:44 PM UTC
Fixed (1.2.14)
2 months ago
August 19, 2026 at 09:55 PM UTC
Last Modified
1 day ago
November 10, 2026 at 08:15 PM UTC