# CakePHP PaginatorHelper::limitControl() 反射型XSS漏洞
## 概述
CakePHP 的 `PaginatorHelper::limitControl()` 方法存在跨站脚本(XSS)漏洞,攻击者可通过操纵查询字符串参数触发。
## 影响版本
- 5.2.12 之前版本
- 5.3.1 之前版本
## 细节
漏洞位于 `PaginatorHelper::limitControl()` 方法,未正确过滤或转义用户提供的查询字符串参数,导致恶意脚本可被注入并执行。
## 影响
攻击者可利用该漏洞在受影响的应用中实施跨站脚本攻击,窃取会话信息或执行恶意操作。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Possible XSS in Paginator Helper (limitControl() method) · Issue #19172 · cakephp/cakephp -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 关键信息总结
- **问题描述**:
- 在使用 `PaginatorHelper::limitControl()` 方法时,未对查询参数进行转义处理,可能导致跨站脚本(XSS)攻击。
- 示例 URL: `?limit=100&g2znn"><script>alert(1)</script>`
- **受影响的版本和环境**:
- CakePHP 版本: 5.2.10
- PHP 版本: 8.4.16
- **修复措施**:
- 将 `limit` 查询参数转换为整数,防止注入攻击。
- 修复 HTML 逃脱问题,避免潜在的 XSS 风险。
- **讨论要点**:
- 初始报告者描述了在使用 `limitControl()` 时如何通过恶意构造的查询参数注入 JavaScript 代码。
- 开发者确认问题并讨论了不同版本中的修复情况。
- 讨论中提到的其他相关议题(如#19178)涉及对查询字符串的清理。
- **当前状态**:
- 问题已被修复并合入相关分支,将在下一个补丁版本中发布。
- 关于防止查询参数注入至隐藏域的问题,正在积极探讨更佳的解决方案。
标题: Release CakePHP 5.3.1 released · cakephp/cakephp · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息
- **漏洞类型**: 安全问题集中在 `PaginatorHelper`。
- **修复内容**:
- 修复了由请求查询字符串数据生成的未转义HTML的输出问题。
- 修复了插件模板路径。
- **版本**: CakePHP 5.3.1,这是一个5.3分支的维护版本,解决了社区报告的问题、回归问题和一个安全问题。
- **发布时间**: 5天前由 `markstory` 发布。
- **其他**: 文档中有更改日志,列出了每个提交的详细更改。
标题: Release CakePHP 5.2.12 released · cakephp/cakephp · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息
- **版本**: CakePHP 5.2.12
- **发布日期**: 5天前
- **漏洞类型**: 安全修复
- **受影响的组件**: PaginatorHelper::limitControl()
- **修复内容**:
- 固定输出未转义的HTML生成问题,该问题来源于请求查询字符串数据。
- **影响范围**: 所有使用PaginatorHelper::limitControl()且版本>=5.2.10的应用程序。
- **贡献者**: Mark Story, phpcss-ankue
标题: CakePHP 5.2.12 Released — Bakery -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
**关键信息汇总**
- **发布版本**: CakePHP 5.2.12
- **发布日期**: 2026年1月14日
- **发布类型**: 安全修复版
- **修复内容**: 修复了与PaginatorHelper::limitControl()相关的安全问题,影响版本>= 5.2.10
- **推荐升级**: 所有使用受此安全问题影响的PaginatorHelper::limitControl()的应用程序应升级到此版本
- **不受影响版本**: 早于5.2.10的版本
- **其他修复**: 修复了输出未转义的HTML,这些HTML由请求查询字符串数据生成
- **贡献者**: Mark Story, phpcss-ankue
标题: PaginatorHelper::limitControl() vulnerable to reflected cross-site-scripting · Advisory · cakephp/cakephp · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
## 关键漏洞信息
### 漏洞类型
- 反射型跨站脚本(Reflected Cross-Site Scripting)
### 漏洞详情
- **受影响版本**: `<5.2.12, >=5.2.10`, `5.3.0`
- **修复版本**: `5.2.12`, `5.3.1`
- **CVE ID**: CVE-2026-23643
- **CWE ID**: CWE-79
### 漏洞描述
PaginatorHelper::limitControl() 方法由于查询字符串参数可被操控而存在跨站脚本漏洞。
### 影响
通过该漏洞,攻击者可能利用查询字符串参数进行跨站脚本攻击。
### 解决方案
- **修复版本**: 已在 `5.2.12` 和 `5.3.1` 中修复此问题。
- **变通方法**: 若无法立即升级,请避免使用 `PaginatorHelper::limitControl()` 方法,直至完成升级。
### 其他信息
- **CVSS v3 基本指标**
- 严重性: 中等 (5.4/10)
- 攻击向量: 网络
- 攻击复杂度: 低
- 所需权限: 无
- 用户交互: 需要
- 作用范围: 不变
- 机密性: 低
- 完整性: 低
- 可用性: 无
- **发现和缓解贡献者**
- 发现者: phpcss-ankue
- 缓解开发者: markstory
标题: Fix missing HTML escaping in PaginatorHelper · cakephp/cakephp@c842e7f · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键漏洞信息
- **漏洞描述**:PaginatorHelper::limitControl() 方法中存在 HTML 转义问题,导致输入属性名没有正确编码,可能引发跨站脚本 (XSS) 攻击。
- **修复提交**:c842e7f
- **修复细节**:在 `generateHiddenFields` 方法中,对 `$fieldName` 增加了 HTML 转义(使用 `h()` 方法),以防止恶意输入直接嵌入到 HTML 中。
- **相关测试用例**:新增了 `testLimitControlUrlWithQueryEscaping` 测试用例,确保 `limitControl` 方法能正确处理 URL 查询参数并对其进行转义。
- **修复版本**:5.3.1 和 5.x
- **关联问题**:#19172 和 #19182
暂无评论