
Null Pointer Dereference в MuPDF , первое CVE, обнаруженное мной
Разыменование нулевого указателя в функции рендеринга EPUB MuPDF 1.26.4
CVE Reference - CVE-2025-55780
Затронутые версии : версия 1.26.7 и более ранние затронуты
Обнаружена и протестирована на : 1.26.4
Серьёзность CVSSv3 : 7.5 (Высокая)
Исправлено в коммите : https://cgit.ghostscript.com/cgi-bin/cgit.cgi/mupdf.git/commit/?id=bdd5d241748807378a78a622388e0312332513c5
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=????????
Исправление :- Исправление разыменования NULL в HTML-макете.
Если у нас есть один узел потока, который слишком велик, чтобы
поместиться в доступную ширину, и мы используем CSS-стиль
"overflow-wrap:break-word", то мы пытаемся разбить узел потока на
более мелкие части, чтобы он мог правильно переноситься.
Для этого мы проходим по тексту узла потока, разбивая его на
кластеры; мы хотим разбивать на уровне кластеров, а не на уровне
символов, чтобы избежать проблем с формированием.
Для текста справа налево кластеры идут в порядке, обратном
ожидаемому, и существующая логика работает неправильно.
Это может привести к тому, что код разбиения ничего не разбивает,
что в свою очередь может привести к тому, что node->next будет
NULL, и мы попытаемся разыменовать NULL.
Исправление заключается в ином разбиении для текста справа налево.
В ходе исследования была обнаружена дополнительная проблема: то,
как мы вызывали harfbuzz, означало, что он не группировал
кластеры так, как мы ожидали. Соответственно, мы расширяем код
здесь, чтобы наш 'string_walker' мог вызывать harfbuzz в
режиме кластеризации по графемам, а не по символам.
Используя это, мы обновляем код для прохода по возвращённым
фрагментам строки, разбивая код в правильной позиции для
требуемого пробела, с осторожностью, чтобы правильно
обрабатывать как текст l2r, так и r2l.
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