CVE-2025-11731CVE-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版本解析该样式表时,漏洞被触发。