安全公告:CVE-2026-11573 QDomDocument::toByteArray()解析SVG文件时崩溃
内容提要
Qt XML模块存在CWE-674无限制递归漏洞(CVE-2026-11573),影响Qt 6.7.0至6.8.1版本。恶意构造的深层嵌套XML或SVG文档在序列化时耗尽调用栈,导致拒绝服务崩溃,不影响数据安全。建议升级至6.8.2或6.9.0,或限制嵌套深度。
延伸解读
触发条件与影响范围
该漏洞仅在应用对不可信XML/SVG执行“解析后再序列化”操作时触发,解析本身不会崩溃。攻击者需诱导用户或应用处理恶意文档,且应用必须调用toByteArray()或save()。影响限于拒绝服务,不涉及数据泄露或提权,CVSS评分7.1(高危)。
平台差异与缓解误区
不同工具链对嵌套深度的容忍度不同,Windows/MSVC约300层即可崩溃,其他平台可能需更多层,但均受影响。仅增大线程栈并非修复,只能提高触发阈值,因为攻击者可无限增加嵌套深度。建议直接升级至6.8.2或6.9.0,或限制嵌套深度。
替代方案与临时防护
若无法立即升级,可验证并拒绝超过合理深度阈值的XML/SVG文档。避免对不可信文档进行DOM往返操作;若无需完整DOM树,可使用QXmlStreamReader/Writer,它们不构建递归树,从而规避此问题。
Q&A
CVE-2026-11573 影响哪些 Qt 版本?
该漏洞影响 Qt 6.7.0 至 6.8.1 版本。
CVE-2026-11573 是什么类型的漏洞?
这是一个无限制递归(CWE-674)漏洞,位于 Qt XML 模块的 QDomDocument 序列化路径中,可导致拒绝服务。
CVE-2026-11573 漏洞是如何被利用的?
攻击者通过提供深度嵌套的 XML 或 SVG 文档,当应用程序将其加载并序列化(如调用 toByteArray() 或 save())时,递归序列化会耗尽调用栈,导致程序崩溃。
CVE-2026-11573 漏洞有什么影响?
该漏洞仅导致拒绝服务(程序崩溃),不会造成数据泄露、数据损坏或权限提升,不影响机密性和完整性。
如何修复 CVE-2026-11573 漏洞?
升级到 Qt 6.8.2 或 Qt 6.9.0 或更高版本,这些版本已改为迭代序列化。
如果不能立即升级,有哪些临时缓解措施?
可以验证不受信任的 XML/SVG 内容的嵌套深度并拒绝过深的文档;避免对不受信任的文档进行解析后序列化;如果不需要完整 DOM 往返,可使用 QXmlStreamReader/QXmlStreamWriter。
CVE-2026-11573 的 CVSS 评分是多少?
CVSS 4.0 评分为 7.1(高危),向量为 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N。