Kirby内容变更API权限检查缺失漏洞分析(CVE-2026-21896)
漏洞详情
包信息
- 包管理器: Composer
- 受影响包:
getkirby/cms - 受影响版本: >= 5.0.0, <= 5.2.1
- 已修复版本: 5.2.2
漏洞描述
概述
此漏洞影响所有配置了用户权限以阻止特定角色执行写入操作的Kirby站点,特别是通过禁用更新权限来阻止修改站点内容的配置。如果开发者没有配置任何偏离默认允许所有操作的权限,其站点则不受影响。
技术背景
Kirby允许限制特定用户角色的权限。该角色的用户只能执行被允许的操作。更新内容的权限已经存在,并且可以为每种模型类型进行配置,但这些权限在操作更改版本时未被Kirby的API后端代码强制执行。
更改版本是包含现有模型(页面、用户、文件或站点)未保存更改的内容版本。
影响范围
缺失的权限检查允许拥有面板访问权限的攻击者创建或丢弃更改版本,或更新现有更改版本中的内容字段。所有这些操作都可能影响任意模型。
具体影响包括:
-
恶意锁定攻击:攻击者可以为站点的所有模型创建更改版本,创建编辑锁,阻止其他经过身份验证的用户进行内容更改,直到清除这些锁。
-
恶意内容注入:攻击者可以恶意更新内容,例如添加诽谤或垃圾内容,或包含恶意链接或脚本。虽然这些更新后的内容不会立即发布到站点,但具有更新权限的粗心编辑者可能会无意中发布这些更改,认为已获得授权的用户进行了这些修改。
-
数据丢失风险:攻击者可以丢弃大量更改,导致编辑者失去其内容工作。
修复方案
补丁信息
该问题已在Kirby 5.2.2中得到修复。请更新到此版本或更高版本以修复此漏洞。
在提到的版本中,我们添加了对模型更新权限的检查,确保没有此权限的用户无法创建、编辑或丢弃相应模型的更改版本。
未来的Kirby版本将添加单独的编辑和保存权限,以便更精细地控制对模型内容的写入操作。
技术细节
漏洞根源
- CWE标识: CWE-863 - 不正确的授权
- 问题本质: 产品在参与者尝试访问资源或执行操作时执行授权检查,但未能正确执行检查。
CVSS评分
- 总体严重性: 中等 (5.8/10)
- CVSS v4向量:
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N
影响指标
- 攻击向量: 网络
- 攻击复杂度: 低
- 攻击要求: 存在
- 所需权限: 低
- 用户交互: 主动
- 完整性影响: 高
- 可用性影响: 低
参考信息
- GHSA标识: GHSA-4j78-4xrm-cr2f
- NVD条目: https://nvd.nist.gov/vuln/detail/CVE-2026-21896
- 修复提交: getkirby/kirby@f5ce134
- 发布说明: https://github.com/getkirby/kirby/releases/tag/5.2.2
致谢
感谢Lukas Kleinschmidt (@lukaskleinschmidt) 负责任地报告了已识别的问题。