
MuPDF의 널 포인터 역참조, 나에 의해 발견된 첫 번째 CVE
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'가
'character' 클러스터 모드가 아닌 'grapheme' 클러스터
모드로 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