IPBUF安全漏洞报告
English
CVE-2026-32870 CVSS 7.5 高危

CVE-2026-32870 Kirby CMS XML注入漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-32870
漏洞类型
XML注入
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Kirby CMS

相关标签

XML注入Kirby CMSCVE-2026-32870输入验证绕过

漏洞概述

Kirby CMS是一个开源内容管理系统,其Xml::value()方法在处理CDATA块时存在逻辑缺陷。在受影响版本中,该方法对CDATA的校验不够严格,允许包含合法CDATA块及外部恶意XML结构的特殊输入绕过安全检查。虽然Kirby核心未直接使用该函数,但若插件或站点代码利用其生成XML并发送给依赖特定Schema的解释器,攻击者可操纵XML结构,破坏系统完整性。官方已在4.9.0及5.4.0版本中修复此问题。

技术细节

漏洞源于Kirby的Xml::value()方法旨在避免对已是CDATA的内容进行二次转义。旧版本的校验机制仅检查输入是否包含CDATA标记,若存在则直接放行。攻击者可构造混合载荷,例如在CDATA块后附加恶意标签(如`<![CDATA[x]]><evil>data</evil>`)。当Xml::tag()或Xml::create()使用此输入时,恶意标签未被转义,直接嵌入生成的XML文档中。如果下游系统解析此XML,攻击者注入的结构将被执行,可能导致数据篡改或逻辑绕过。

攻击链分析

STEP 1
侦察
攻击者识别使用Kirby CMS构建的目标,并确认其使用了涉及Xml::value()的插件或自定义代码进行XML生成。
STEP 2
武器化
攻击者构造包含有效CDATA块和恶意XML标签的特制数据载荷,旨在绕过Kirby的输入过滤机制。
STEP 3
交付
通过Web表单或API接口,将精心构造的恶意载荷发送给应用程序,使其传递给易受攻击的XML处理函数。
STEP 4
利用
应用程序的Xml::value()方法错误地允许载荷通过,导致恶意标签被原样写入XML文档而未被转义。
STEP 5
影响
下游系统解析生成的恶意XML文档,执行注入的标签或逻辑,导致数据完整性受损或系统行为被篡改。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php // PoC for CVE-2026-32870: Kirby XML Injection // This script demonstrates bypassing the CDATA check to inject XML tags. require 'kirby/bootstrap.php'; // Input containing a valid CDATA block followed by a malicious tag $payload = "<![CDATA[ legitimate data ]]><injected>malicious_code</injected>"; // In vulnerable versions (< 4.9.0, < 5.4.0), Xml::create uses Xml::value // which fails to sanitize the tag outside the CDATA block. $maliciousXml = \Kirby\Toolkit\Xml::create('user_input', $payload); echo "Generated XML:\n"; echo $maliciousXml . "\n"; // Result: <user_input><![CDATA[ legitimate data ]]><injected>malicious_code</injected></user_input> // The <injected> tag is now part of the XML structure. ?>

影响范围

Kirby < 4.9.0
Kirby < 5.4.0

防御指南

临时缓解措施
如果无法立即升级,建议全面审计站点和插件代码,确保不直接使用未经净化的用户输入调用XML生成函数。在调用Kirby的Xml类之前,应实施自定义的输入清洗逻辑,移除或转义CDATA块之外的所有XML控制字符和标签结构,确保仅纯文本内容被处理。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表