Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
🐘
🐘 Packagist
Not in CISA KEV
LOW severity

GHSA-7mpf-4465-7fc2 — winter/wn-backend-module

LOWFix: wintercms/winter@0941c98

GHSA-7mpf-4465-7fc2 is a low-severity (CVSS 2) vulnerability in winter/wn-backend-module. A fix is available for winter/wn-backend-module — see the affected versions and patch details below.

Winter: Stored XSS through Backend List widget image columns

Published
Updated
Affected
1 pkg
Patched
1 / 1
Exploits
None indexed
Exploitation data as of Aug 20, 2026 · OSV.dev, FIRST.org (EPSS)

Real-World Exposure

1 pkg affected
🐘winter/wn-backend-module

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Packagist packages — download data is not available via public APIs for these ecosystems.

Description

Impact

Backend\Widgets\Lists::evalImageTypeValue() interpolated the resolved image URL into a single-quoted src attribute without escaping it. Where a list column of type image rendered an attacker-influenced value, that value could break out of the attribute and inject arbitrary attributes — including event handlers — into the backend list, executing in the session of whichever backend user viewed it.

Winter core ships no image list column, so a default installation is unaffected. Exploitation requires a plugin that renders attacker-influenced values through one.

The supported image sources are plugins, themes, the Media Library, the uploads directory, and Attach\File models; an arbitrary external URL is not among them. ImageResizer::filterGetUrl() returns the value it was given when it cannot resolve an image, however, so an unsupported value reached the attribute verbatim rather than being rejected.

As with previous issues of this kind the severity is limited: an attacker must already be able to store the value, and a backend user must then open the affected list. Note that validating a stored URL was not necessarily sufficient — a payload can survive filter_var($url, FILTER_VALIDATE_URL), since / is valid both in a URL path and after a quoted HTML attribute value.

Patches

evalImageTypeValue() now escapes the image URL, along with the width and height taken from the column configuration, before interpolating them into the tag.

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

Workarounds

Apply the commit above to modules/backend/widgets/Lists.php manually if you are unable to upgrade to v1.2.14.

References

Credit to Seungyeon Park (@sy460129) for reporting the issue.

For more information

If you have any questions or comments about this advisory:

Affected Packages

1 total 1 fixed
EcosystemPackageVulnerable rangeFix
🐘Packagistwinter/wn-backend-module≥ 1.1.0&&< 1.2.141.2.14composer require winter/wn-backend-module:^1.2.14

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for winter/wn-backend-module, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update winter/wn-backend-module to 1.2.14 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-7mpf-4465-7fc2 is resolved across your whole dependency graph.

  3. Workarounds

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

Frequently Asked Questions

### Impact `Backend\Widgets\Lists::evalImageTypeValue()` interpolated the resolved image URL into a single-quoted `src` attribute without escaping it. Where a list column of type [`image`](https://wintercms.com/docs/v1.2/docs/backend/lists#image) rendered an attacker-influenced value, that value could break out of the attribute and inject arbitrary attributes — including event handlers — into the backend list, executing in the session of whichever backend user viewed it. Winter core ships no `image` list column, so a default installation is unaffected. Exploitation requires a plugin that ren
O3 Security · Impact-Aware SCA

Is GHSA-7mpf-4465-7fc2 in your dependencies?

Find it across Packagist, including transitive dependencies.

GHSA-7mpf-4465-7fc2: Fixed in 1.2.14 (Low 2) | O3 Security