
Nullzeiger-Dereferenzierung in MuPDF, erste von mir entdeckte CVE
Nullzeiger-Dereferenzierung in der EPUB-Rendering-Funktion von MuPDF 1.26.4
CVE-Referenz - CVE-2025-55780
Betroffene Versionen : 1.26.7 und früher sind betroffen
Gefunden und getestet auf : 1.26.4
Schweregrad CVSSv3-Score : 7.5 ( Hoch )
Behoben in Commit : https://cgit.ghostscript.com/cgi-bin/cgit.cgi/mupdf.git/commit/?id=bdd5d241748807378a78a622388e0312332513c5
Bugzilla : https://bugs.ghostscript.com/show_bug.cgi?id=708720
Absturzort :-
(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=????????
Behebung :- Behebung der NULL-Dereferenzierung im HTML-Layout.
Wenn wir einen einzelnen Flow-Node haben, der zu groß ist, um in die
verfügbare Breite zu passen, und wir den CSS-Stil "overflow-wrap:break-word"
verwenden, versuchen wir, den Flow-Node in kleinere Stücke zu zerlegen,
damit er schön umgebrochen werden kann.
Wir tun dies, indem wir den Text des Flow-Nodes durchgehen, um ihn in
Cluster zu zerlegen; wir wollen auf Cluster-Ebene und nicht auf Zeichenebene
brechen, um Probleme mit dem Shaping zu vermeiden.
Bei rechts-nach-links-Text kommen die Cluster in der entgegengesetzten
Reihenfolge als erwartet und die bestehende Logik funktioniert nicht richtig.
Dies kann dazu führen, dass der Splitting-Code tatsächlich nichts aufteilt,
was wiederum dazu führen kann, dass node->next NULL ist und wir versuchen,
NULL zu dereferenzieren.
Die Behebung besteht darin, für rechts-nach-links-Text anders aufzuteilen.
Während der Untersuchung wurde ein zusätzliches Problem festgestellt,
nämlich dass die Art und Weise, wie wir harfbuzz aufgerufen haben, dazu
führte, dass es die Cluster nicht wie erwartet gruppierte. Dementsprechend
erweitern wir den Code hier, sodass unser 'string_walker' harfbuzz im
'Graphem'-Cluster-Modus und nicht im 'Zeichen'-Cluster-Knoten aufrufen kann.
Mit diesem Ansatz aktualisieren wir dann den Code, um die zurückgegebenen
Fragmente der Zeichenkette zu durchlaufen und den Code an der richtigen
Position für den erforderlichen Platz zu unterbrechen, wobei darauf geachtet
wird, sowohl l2r- als auch r2l-Text korrekt zu behandeln.
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