Skip to main content

Winter CMS EUVDEUVD-2026-66640

| CVE-2026-32593 MEDIUM
SQL Injection (CWE-89)
2026-08-12 https://github.com/wintercms/winter GHSA-m7jc-g4rc-jmvh
5.9
CVSS 3.1 · Vendor: https://github.com/wintercms/winter
Share

Severity by source

Vendor (https://github.com/wintercms/winter) PRIMARY
5.9 MEDIUM
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:N
vuln.today AI
5.9 MEDIUM

Network AJAX endpoint requires backend authentication (PR:L); AC:H reflects the mandatory non-default plugin configuration prerequisite for the vulnerable scope.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/wintercms/winter).

CVSS VectorVendor: https://github.com/wintercms/winter

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

Lifecycle Timeline

2
Source Code Evidence Fetched
Aug 12, 2026 - 15:23 vuln.today
Analysis Generated
Aug 12, 2026 - 15:23 vuln.today

DescriptionCVE.org

Impact

The Backend Filter widget (Backend\Widgets\Filter) is vulnerable to SQL injection through the numberrange scope type when the scope is configured with a conditions key. An authenticated backend user with access to a list view containing a vulnerable filter scope can inject arbitrary SQL via the filter's AJAX handler, potentially gaining read access to the full database contents.

To exploit this, an attacker must have a valid backend account with access to a list view where a third-party plugin has registered a numberrange filter scope using the conditions configuration key. No built-in Winter CMS backend views use this scope type and configuration combination, so a vanilla installation without plugins is not exploitable.

Patches

This issue has been fixed in Winter CMS v1.2.13.

Workarounds

If users cannot upgrade, they may apply commit https://github.com/wintercms/winter/commit/50713de95adf5298536d93f4d999652525d36d43 to your Winter CMS installation manually to resolve this issue.

AnalysisAI

SQL injection in Winter CMS Backend Filter widget (versions <= 1.2.12) allows authenticated backend users to read arbitrary database contents by submitting crafted AJAX requests to the numberrange filter scope handler. Exploitation requires a third-party plugin to have registered a numberrange filter scope with the conditions configuration key - no built-in Winter CMS views use this combination, making vanilla installations unexploitable. The fix is confirmed in v1.2.13 via GitHub Advisory GHSA-m7jc-g4rc-jmvh; no public exploit code or active exploitation has been identified at time of analysis.

Technical ContextAI

Winter CMS is a PHP/Laravel-based content management system. The vulnerable component is the Backend\Widgets\Filter class (Composer package winter/wn-backend-module). The numbersFromAjax() method - invoked by the filter's AJAX handler - failed to type-coerce or validate numeric range inputs before interpolating them into raw SQL conditions strings that accept :min and :max placeholders. This is a classic CWE-89 (Improper Neutralization of Special Elements in SQL Commands) failure: user-controlled string values were passed directly into SQL without parameterization or strict numeric validation. The commit diff confirms the fix adds strict numeric casting and rejects non-numeric input such as '9999 OR 1=1--', replacing unsafe string interpolation with parameterized bindings.

RemediationAI

Upgrade Winter CMS to v1.2.13, which is the vendor-confirmed patched release per GitHub Advisory GHSA-m7jc-g4rc-jmvh. For installations unable to upgrade immediately, apply the upstream fix manually from commit https://github.com/wintercms/winter/commit/50713de95adf5298536d93f4d999652525d36d43, which adds strict numeric validation to numbersFromAjax(). As a compensating control, audit installed third-party plugins and disable or remove any that register a numberrange filter scope using the conditions configuration key - this eliminates the vulnerable code path entirely without requiring a framework upgrade. Additionally, restricting backend access to the minimum necessary set of trusted users reduces the attack surface, since exploitation requires a valid backend account.

Share

EUVD-2026-66640 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy