CVE-2026-23643

Let Them Eat XSS: Breaking CakePHP's PaginatorHelper

Alon Barad
Alon Barad
Software Engineer

Jan 16, 2026·5 min read·10 visits

Executive Summary (TL;DR)

CakePHP's `PaginatorHelper` tries to be helpful by automatically generating hidden form fields to preserve your current search filters when you change the page limit. Unfortunately, it trusted the parameter *names* (keys) too much. By injecting a payload into the URL query key, an attacker can break out of the HTML attribute and execute JavaScript. Fixed in 5.2.12 and 5.3.1.

A deep dive into a Reflected Cross-Site Scripting vulnerability in CakePHP's PaginatorHelper. By injecting malicious JavaScript into query parameter keys, attackers can exploit a flaw in how the framework preserves state during pagination, leading to arbitrary code execution in the victim's browser.

Fix Analysis (2)

Technical Appendix

CVSS Score
5.4/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N

Affected Systems

CakePHP Framework 5.2.x (before 5.2.12)CakePHP Framework 5.3.x (before 5.3.1)Applications using PaginatorHelper::limitControl()

Affected Versions Detail

Product
Affected Versions
Fixed Version
CakePHP
CakePHP
>= 5.2.10, < 5.2.125.2.12
CakePHP
CakePHP
>= 5.3.0, < 5.3.15.3.1
AttributeDetail
CWE IDCWE-79
Attack VectorNetwork (Reflected)
CVSS5.4 (Medium)
Bug ClassInput Validation Error
ComponentPaginatorHelper
Exploit StatusPoC Available
CWE-79
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

The software does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.

Vulnerability Timeline

Vulnerability reported by phpcss-ankue
2026-01-08
Initial hardening committed (Integer casting)
2026-01-12
Core XSS fix committed (Escaping)
2026-01-14
Advisory GHSA-qh8m-9qxx-53m5 published
2026-01-16

Subscribe to updates

Get the latest CVE analysis reports delivered to your inbox.