Skip to main content

Poppler CVE-2025-52885

MEDIUM
Use After Free (CWE-416)
2025-10-10 security-advisories@github.com
6.1
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Deliver crafted PDF to a Poppler-backed app
  2. Delivery
    Parser builds StructTreeRoot refToParentMap with raw pointers
  3. Exploit
    std::vector resize reallocates and invalidates pointers
  4. Execution
    Use-after-free write corrupts heap
  5. Impact
    Achieve 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).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vendor (github) PRIMARY 6.1 MEDIUM
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
vuln.today AI 8.4 HIGH

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.

3.1 AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 6.6 MEDIUM

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

EPSS Score
0.2%
Top 94% exploitable
Prevalence
High
core PDF rendering library across Linux desktops, utilities, and server pipelines
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2013-4474 MEDIUM POC
5.0 Nov 23

Format string vulnerability in the extractPages function in utils/pdfseparate.cc in poppler before 0.24.3 allows remote

CVE-2017-2820 HIGH POC
8.8 Jul 12

An exploitable integer overflow vulnerability exists in the JPEG 2000 image parsing functionality of freedesktop.org Pop

CVE-2017-15565 HIGH POC
8.8 Oct 17

In Poppler 0.59.0, a NULL Pointer Dereference exists in the GfxImageColorMap::getGrayLine() function in GfxState.cc via

CVE-2019-12293 HIGH POC
8.8 May 23

In Poppler through 0.76.1, there is a heap-based buffer over-read in JPXStream::init in JPEG2000Stream.cc via data with

CVE-2019-10872 HIGH POC
8.8 Apr 05

An issue was discovered in Poppler 0.74.0. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n

CVE-2019-9545 HIGH POC
8.8 Mar 01

An issue was discovered in Poppler 0.74.0. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n

CVE-2019-9543 HIGH POC
8.8 Mar 01

An issue was discovered in Poppler 0.74.0. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n

CVE-2019-9200 HIGH POC
8.8 Feb 26

A heap-based buffer underwrite exists in ImageStream::getLine() located at Stream.cc in Poppler 0.74.0 that can (for exa

CVE-2013-4473 HIGH POC
7.5 Nov 23

Stack-based buffer overflow in the extractPages function in utils/pdfseparate.cc in poppler before 0.24.2 allows remote

CVE-2017-14518 HIGH POC
7.8 Sep 17

In Poppler 0.59.0, a floating point exception exists in the isImageInterpolationRequired() function in Splash.cc via a c

CVE-2017-14520 HIGH POC
7.8 Sep 17

In Poppler 0.59.0, a floating point exception occurs in Splash::scaleImageYuXd() in Splash.cc, which may lead to a poten

CVE-2022-38784 HIGH POC
7.8 Aug 30

Poppler prior to and including 22.08.0 contains an integer overflow in the JBIG2 decoder (JBIG2Stream::readTextRegionSeg

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy