Skip to main content

PHPOffice PHPPresentation CVE-2026-114403

| EUVDEUVD-2026-107250 CRITICAL
Deserialization of Untrusted Data (CWE-502)
2026-10-21 VulnCheck GHSA-q73p-x2mp-8gm9
9.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Upload crafted ZIP presentation file
  2. Delivery
    IOFactory routes to Serialized reader
  3. Exploit
    unserialize() instantiates arbitrary objects
  4. Execution
    Gadget chain triggers code/file write
  5. Impact
    Remote code execution or DoS

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

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 the target application call PHPPresentation's IOFactory::load() on an attacker-controllable file, and that the crafted file be a ZIP whose contents cause routing to the Serialized reader (a PhpPresentation.xml payload handed to unserialize() in Reader/Serialized.php). The practical escalation from object instantiation to code execution or file write further requires a usable PHP gadget chain present in the application or its loaded dependencies - without such a chain the realistic outcome is limited to arbitrary object instantiation or denial of service. Limiting factors: the vulnerable serialized-reader path must be reachable (applications that only read standard PowerPoint/ODP formats may not invoke it), and full RCE impact is contingent on available gadgets, which is why the authoritative vector marks AT:P (attack requirement present) rather than a fully unconditional network exploit.

Impact

This is a genuine high-priority vulnerability, though its severity is conditional rather than automatic. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H, 9.2) indicates unauthenticated network-reachable exploitation with full impact to confidentiality, integrity, and availability - consistent with a CWE-502 insecure deserialization flaw reaching unserialize(). The critical qualifier is AT:P (attack requirement present): exploitation is not turnkey because it depends on the consuming application actually routing an attacker-supplied file to IOFactory::load AND the presence of a usable PHP gadget chain in the target's codebase/dependencies, without which the primitive yields only object instantiation or denial of service rather than guaranteed RCE. No EPSS score, KEV listing, or POC flag was supplied in the input, so exploitation-probability signals are absent; absence of these is not evidence of low risk. A detailed third-party technical writeup (hackmd) and a VulnCheck advisory exist and pinpoint the vulnerable Serialized.php reader, meaning the vulnerability mechanics are public and reproducible even if no packaged exploit is confirmed. Net: treat as a real priority for any application that ingests user-supplied presentation files via PHPPresentation, but recognize the practical blast radius is gated by whether the deserialized data path is actually exposed and whether gadget chains are available.

Exploit ScenarioDerived

An application uses PHPPresentation's IOFactory::load() to process user-uploaded presentation files. An attacker uploads a crafted ZIP containing a PhpPresentation.xml that the Serialized reader passes to unserialize(), instantiating arbitrary PHP objects; if a suitable gadget chain exists in the application or its dependencies, this escalates to arbitrary code execution, arbitrary file writes, or denial of service. No packaged public exploit is confirmed in the input, but a public technical writeup documents the vulnerable code path.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 21, 2026

PHPOffice PHPPresentation through version 1.2.0 will pass attacker-controlled serialized data to unserialize() when IOFactory::load() is pointed at a crafted presentation file, letting remote unauthenticated attackers instantiate arbitrary PHP objects inside the hosting application. Where a usable gadget chain exists in the application or its dependencies, that object instantiation escalates to code execution or arbitrary file writes; without gadgets the realistic outcome is object injection or denial of service, which is why the assessed vector marks a present attack requirement (AT:P) rather than an unconditional network exploit. No confirmed active exploitation (CISA KEV) and no public exploit identified at time of analysis, but the library is widely embedded in document-conversion and upload pipelines, so exposure depends entirely on whether the vulnerable Serialized reader path is reachable from untrusted input.

RemediationAI

No vendor-released patch identified at time of analysis, so mitigation must be layered around the library. First, stop feeding untrusted files to format auto-detection: replace IOFactory::load() with an explicitly chosen reader (for example the PowerPoint2007/ODP readers) so input can never be routed to Reader/Serialized.php, and reject or quarantine any upload that is not a plain Office Open XML or ODP container - the trade-off is that the library's own serialized format can no longer be loaded, which is rarely needed for user uploads. Second, if the Serialized reader must stay enabled, patch the local vendored copy of Serialized.php to call unserialize($data, ['allowed_classes' => false]) or restrict it to an explicit allowlist of PhpPresentation classes; this neutralizes gadget chains but may break legitimate round-tripping of serialized presentations. Third, run conversion workloads in a hardened sandbox or container with a read-only filesystem, no outbound network, and a low memory/CPU cap, which limits file-write, RCE, and DoS outcomes at the cost of some operational overhead. Additionally, keep Composer dependencies (monolog, guzzle, symfony components, etc.) current to eliminate known gadget chains, enforce upload size and ZIP entry-count limits to blunt decompression-style DoS, and monitor for unexpected child processes or file writes from the document-processing service. Track the vendor repository and the VulnCheck advisory for a fixed release and upgrade as soon as one is published.

Affected VersionsENISA

PHPPresentation 0 ≤1.2.0

Affected Packages

euvd phppresentation 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

The flaw is a classic CWE-502 insecure deserialization in a PHP document-processing library. PHPPresentation's IOFactory::load() performs format auto-detection on a supplied file; when the input is a ZIP whose payload causes routing to the Serialized reader (src/PhpPresentation/Reader/Serialized.php, lines 77-109), the contents (a PhpPresentation.xml payload) are handed to PHP's unserialize(). Because unserialize() honors attacker-supplied class names, an attacker can force instantiation of any autoloadable class in the application's scope; combined with __wakeup/__destruct/__toString magic methods in loaded dependencies, this becomes a PHP object-injection gadget chain leading to command execution, file write, or resource-exhaustion DoS. The vendor source references for IOFactory.php (line 39) and the Serialized reader show the exact dispatch and deserialization sites. Note the discrepancy between the CVE's CVSS 4.0 score of 9.2 and the independently assessed CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H, 8.1-level profile): the assessed view treats exploitability as high-complexity because success depends on the application actually calling IOFactory::load() on user-supplied files and on the presence of a suitable gadget chain.

Know when Phppresentation 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 9.2 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.1 HIGH

Network-reachable file ingestion with no auth (AV:N/PR:N/UI:N), but AC:H because reliable code execution depends on reaching the serialized reader and a viable gadget chain existing in the target.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
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

PHPOffice PHPPresentation through 1.2.0 contains an insecure deserialization vulnerability that allows attackers to instantiate arbitrary PHP objects by supplying a crafted presentation file. Attackers can upload a ZIP containing PhpPresentation.xml that IOFactory::load passes to unserialize(), enabling gadget-chain code execution, file writes, or denial of service.

Executive ViewAI

Why It Matters

PHPOffice PHPPresentation through 1.2.0 can expose document-conversion and upload pipelines to crafted presentation files that reach an unsafe unserialize path, creating risk of object injection, denial of service, and, where application gadget chains exist, code execution or file writes. Leadership should care because this component is often embedded in shared processing services, so a single vulnerable path can affect multiple business workflows and customer-facing uploads; no public exploit has been identified at time of analysis and no vendor-released patch has been identified.

Business Impact: High
Compensating Controls

No vendor-released patch identified; restrict IOFactory::load() to trusted files, disable the Serialized reader path for untrusted uploads, enforce file-type allowlists and scanning, sandbox document-conversion services, apply WAF or virtual patching where feasible, and monitor for object-injection or denial-of-service indicators.

Threat Intelligence Overview

EPSS Score
0.5%
Top 60% exploitable
Prevalence
Medium
common open-source PHP library, but narrower adoption than PHPSpreadsheet
Social Media
1
Sightings
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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
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
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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