安全公告:CVE-2026-103645 QTextCodec 的 fromUnicode() 与 toUnicode() 整数溢出漏洞影响 Qt

💡 原文英文,约200词,阅读约需1分钟。
📝

内容提要

Qt 5/6 的 QTextCodec 转换函数存在整数溢出漏洞(CVE-2026-103645),仅影响启用 ICU 的构建。处理超大数据时可能陷入死循环,导致拒绝服务,CVSS 4.0 评分 1.1(低危)。影响 Qt 5.0.0 至 6.8.8、6.9.0 至 6.11.2。缓解方法是将转换分块,每块不超过 100 MB;建议更新至 Qt 6.8.9、6.11.3、6.12.0 或更高版本,或应用官方补丁。

🔎

延伸解读

影响范围与触发条件

该漏洞影响 Qt 5.0.0 至 6.8.8 以及 6.9.0 至 6.11.2 的版本,但仅当 Qt 编译时启用了 ICU 支持才会受影响。攻击者需要能够向应用提供超大数据,并触发 QTextCodec 的 fromUnicode() 或 toUnicode() 转换,才可能导致无限循环和拒绝服务。本地攻击向量和用户交互要求使得实际利用门槛较高。

风险评级与可用性影响

CVSS 4.0 评分为 1.1(低危),向量字符串显示攻击者需本地访问且需要用户交互,对机密性和完整性无影响,仅对可用性造成低影响。这意味着漏洞更可能被用于干扰服务而非窃取数据,但处理不可信大数据的应用仍需关注。

缓解与修复建议

在无法立即升级的情况下,可将转换操作分块进行,每块不超过 100 MB,并使用带 state 参数的 fromUnicode 重载。官方已提供补丁,建议升级至 Qt 6.8.9、6.11.3、6.12.0 或更高版本。对于使用 Qt 5 的项目,需确认是否启用 ICU 并评估升级路径。

❓

Q&A

CVE-2026-103645 影响哪些 Qt 版本?

影响 Qt 5.0.0 至 6.8.8,以及 Qt 6.9.0 至 6.11.2。Qt 5.0.0 之前的版本受影响状态未知。

这个漏洞在什么条件下才会触发?

仅当 Qt 编译时启用了 ICU 支持,并且处理非常大量的输入数据时,才可能触发整数溢出,导致应用程序进入无限循环并停止响应。

CVE-2026-103645 的危害等级和具体影响是什么?

CVSS 4.0 评分为 1.1(低危),影响可用性。处理超大数据时可能造成拒绝服务(应用无响应)。

如何临时缓解 CVE-2026-103645 漏洞?

将转换操作分块进行,每块不超过 100 MB,使用 QTextCodec::fromUnicode(const QChar *input, int number, QTextCodec::ConverterState *state = nullptr) 重载。

修复 CVE-2026-103645 应该升级到哪个 Qt 版本?

升级到 Qt 6.8.9、Qt 6.11.3、Qt 6.12.0 或更高版本。也可以应用官方提供的补丁。

这个漏洞涉及 Qt 的哪些模块和函数?

涉及 Qt 5 Core Compatibility APIs 模块(Qt 6)和 Qt Core 模块(Qt 5)中的 QTextCodec 类的 fromUnicode() 与 toUnicode() 函数。

🏷️

标签

➡️

继续阅读