Poppler
CVE-2025-52885
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted PDF to a Poppler-backed app
-
DeliveryParser builds StructTreeRoot refToParentMap with raw pointers
-
Exploitstd::vector resize reallocates and invalidates pointers
-
ExecutionUse-after-free write corrupts heap
-
ImpactAchieve code execution or denial of service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that a Poppler-based application (versions prior to 25.10.0) parse an attacker-supplied PDF whose structure-tree content drives StructTreeRoot's refToParentMap to store raw pointers into a std::vector and then triggers a reallocation (vector growth past capacity), invalidating those pointers for a subsequent write. Limiting factors: the attack vector is local (AV:L) - the malicious PDF must be processed on the target host via a viewer or utility such as Evince, Okular, or poppler-utils; no authentication is needed (PR:N); and the vendor marks exploitation unproven (E:U), so while memory corruption is reachable, deterministic control of the UAF-write for code execution is not demonstrated. Environments that never process untrusted PDFs are effectively not exposed. |
| Impact | Signals point to a real but non-urgent issue. The vendor CVSS 4.0 base score is 6.1 (Medium) with a LOCAL attack vector (AV:L) and high vulnerable-system impact (VC:H/VI:H/VA:H), and the vector explicitly carries E:U (Exploit Unproven). EPSS reinforces low near-term exploitation likelihood at 0.17% (6th percentile). There is no CISA KEV listing and no public exploit identified, so this is not confirmed as actively exploited. The key tension is high technical impact versus low exploitability: a use-after-free WRITE (CWE-416) in a C++ memory-management pattern is theoretically powerful (potential code execution), but it is reached only by processing an attacker-crafted PDF locally, and reliable weaponization of a vector-reallocation UAF-write is non-trivial. Note also that the attack vector is AV:L/UI:N: 'local' here means the crafted PDF is processed on the target host (e.g. a server-side converter/thumbnailer or desktop viewer) rather than delivered over a network service - verify how PDFs enter your environment before scoring remote risk. Net: patch on a routine cadence, prioritizing automated PDF-processing pipelines, but this does not warrant emergency response. |
| Exploit ScenarioDerived | An attacker crafts a PDF with a structure tree that causes Poppler's StructTreeRoot to grow its internal std::vector while refToParentMap still holds raw pointers into the old backing array; when the vector reallocates, those pointers dangle and a subsequent write corrupts freed heap memory. A victim application (a PDF viewer such as Evince/Okular, or an unattended converter using poppler-utils) parses the file and triggers the use-after-free, potentially leading to crash or code execution. No public exploit code is known and the vendor marks exploitation as unproven (E:U). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Use-after-free write in Poppler versions prior to 25.10.0 allows memory corruption when a crafted PDF causes StructTreeRoot's refToParentMap to keep raw pointers to std::vector elements that are invalidated by vector reallocation. The issue is local in practice because the malicious PDF must be parsed on the target by a Poppler-based viewer or utility, requires no authentication (PR:N), and the vendor marks exploitation as unproven (E:U); no public exploit identified at time of analysis and EPSS is low at 0.17% (6th percentile).
RemediationAI
Vendor-released patch: Poppler 25.10.0; upgrade to 25.10.0 or later and rebuild or update all downstream consumers, including Evince, Okular, poppler-utils, and applications linking Poppler, to use the fixed library. Refer to https://securitylab.github.com/advisories/GHSL-2025-042_poppler/ and https://gitlab.freedesktop.org/poppler/poppler/-/merge_requests/1884, and apply updated Poppler packages from Linux distributions where available. If immediate upgrade is not possible, avoid processing untrusted PDFs with Poppler-based tools, disable automatic PDF preview or rendering in affected applications, and confine PDF parsing to a low-privilege sandbox or disposable VM; these measures reduce exposure but do not remove the memory-corruption bug and can disrupt document workflows.
Affected ProductsAI
Poppler library versions prior to 25.10.0 are affected, and version 25.10.0 contains the fix. Downstream applications that embed Poppler, including Evince, Okular, and poppler-utils, are exposed when they process attacker-supplied PDFs. No CPE strings were provided in the input data; consult the vendor advisory at https://securitylab.github.com/advisories/GHSL-2025-042_poppler/, the upstream merge request at https://gitlab.freedesktop.org/poppler/poppler/-/merge_requests/1884, and the OSS-security post at http://www.openwall.com/lists/oss-security/2025/10/13/2 for exact package and commit details.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Poppler is a PDF rendering and manipulation library used by Evince, Okular, poppler-utils, and other consumers. The bug is in StructTreeRoot, which uses refToParentMap to store raw pointers to elements held in a std::vector; when the vector grows and reallocates, those element addresses change, leaving dangling pointers that can be written through during later structure-tree processing. This is CWE-416, specifically a use-after-free write, and it is reachable when an application parses a crafted PDF's structure tree. The supplied CVSS 4.0 vector is AV:L/AC:L/AT:N/PR:N/UI:N with high C/I/A impact but E:U, and the independent assessment uses CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H; both describe a local, unauthenticated memory-corruption issue with unproven exploitation rather than a confirmed remote or actively exploited flaw.
Know when Poppler gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U
Triggered by local processing of a crafted PDF (AV:L) with no privileges or interaction in automated pipelines (PR:N/UI:N); a UAF-write plausibly yields high C/I/A.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
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.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Format string vulnerability in the extractPages function in utils/pdfseparate.cc in poppler before 0.24.3 allows remote
An exploitable integer overflow vulnerability exists in the JPEG 2000 image parsing functionality of freedesktop.org Pop
In Poppler 0.59.0, a NULL Pointer Dereference exists in the GfxImageColorMap::getGrayLine() function in GfxState.cc via
In Poppler through 0.76.1, there is a heap-based buffer over-read in JPXStream::init in JPEG2000Stream.cc via data with
An issue was discovered in Poppler 0.74.0. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n
An issue was discovered in Poppler 0.74.0. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n
An issue was discovered in Poppler 0.74.0. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n
A heap-based buffer underwrite exists in ImageStream::getLine() located at Stream.cc in Poppler 0.74.0 that can (for exa
Stack-based buffer overflow in the extractPages function in utils/pdfseparate.cc in poppler before 0.24.2 allows remote
In Poppler 0.59.0, a floating point exception exists in the isImageInterpolationRequired() function in Splash.cc via a c
In Poppler 0.59.0, a floating point exception occurs in Splash::scaleImageYuXd() in Splash.cc, which may lead to a poten
Poppler prior to and including 22.08.0 contains an integer overflow in the JBIG2 decoder (JBIG2Stream::readTextRegionSeg
NVD
CVE.org
EPSS
GitHub
Exploit-DB