CVE-2025-12084CVE-2025-12084是Python标准库xml.dom.minidom中的一个拒绝服务漏洞。该漏洞存在于使用appendChild()等方法构建嵌套元素时,由于算法对_clear_id_cache()方法的依赖,导致时间复杂度达到O(n²)。攻击者可以通过构建过度嵌套的XML文档来触发此漏洞,当文档嵌套层级过深时,会导致CPU资源被大量消耗,从而影响系统的可用性。此漏洞无需认证即可利用,攻击向量为网络,CVSS评分为5.3,属于中等严重程度。xml.dom.minidom作为Python最常用的XML处理模块之一,被广泛应用于各种Python项目中,因此该漏洞的影响范围较广。建议受影响的用户及时更新Python版本或采取临时缓解措施。
该漏洞的根本原因在于xml.dom.minidom模块中_clear_id_cache()方法的实现方式。当使用appendChild()等方法向Document对象添加子节点时,代码会调用_clear_id_cache()来清除ID缓存。然而,这个缓存清除操作的时间复杂度为O(n),其中n为已添加的节点数量。由于每次添加节点时都会触发此操作,在添加n个节点时总时间复杂度达到O(n²)。具体来说,当构建深度为k的嵌套文档时,每个节点的添加操作都需要遍历并清除之前所有节点相关的缓存,导致性能呈二次方下降。攻击者可以通过构造一个具有大量嵌套层级的XML文档(如1000层以上的嵌套元素)来触发此漏洞。在实际测试中,深度为10000层的嵌套文档会导致明显的处理延迟和CPU占用率飙升。此漏洞影响所有使用xml.dom.minidom处理不可信XML数据的应用程序。