IPBUF安全漏洞报告
English
CVE-2025-11731 CVSS 3.1 低危

CVE-2025-11731:libxslt exsltFuncResultComp函数类型混淆漏洞

披露日期: 2025-10-14

漏洞信息

漏洞编号
CVE-2025-11731
漏洞类型
类型混淆(Type Confusion)/ 拒绝服务
CVSS评分
3.1 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
libxslt(GNOME libxslt库)

相关标签

CVE-2025-11731libxslt类型混淆拒绝服务XSLTEXSLTGNOMERed Hat内存安全低危漏洞

漏洞概述

CVE-2025-11731是libxslt库中的一个类型混淆漏洞,由Red Hat安全团队([email protected])于2025年10月14日披露。该漏洞存在于libxslt的exsltFuncResultComp()函数中,该函数负责在XSLT样式表解析过程中处理EXSLT扩展的<func:result>元素。

由于函数对节点类型的处理不当,在解析特定构造的XSLT样式表时,函数可能将XML文档节点(document node)错误地当作普通的XML元素节点(element node)进行处理,导致类型混淆。这种类型混淆会引发非预期的内存读取操作,可能导致应用程序崩溃。

该漏洞的CVSS 3.1评分为3.1分,严重等级为LOW。攻击者可以通过网络发送特制的XSLT样式表来触发该漏洞,需要用户交互(如打开恶意XSLT文件或访问包含恶意样式表的网页)。虽然利用难度较高,但成功利用可能导致应用程序不稳定或拒绝服务(DoS)。该漏洞主要影响使用libxslt进行XSLT处理的应用程序,包括各种XML处理工具、Web浏览器及服务端XML渲染引擎。

技术细节

该漏洞的核心问题在于libxslt的exsltFuncResultComp()函数在处理EXSLT <func:result>元素时缺乏对节点类型的严格验证。

在正常的XSLT处理流程中,XPath数据模型将节点分为多种类型,包括文档节点(document node)、元素节点(element node)、属性节点、文本节点等。exsltFuncResultComp()函数在编译阶段处理<func:result>子元素时,期望接收的是一个元素节点,但实际上可能接收到一个文档节点。

当函数将文档节点当作元素节点处理时,会直接访问文档节点特有的内部结构(如指向子节点的指针),但将其解释为元素节点的字段。由于文档节点和元素节点在内存布局上的差异,这种错误的类型解释会导致:
1. 读取无效或未初始化的内存区域
2. 触发断言失败或段错误(segfault)
3. 在某些情况下可能导致堆内存破坏

利用条件相对苛刻:攻击者需要构造一个包含特定<func:result>元素的XSLT样式表,其中嵌入的表达式返回文档节点而非元素节点。当目标应用程序使用受影响的libxslt版本解析该样式表时,漏洞被触发。

攻击链分析

STEP 1
步骤1:构造恶意XSLT样式表
攻击者创建一个包含特殊构造的<func:result>元素的XSLT样式表,使exsltFuncResultComp()函数在编译阶段接收到文档节点而非元素节点,触发类型混淆。
STEP 2
步骤2:投递恶意样式表
攻击者通过网络钓鱼、恶意网站或上传文件等方式,将恶意XSLT文件投递到目标系统。需要用户交互(如打开文件、访问网页)。
STEP 3
步骤3:触发样式表解析
当使用受影响libxslt版本的应用程序解析该XSLT样式表时,exsltFuncResultComp()函数执行类型混淆操作,访问错误的内存区域。
STEP 4
步骤4:导致拒绝服务
类型混淆导致非预期的内存读取,触发段错误或断言失败,使应用程序崩溃,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?xml version="1.0" encoding="UTF-8"?> <!-- CVE-2025-11731 PoC: Type confusion in exsltFuncResultComp() --> <!-- This XSLT stylesheet triggers type confusion by making func:result --> <!-- return a document node instead of an element node --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:func="http://exslt.org/functions" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="func exsl"> <func:function name="my:trigger"> <!-- func:result returns a document node (exsl:node-set result wrapped as document), which causes type confusion in exsltFuncResultComp() --> <func:result select="exsl:node-set(/*)" /> </func:function> <xsl:template match="/"> <root> <xsl:value-of select="my:trigger()" /> </root> </xsl:template> </xsl:stylesheet> <!-- Usage: Apply this stylesheet to any XML document using xsltproc or any application linked against vulnerable libxslt. Expected result: Crash (segfault) or unexpected memory read. -->

影响范围

libxslt < 1.1.43(待确认具体修复版本)

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制不可信来源的XSLT样式表执行,仅允许处理经过验证的样式表;2)在沙箱或受限环境中运行使用libxslt的应用程序,限制其对系统资源的访问;3)监控应用程序异常崩溃行为,及时发现潜在的攻击尝试;4)对用户上传的XSLT文件进行安全扫描,检测是否包含恶意的<func:result>元素构造。

参考链接

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