安全公告:CVE-2026-78253 QXmlStreamReader::readElementText() 中的拒绝服务(栈耗尽)漏洞影响 Qt
内容提要
Qt Core 的 QXmlStreamReader::readElementText() 存在栈耗尽拒绝服务漏洞(CVE-2026-78253),影响 Qt 5.0 至 6.8.8 及 6.9.0 至 6.11.1。解析深层嵌套 XML 可导致栈溢出崩溃,CVSS 评分为 2.3。建议限制嵌套层级,并升级至 Qt 6.8.9、6.11.2 或更高版本。
延伸解读
漏洞影响范围与版本覆盖
该漏洞影响 Qt 5.0 至 6.8.8 以及 6.9.0 至 6.11.1 的所有版本,时间跨度超过十年,意味着大量仍在使用旧版 Qt 的项目可能面临风险。开发者在评估自身项目时,需确认所用 Qt 版本是否落在受影响区间内,并注意即使输入规模不大,深层嵌套的 XML 也可能触发栈耗尽。
攻击向量与触发条件
攻击者可通过不可信来源(如 QML 中的 XMLHttpRequest 或 QNetworkAccessManager 获取的数据)向应用传递深层嵌套的 XML 文档。当 QXmlStreamReader::readElementText() 递归解析时,调用栈可能被耗尽,导致应用崩溃。CVSS 4.0 评分为 2.3(低危),但可用性影响为高,因此对依赖 XML 解析的服务仍需重视。
缓解措施与修复方案
在解析前统计并限制 XML 文档的嵌套层级,可有效缓解栈耗尽风险。官方已发布补丁,建议升级至 Qt 6.8.9、6.11.2 或更高版本。对于无法立即升级的项目,可参考针对 Qt 6.8、6.10、6.11 等分支的补丁链接进行手动修复,或实施输入验证以降低攻击面。
Q&A
CVE-2026-78253 是什么漏洞?
CVE-2026-78253 是 Qt Core 中 QXmlStreamReader::readElementText() 函数的一个拒绝服务(栈耗尽)漏洞。当解析深层嵌套的 XML 文档时,递归解析会耗尽调用栈,导致应用程序崩溃。
哪些 Qt 版本受到 CVE-2026-78253 的影响?
受影响的版本包括 Qt 5.0 至 Qt 6.8.8,以及 Qt 6.9.0 至 Qt 6.11.1。
CVE-2026-78253 的严重程度如何?
该漏洞的 CVSS 4.0 评分为 2.3,属于低严重性(Low)。
如何缓解 CVE-2026-78253 漏洞?
在解析 XML 文档之前,统计并限制其嵌套层级,避免过深的嵌套导致栈耗尽。
CVE-2026-78253 的修复方案是什么?
应用官方补丁,或升级到 Qt 6.8.9、Qt 6.11.2 或更高版本。
攻击者如何利用 CVE-2026-78253 漏洞?
攻击者可以通过提供深层嵌套的 XML 文档(例如通过 QML 中的 XMLHttpRequest 或使用 QNetworkAccessManager 获取的数据)来触发漏洞,导致应用程序崩溃。