🇰🇷 한글 설명
Poppler 라이브러리의 StructTreeRoot 클래스에서 Use-After-Free(write) 취약점이 발견되었습니다. std::vector의 요소에 대한 원시 포인터를 사용할 때, 벡터의 크기가 재할당되면서 기존 포인터가 무효화되어 발생하는 문제입니다. 25.10.0 미만 버전의 Poppler가 이 취약점에 노출됩니다.
💡 쉬운 설명
PDF를 읽어들이는 프로그램 내부에서 데이터 저장 공간이 늘어날 때, 기존에 가리키던 주소를 잘못 참조하여 발생하는 오류입니다. 이로 인해 프로그램이 갑자기 종료되거나 해커가 악성 코드를 실행할 위험이 있습니다.
🇺🇸 원문 (English)
Poppler ia a library for rendering PDF files, and examining or modifying their structure. A use-after-free (write) vulnerability has been detected in versions Poppler prior to 25.10.0 within the StructTreeRoot class. The issue arises from the use of raw pointers to elements of a `std::vector`, which can lead to dangling pointers when the vector is resized. The vulnerability stems from the way that refToParentMap stores references to `std::vector` elements using raw pointers. These pointers may become invalid when the vector is resized. This vulnerability is a common security problem involving the use of raw pointers to `std::vectors`. Internally, `std::vector `stores its elements in a dynamically allocated array. When the array reaches its capacity and a new element is added, the vector reallocates a larger block of memory and moves all the existing elements to the new location. At this point if any pointers to elements are stored before a resize occurs, they become dangling pointers once the reallocation happens. Version 25.10.0 contains a patch for the issue.
📍 영향받는 시스템
Poppler versions prior to 25.10.0
⚔️ 공격 벡터
조작된 PDF 파일을 열어 StructTreeRoot 클래스의 메모리 재할당을 유도함으로써 발생
🛡️ 대응 방법
Poppler 라이브러리를 25.10.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 Poppler의 버전이 25.10.0 미만인지 확인하십시오.
dpkg -l | grep poppler-utils 2>/dev/null || rpm -qa | grep poppler 2>/dev/null