CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-P2CH-C2C3-4XM5

GHSA-P2CH-C2C3-4XM5: Cross-Site Request Forgery in Winter CMS AJAX Routing

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 21, 2026·4 min read·1 visit

Executive Summary (TL;DR)

An administrative routing bypass in Winter CMS allows attackers to execute highly privileged AJAX handlers via standard HTTP GET requests through cross-site request forgery, leading to unauthorized state-changing operations.

Winter CMS contains a routing bypass vulnerability that allows Cross-Site Request Forgery (CSRF) attacks to trigger administrative AJAX handlers. Due to case-insensitivity in PHP's method resolution and an insufficiently strict check in the backend controller system, an attacker can invoke these handler methods through lowercase HTTP GET requests, bypassing default CSRF token validation.

Vulnerability Overview

Winter CMS is an open-source, extensible content management system built on the Laravel framework.

The backend panel features an AJAX framework that facilitates asynchronous administrative actions. These actions are handled by specific controller methods, commonly referred to as AJAX handlers, which process administrative request payloads.

A routing mechanism flaw allows authenticated administrative AJAX handlers to be executed through standard HTTP GET requests. This route bypass exposes the application to cross-site request forgery attacks because the GET routing path bypasses the default CSRF protection middleware.

Because administrative users maintain broad permissions over layouts, database operations, and logs, the impact of unauthorized execution remains high.

Root Cause Analysis

The underlying vulnerability is located within the request-to-action routing engine of the Winter CMS backend controller class.

In PHP, method names are case-insensitive. When an administrator requests a path like /backend/system/eventlogs/index_onemptylog, the routing system verifies if the action exists in the controller using the actionExists verification method.

Because of PHP's case-insensitive method resolution, the lowercase URL string index_onemptylog successfully matches the mixed-case index_onEmptyLog method defined in the controller class.

Once matched, the framework dispatches the handler as a standard page action. Since standard HTTP GET requests do not trigger CSRF validation, the application processes the request and executes the administrative logic.

Code Analysis

The vulnerability is resolved by modifying the verification mechanism in the base controller class to strictly enforce matching casing for URL segments.

The original code relied on PHP's default reflection check, which implicitly ignores case differences. The following patch was introduced to compare the declared case of the method with the requested action name:

// In modules/backend/classes/Controller.php
if ($ownMethod) {
    $methodInfo = new \ReflectionMethod($this, $name);
 
    /*
     * Only allow lowercase actions. Compare the resolved method name rather than the
     * requested one - PHP method names are case-insensitive, so a lowercased URL
     * segment would otherwise pass this check and still resolve to the mixed-case
     * method (eg. "index_onemptylog" reaching index_onEmptyLog()).
     */
    if (strtolower($methodInfo->getName()) !== $methodInfo->getName()) {
        return false;
    }
 
    $public = $methodInfo->isPublic();
    if ($public) {
        return true;
    }
}

Additionally, the framework modified the parser function in BackendController.php to prevent camel-case conversion of dashed URL parameters during normalization:

// In modules/backend/classes/BackendController.php
protected function parseAction($actionName)
{
    if (strpos($actionName, '-') !== false) {
        return snake_case(camel_case($actionName));
    }
 
    return $actionName;
}

Exploitation

An attack requires an active administrator session and user interaction with a malicious link or embedded asset.

To perform the attack, an adversary constructs a URL targeting a sensitive AJAX handler, such as index_onEmptyLog inside the EventLogs controller, using its lowercased equivalent: index_onemptylog.

The adversary embeds this target URL within a malicious page or document. When the logged-in administrator visits the page, the browser automatically executes an authenticated GET request.

Because the request uses the GET method, CSRF defense mechanisms are not invoked. The application routes the call to the targeted handler, executing administrative functions without consent.

Impact Assessment

Successful exploitation allows cross-site request forgery attacks to execute arbitrary, highly privileged operations.

Attackers can achieve unauthorized data modifications such as deleting content management templates, truncating crucial logs, or disabling critical system settings.

