Skip to main content

GNOME libgxps EUVDEUVD-2026-102259

| CVE-2026-111132 MEDIUM
Out-of-bounds Read (CWE-125)
2026-10-15 VulnCheck GHSA-28f7-fxcp-c8vq
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft XPS with invalid Points arity
  2. Delivery
    Deliver document to victim
  3. Exploit
    Victim opens file in Evince/consumer
  4. Execution
    Trigger heap out-of-bounds read in path parser
  5. Impact
    Crash viewer or leak adjacent heap into output

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a victim to open or render an attacker-crafted XPS document in a libgxps-based consumer (e.g., Evince), where the PolyBezierSegment or PolyQuadraticBezierSegment Points attribute specifies a point count not divisible by three (quadratic/bezier arity mismatch), driving path_geometry_start_element() to read past the heap allocation. Limiting factors: it is a local, file-based attack (AV:L) that depends on user interaction (UI:P) - the user must choose to open the malicious file - and there is no privilege or authentication bypass and no code execution; realistic impact is a crash and limited disclosure of adjacent heap contents rendered into output, which constrains it well below remote unauthenticated severity.

Impact

The provided CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H) scores 6.9 (medium) and the signals are internally consistent: this is a local, low-complexity, unauthenticated flaw that nonetheless requires passive user interaction (UI:P) - the victim must open or render a crafted XPS document. The dominant impact is availability (VA:H, a crash of consumers like Evince) with only limited confidentiality exposure (VC:L, adjacent heap bytes rendered into output); there is no integrity impact. No EPSS score was supplied, so exploitation probability cannot be quantified, and the CVE is NOT in CISA KEV, so there is no evidence of active exploitation. A detailed technical write-up with a crafted-document reproduction is published on hackmd by the reporting researcher (VulnCheck), so public proof-of-concept material exists, but POC availability is distinct from active exploitation and should not be conflated. Net assessment: this is a genuine but moderate-priority client-side memory-safety bug - primarily a denial-of-service with a secondary information-leak - not a mass-exploitable remote threat. It warrants patching on systems that process untrusted XPS files, but is not an emergency relative to network-facing unauthenticated RCE. Note: EPSS data is missing and the fix/patch version is not provided in the input, which should be verified with the vendor.

Exploit ScenarioDerived

An attacker crafts a malicious XPS document whose PolyBezierSegment or PolyQuadraticBezierSegment Points attribute contains a point count not divisible by three (or two), then delivers it to a victim via email or download. When the victim opens the file in a libgxps-based consumer such as Evince, path_geometry_start_element() reads past the allocation, crashing the viewer or rendering adjacent heap memory into the output. A public technical write-up/PoC describing the crafted-document trigger is available from the reporter.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 15, 2026

Rendering a crafted XPS document drives GNOME libgxps through 0.3.2 (the renderer used by consumers such as Evince) into a heap out-of-bounds read inside path_geometry_start_element(), allowing an attacker to crash the consuming application and leak adjacent heap bytes into rendered output. The trigger is a PolyBezierSegment or PolyQuadraticBezierSegment Points attribute whose point count is not a multiple of three (bezier) or two (quadratic), so exploitation is limited to a local, file-based attack that requires the victim to open or render the malicious document via user interaction (CVSS 4.0 AV:L/UI:P, PR:N) with no authentication or privilege bypass, no code execution, and only low confidentiality impact alongside high availability impact. An independent assessment scores the flaw 6.9 (medium) using CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H, and no public exploit identified at time of analysis despite a public technical writeup documenting the arity mismatch; the affected range is captured by the wildcard CPE cpe:2.3:a:gnome:libgxps:*:*:*:*:*:*:*:*.

RemediationAI

No vendor-released patch identified at time of analysis; no fixed release version is cited in the advisory set, so remediation must be handled through compensating controls until upstream publishes a corrected libgxps build. The most direct fix is a source-level patch at the referenced locations in libgxps/gxps-path.c (upstream commit f5027ed09c767e8a02e652fbc77dcea79e19e10d, lines 776-785 and 832-848) that rejects or truncates PolyBezierSegment and PolyQuadraticBezierSegment Points arrays whose element count is not divisible by three or two respectively before any coordinate read, which downstream distributions can carry as a backport. Where patching is not immediately possible, block the attack path by preventing untrusted XPS content from reaching libgxps: convert or sanitize incoming XPS files with a hardened converter (or reject them outright), since the arity check must occur before rendering and sanitizing removes the malformed attribute entirely, at the cost of losing fidelity or support for legitimate XPS input. Alternatively, run XPS-consuming viewers such as Evince inside a sandbox (bubblewrap/Flatpak or a similar jail) to limit the blast radius of the crash and the heap-disclosure read, accepting reduced desktop integration and filesystem access, and note that address-space randomization does not mitigate this bug because the out-of-bounds read is deterministic and heap-layout independent. Consult https://gitlab.gnome.org/GNOME/libgxps and https://www.vulncheck.com/advisories/gnome-libgxps-through-0.3.2-heap-out-of-bounds-read-via-path-geometry-start-element for vendor and advisory updates, and treat the public writeup at https://hackmd.io/@haind-pwn/libgxps-poly-segment-points-arity-oob-read as an indicator that the flaw is publicly understood, even though no exploit code has been identified at time of analysis.

