MuPDF 1.26.4 EPUB渲染函数中的空指针解引用
CVE参考 - CVE-2025-55780
受影响版本:1.26.7及之前版本受影响
发现并测试于:1.26.4
严重性 CVSSv3 评分:7.5(高)
Bugzilla:https://bugs.ghostscript.com/show_bug.cgi?id=708720
崩溃位置:-
(1a44.55c0): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
mupdf!break_word_for_overflow_wrap+0x243:
00007ff7`6dbf2a23 8b00 mov eax,dword ptr [rax] ds:00000000`00000000=????????
修复:- 修复HTML布局中的NULL解引用问题。
如果有一个单一的流节点太大,无法适应可用宽度,并且我们使用了
"overflow-wrap:break-word" CSS 样式,那么我们会尝试将该流节点
拆分成更小的片段,以便它能很好地换行。
我们通过遍历流节点文本并将其拆分为簇来实现此目的;
我们希望在簇级别而不是字符级别进行拆分,以避免
形状处理问题。
对于从右到左的文本,簇的顺序与预期相反,
现有的逻辑会出错。
这可能导致拆分代码实际上没有拆分任何内容,
进而导致 node->next 为 NULL,并且我们试图
解引用 NULL。
修复方法是针对从右到左的文本以不同方式进行拆分。
在调查此问题时,发现了另一个问题,即我们调用
harfbuzz 的方式导致它未能按预期将簇分组在一起。
因此,我们在此扩展代码,使我们的 'string_walker'
能够以 'grapheme'(字素)簇模式而非 'character'(字符)
簇模式调用 harfbuzz。
使用该模式,我们更新代码以遍历返回的字符串片段,
在所需空间的正确位置进行拆分,同时小心地正确处理
从左到右和从右到左的文本。
https://nvd.nist.gov/vuln/detail/CVE-2025-55780
https://www.tenable.com/cve/CVE-2025-55780
https://ubuntu.com/security/CVE-2025-55780
https://cvefeed.io/vuln/detail/CVE-2025-55780
https://osv.dev/vulnerability/UBUNTU-CVE-2025-55780
https://cve.akaoma.com/cve-2025-55780
https://vulners.com/cve/CVE-2025-55780
https://bugzilla.redhat.com/show_bug.cgi?id=2397702
https://github.com/advisories/GHSA-756h-grq9-2jvh
https://www.tenable.com/plugins/nessus/266050
https://security-tracker.debian.org/tracker/CVE-2025-55780
https://access.redhat.com/security/cve/cve-2025-55780
https://www.wiz.io/vulnerability-database/cve/cve-2025-55780
https://security.snyk.io/vuln/SNYK-UNMANAGED-MUPDF-13058631
https://feedly.com/cve/CVE-2025-55780
https://vulners.com/cve/CVE-2025-55780
https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-55780&sortby=bydate