CVE-2025-14896CVE-2025-14896是发生在Kroki项目中Vega图表处理功能的高危安全漏洞。该漏洞源于Vega的convert()函数在safeMode安全模式启用时,对输入的spec变量(当其为数组类型时)的sanitization(安全消毒)处理不充分。攻击者可以利用这一缺陷,通过精心构造恶意的Vega图表规范(specification),使服务器向任意URL发送请求,包括本地文件系统路径如file://协议。这不仅可能导致敏感信息泄露(如读取本地文件内容),还可能造成服务器端请求伪造攻击,探测内网服务。需要注意的是,该漏洞的CVSS评分达到7.5,属于高危级别,CVSS向量显示攻击复杂度低、无需认证且无需用户交互即可利用。
该漏洞的核心问题在于Vega图表处理模块对输入验证的缺陷。当用户在Kroki中渲染Vega图表时,系统调用convert()函数将Vega规范转换为其他格式。在safeMode启用的情况下,代码应该对用户输入进行严格的sanitization处理,防止恶意请求。然而,当spec变量为数组类型时,sanitization逻辑存在绕过。攻击者可以通过构造包含特殊URL协议的Vega规范(如file:///etc/passwd或http://internal-service等),利用convert()函数的请求发送功能读取敏感文件或探测内网服务。漏洞的关键在于safeMode的检查未能覆盖数组类型的spec输入,导致恶意请求可以绕过安全限制直接发送到目标URL。修复方案需要确保safeMode对所有类型的spec输入(包括数组)都进行完整的安全验证。