본문으로 건너뛰기

Nitro PDF Pro Empty XFA Denial of Service Vulnerability

← Back to Advisories
CVE Number CVE-2025-66769
Vendor Nitro
Credit Abu

Description

Nitro PDF Pro 14.41.1.4에서, `/AcroForm` 내에 빈 `/XFA []` 배열이 포함된 특수하게 조작된 PDF 파일을 열 경우 즉시 크래시가 발생하는 서비스 거부 취약점이 존재합니다. 해당 파일에 실제 XFA 노드 트리가 존재하지 않음에도 불구하고, Nitro PDF Pro는 XFA 처리 루틴을 계속 수행하며 내부적으로 NULL 포인터를 역참조하게 됩니다. 이로 인해 사용자가 악의적인 PDF 파일을 열기만 해도 프로그램이 즉시 종료됩니다.

Details

문제는 /AcroForm/XFA []가 선언되어 있으나, 실제 XFA 콘텐츠가 전혀 없는 PDF를 처리하는 과정에서 발생합니다.

예를 들어 아래와 같은 구조가 포함된 PDF가 트리거가 될 수 있습니다.

pdf
4 0 obj
<<
/Fields [5 0 R]
/XFA []
>>
endobj

Nitro PDF Pro는 문서를 여는 과정에서 XFA 처리용 객체를 초기화한 뒤, 내부적으로 xdp:xdp, template 등의 루트 노드를 탐색합니다. 그러나 XFA 구조가 비어 있는 경우 첫 번째 탐색 결과가 0(NULL)이 되며, 이 NULL 포인터가 다음 탐색 과정에 그대로 전달됩니다.

취약한 흐름은 아래와 같이 단순화할 수 있습니다.

v14 = sub_1E8E60(a1 + 0x158, L"xdp:xdp");
v15 = sub_1E8E60(v14,        L"template");

이때 노드 탐색 함수는 전달받은 객체 포인터가 NULL인지 검증하지 않은 채 내부 멤버를 참조합니다.

__int64 sub_1E8E60(__int64 a1, const wchar_t *a2)
{
    if (!a2)
        return 0;

    a1_0x40 = *(_QWORD *)(a1 + 0x40);
    ...
}

결과적으로 a1 == 0인 상태에서 *(QWORD *)(a1 + 0x40)이 수행되며 Access Violation이 발생하고, Nitro PDF Pro는 문서를 여는 즉시 종료됩니다.

Timeline

2025-11-19 - Vulnerability reported to Vendor

2026-01-09 - Vendor Patch Release

2026-04-06 - Public Release