The unofficial CVSS version 3.1 score is evaluated at 8.8 (High). This reflects the high impact on integrity and availability, combined with the requirement for user interaction.

Remediation and Detection

Administrators must upgrade Winter CMS installations to version 1.2.14 or later immediately.

To update the dependency via composer, execute composer update wintercms/winter.

Detection of exploitation attempts can be achieved by monitoring web access logs for GET requests containing strings such as index_on or other common handler suffixes.

A Web Application Firewall (WAF) rule can be configured to block GET requests matching known AJAX handler signatures on the backend paths.

Technical Appendix

CVSS Score
8.8/ 10

Affected Systems

Winter CMS installations running versions prior to v1.2.14
AttributeDetail
CWE IDCWE-352, CWE-178, CWE-862
Attack VectorNetwork (Remote)
CVSS v3.1 Score8.8
Exploit Statuspoc
KEV Statusnone

More Reports

•11 minutes ago•GHSA-5CWR-5JXG-PCF6
8.4

GHSA-5CWR-5JXG-PCF6: Stored Cross-Site Scripting via Improper Cache Sanitization in Winter CMS Custom Styles

Winter CMS versions prior to 1.2.14 are vulnerable to Stored Cross-Site Scripting (XSS) within the administrative backend interface. The flaw resides in the custom styles rendering pipeline for Brand Settings and Editor Settings. An attacker with privileges to modify backend branding or editor configurations can inject arbitrary JavaScript, which is written to the cache without sanitization. Subsequent page requests that result in a cache hit completely bypass output sanitization filters, leading to JavaScript execution in the sessions of other administrative users.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 2 hours ago•GHSA-HQ84-X37P-J6Q5
6.1

GHSA-HQ84-X37P-J6Q5: Reflected Cross-Site Scripting in Winter CMS Backend Table Widget

A reflected Cross-Site Scripting (XSS) vulnerability exists in the backend Table widget of Winter CMS. The vulnerability is located within the search input template partial, where the application retrieves raw user inputs from the query parameters and renders them directly inside a raw-text script container without sanitization. An attacker can exploit this behavior by passing a crafted tag containing raw-text terminators, leading to code execution in the context of the victim's session.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 3 hours ago•GHSA-92HV-J533-69WC
3.7

GHSA-92HV-J533-69WC: Information Disclosure via ETag Conditional Matching in Wagtail CMS

An information disclosure vulnerability in the document serving subsystem of Wagtail CMS allows unauthorized users to verify if private documents match guessed SHA-1 hashes due to improper order of authentication checks.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 4 hours ago•GHSA-C2XX-CJMH-9Q8F
5.3

GHSA-C2XX-CJMH-9Q8F: Information Disclosure via Inherited Collection View Restriction Bypass in Wagtail API v2

An improper access control vulnerability in Wagtail's Documents and Images API V2 allows unauthenticated remote attackers to retrieve metadata (including titles and filenames) of files residing inside descendant collections of private parent collections, bypassing inherited view restrictions.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 5 hours ago•GHSA-X5CX-W6P2-MXF2
6.5

GHSA-X5CX-W6P2-MXF2: Improper Permission Handling in Wagtail Snippet Copy Functionality

An authorization bypass vulnerability in Wagtail CMS allows authenticated users with snippet creation privileges ('add') to access and view the contents of restricted snippet instances for which they lack viewing or editing permissions. By invoking the copy endpoint, the application pre-populates form data with the properties of the source snippet, exposing sensitive information to unauthorized users.

Alon Barad
Alon Barad
4 views•6 min read
•about 10 hours ago•GHSA-JM5P-837G-RV8G
6.5

GHSA-JM5P-837G-RV8G: Insecure Direct Object Reference (IDOR) in Wagtail Page Translation Endpoint

An authenticated user with global translation permissions can exploit a missing authorization check on the page translation endpoint in Wagtail CMS. This allows the attacker to copy and view pages they do not have explicit edit or explore access to.

Alon Barad
Alon Barad
4 views•7 min read