Affected VersionsENISA

libgxps 0 ≤0.3.2

Affected Packages

euvd libgxps no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

libgxps is GNOME's GObject-based library for parsing and rendering XPS (OpenXPS/XPS, ECMA-388) documents, and it is linked by document viewers such as Evince, which means the bug propagates to any application that renders untrusted XPS files. The vulnerable code lives in libgxps/gxps-path.c, specifically the path-geometry handling around lines 776-785 and 832-848 in the upstream source referenced by the advisory, where PolyBezierSegment and PolyQuadraticBezierSegment elements are converted into cairo path operations. Per the XPS specification, a bezier poly-segment must carry a point count divisible by three (two control points plus an endpoint per curve) and a quadratic poly-segment a count divisible by two, but the parser consumes the Points attribute array using index arithmetic that assumes well-formed arity instead of validating it. Supplying a count such as 4 for a bezier segment therefore makes the loop read one or more coordinates past the end of the heap allocation, the classic CWE-125 out-of-bounds read root-cause class: insufficient validation of attacker-controlled array length before sequential reads. The consequence is twofold - out-of-bounds heap bytes can be coerced into cairo path coordinates and thereby rendered into output (limited information disclosure, C:L), and malformed access patterns can abort the process (A:H), which is why the assessed vector is local, user-interaction-dependent, and constrained well below remote unauthenticated severity.

Know when Gnome 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 (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 6.1 MEDIUM

File must be opened locally (AV:L, UI:R), no auth (PR:N); crash drives A:H while only adjacent heap bytes leak (C:L) and no integrity impact (I:N).

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

GNOME libgxps through 0.3.2 contains a heap out-of-bounds read in path_geometry_start_element() that allows attackers to read past allocations via crafted PolyBezierSegment or PolyQuadraticBezierSegment Points attributes. Attackers can supply a point count not divisible by three or two in a crafted XPS document to crash consumers like Evince and render adjacent heap memory into output.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Medium
GNOME XPS library shipped via Evince in many Linux distros, niche format
Data Quality
5 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.1%
Patch available No
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
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Gnome

View all
CVE-2017-1000083 HIGH POC
7.8 Sep 05

backend/comics/comics-document.c (aka the comic book backend) in GNOME Evince before 3.24.1 allows remote attackers to e

CVE-2018-10900 HIGH POC
7.8 Jul 26

Network Manager VPNC plugin (aka networkmanager-vpnc) before version 1.2.6 is vulnerable to a privilege escalation attac

CVE-2024-52533 CRITICAL POC
9.8 Nov 11

gio/gsocks4aproxy.c in GNOME GLib before 2.82.1 has an off-by-one error and resultant buffer overflow because SOCKS4_CON

CVE-2017-5885 CRITICAL POC
9.8 Feb 28

Multiple integer overflows in the (1) vnc_connection_server_message and (2) vnc_color_map_set functions in gtk-vnc befor

CVE-2022-27811 CRITICAL POC
9.8 Mar 24

GNOME OCRFeeder before 0.8.4 allows OS command injection via shell metacharacters in a PDF or image filename. Rated crit

CVE-2019-17266 CRITICAL POC
9.8 Oct 06

libsoup from versions 2.65.1 until 2.68.1 have a heap-based buffer over-read because soup_ntlm_parse_challenge() in soup

CVE-2019-1010238 CRITICAL POC
9.8 Jul 19

Gnome Pango 1.42 and later is affected by: Buffer Overflow. Rated critical severity (CVSS 9.8), this vulnerability is re

CVE-2018-16428 CRITICAL POC
9.8 Sep 04

In GNOME GLib 2.56.1, g_markup_parse_context_end_parse() in gmarkup.c has a NULL pointer dereference. Rated critical sev

CVE-2025-13601 HIGH POC
7.7 Nov 26

Heap-based buffer overflow in GLib's g_escape_uri_string() function allows local attackers to achieve high-integrity and

CVE-2017-2862 HIGH POC
7.8 Sep 05

An exploitable heap overflow vulnerability exists in the gdk_pixbuf__jpeg_image_load_increment functionality of Gdk-Pixb

CVE-2016-6855 HIGH POC
7.5 Sep 07

Eye of GNOME (aka eog) 3.16.5, 3.17.x, 3.18.x before 3.18.3, 3.19.x, and 3.20.x before 3.20.4, when used with glib befor

CVE-2017-2870 HIGH POC
7.8 Sep 05

An exploitable integer overflow vulnerability exists in the tiff_image_parse functionality of Gdk-Pixbuf 2.36.6 when com

Vendor StatusVendor

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