Skip to main content

PhpSpreadsheet CVE-2026-108359

| EUVDEUVD-2026-108267 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-10-22 GitHub_M
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Upload crafted ODS file to parser
  2. Exploit
    Reader reads unbounded number-rows-repeated
  3. Execution
    Loop materializes millions of Cell objects
  4. Impact
    PHP memory exhausted, worker terminated

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

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

Exploitation Conditions

The only prerequisite is that the target application loads an attacker-supplied OpenDocument Spreadsheet (.ods) through PhpSpreadsheet's Ods reader; the advisory states no authentication, no special configuration, and only the default read filter are required, so default deployments are affected. The trigger is a single <table:table-row> carrying a large table:number-rows-repeated value whose row contains a cell value (empty rows are not the vector, and column repetition is separately bounded and not exploitable). The practical limiting factor is exposure of the ODS parsing path to untrusted input: applications that only process trusted/internally-generated ODS files, or that do not expose the Ods reader to external files, are not realistically exploitable even on affected versions.

Impact

This is a genuine availability-only denial-of-service issue in the PhpSpreadsheet ODS reader (CWE-400 / CWE-789), not a code-execution or data-exposure flaw. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) scores 8.7 and is internally consistent with the advisory: no authentication, no special configuration, and the default read filter are required, and the impact is confined to availability (VC:N/VI:N/VA:H). The reader materializes one Cell object per repeated row from an unbounded table:number-rows-repeated attribute, so a ~1.4 KB file can instruct creation of millions of cells and exhaust PHP memory. The decision signals are moderate rather than critical: vuln.today assigns 'this_week' (not act_now/emergency), the CVE is not listed in CISA KEV, and no EPSS probability was provided in the input - so exploitation-likelihood scoring could not be cross-referenced. The GHSA advisory includes a working reproduction payload and precise source-to-sink analysis, so weaponization is trivial for any attacker who can submit an .ods file, but the ceiling of harm is a crashed/OOM-killed PHP worker, not compromise. Net: a real, prioritizable DoS for any service that parses untrusted ODS uploads, correctly rated below true-critical because confidentiality and integrity are untouched.

Exploit ScenarioDerived

An attacker uploads a tiny (~1.4 KB) malicious .ods file to any web application that parses spreadsheets with PhpSpreadsheet's Ods reader. The file contains a single valued row with table:number-rows-repeated set to a huge value (e.g. 5,000,000), causing the reader to allocate millions of Cell objects and hit PHP's memory limit, killing the worker. The GHSA advisory publishes a complete reproduction payload, so no custom tooling is needed.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 22, 2026

Denial of service in the PhpSpreadsheet ODS reader allows unauthenticated remote attackers to exhaust a PHP worker's CPU and memory by loading a small crafted .ods file, terminating the process. Every maintained branch is affected - 1.x up to and including 1.30.6, 2.0-2.1 up to 2.1.18, 2.2-2.4 up to 2.4.7, 3.x up to 3.10.7 and 4.x-5.x up to 5.9.0 - whenever an application parses an attacker-supplied OpenDocument Spreadsheet using the default read filter, since no authentication or special configuration is required. A public proof-of-concept payload is documented in the vendor advisory; it is not verified as working exploit code, and no confirmed active exploitation (CISA KEV) is recorded at time of analysis.

RemediationAI

Upgrade to a fixed release for your branch: 1.30.7 for the 1.x line, 2.1.19 for 2.0-2.1, 2.4.8 for 2.2-2.4, 3.10.8 for 3.x and 5.10.0 for 4.x-5.x, which are published as tagged releases at https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/1.30.7, /2.1.19, /2.4.8, /3.10.8 and /5.10.0, with the corresponding code changes in commits 299993894dce37aa3b64aa23e9a3f4bb77ab0e66, 2de29384aa11223ee08136c0e6a9e9981bc1a2eb, 980b5c294493856f1a25754f1e8a1d2185b93738, 9a0b48622ebfe93fa48cb9bc09ce57303bb07af9 and da13f40e8760d599b0e8a296017d4b028b20e86c. Practical exposure is limited to code paths that hand untrusted .ods files to the Ods reader; applications that only parse internally generated or otherwise trusted spreadsheets are not realistically exploitable even while unpatched, so until the upgrade can be scheduled the actionable control is to keep attacker-controlled ODS input away from this reader rather than to rely on the separately bounded column-repetition path.

Affected VersionsENISA

PhpSpreadsheet 2.0.0, < 2.1.19
PhpSpreadsheet < 1.30.7
PhpSpreadsheet 4.0.0, < 5.10.0
PhpSpreadsheet 2.2.0, < 2.4.8
PhpSpreadsheet 3.3.0, < 3.10.8

Affected Packages

euvd phpspreadsheet fix: 1.30.7, 2.1.19, 2.4.8, 3.10.8, 5.10.0

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

OpenDocument Spreadsheet files are ZIP archives containing XML, in which a <table:table-row> element can carry a table:number-rows-repeated attribute that tells a reader how many identical rows the element represents. In src/PhpSpreadsheet/Reader/Ods.php, Ods::processTableRow() casts that attribute with an unchecked (int) and then materialises one spreadsheet cell per repetition via getCell() inside a loop with no upper bound, so a row carrying even a single value produces millions of Cell allocations - a roughly 1.4 KB file requesting 5,000,000 repetitions consumes on the order of 256 MB and triggers a fatal out-of-memory error at default PHP memory limits. This is CWE-400 uncontrolled resource consumption with CWE-789 memory allocation with excessive size, in an availability-only impact path. Column repetition is not part of the flaw: the column loops are already bounded, and getCell() throws once a column index exceeds AddressRange::MAX_COLUMN_INT (XFD, 16,384). The upstream fix introduces checkRowsRepeated(), which rejects a repeat count when rowID + repeats - 1 exceeds AddressRange::MAX_ROW, and applies the same style of bound to column and merged-cell handling.

Know when Phpspreadsheet 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_M) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote unauthenticated parsing of a user-supplied file with no interaction (AV:N/AC:L/PR:N/UI:N); only availability is affected via memory exhaustion (A:H, C:N/I:N), scope unchanged.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 22, 2026 - 18:18 EUVD
CVE Published
Oct 22, 2026 - 17:32 cve.org
HIGH 8.7

DescriptionCVE.org

PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0, Ods::processTableRow in src/PhpSpreadsheet/Reader/Ods.php accepts an unbounded table:number-rows-repeated attribute from an ODS table row. When the row contains a value, the reader materializes a cell for every repetition without checking the spreadsheet row limit, so a small attacker-controlled ODS file can consume substantial CPU and memory and terminate the PHP worker. Column repetition is separately bounded and is not part of this vulnerability. This issue is fixed in versions 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0.

Technical POC Analysis

CWE-400 (Uncontrolled Resource Consumption), with CWE-789 (Memory Allocation with Excessive Size Value) as the second weakness GitHub assigns.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-108359 is a high-severity denial-of-service vulnerability in the PhpSpreadsheet library's ODS reader, affecting all maintained branches. Any application that processes attacker-supplied OpenDocument Spreadsheet files using the default read filter can be forced to exhaust CPU and memory, terminating the PHP worker and potentially disrupting service for legitimate users. Leadership should prioritize patching because this flaw allows unauthenticated remote attackers to cause operational downtime with minimal effort.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Medium
very popular PHP spreadsheet library, but impact limited to apps parsing untrusted ODS
Social Media
1
Sightings
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 HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

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

CVE-2024-45291 HIGH POC
8.8 Oct 07

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Rated high severity (CVSS 8.8), this vul

CVE-2019-12331 HIGH POC
8.8 Nov 07

PHPOffice PhpSpreadsheet before 1.8.0 has an XXE issue. Rated high severity (CVSS 8.8), this vulnerability is remotely e

CVE-2018-19277 HIGH POC
8.8 Nov 14

securityScan() in PHPOffice PhpSpreadsheet through 1.5.0 allows a bypass of protection mechanisms for XXE via UTF-7 enco

CVE-2024-48917 HIGH POC
7.5 Nov 18

PhpSpreadsheet is a PHP library for reading and writing spreadsheet files. Rated high severity (CVSS 7.5), this vulnerab

CVE-2024-47873 HIGH POC
7.5 Nov 18

PhpSpreadsheet is a PHP library for reading and writing spreadsheet files. Rated high severity (CVSS 7.5), this vulnerab

CVE-2024-45290 HIGH POC
7.5 Oct 07

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Rated high severity (CVSS 7.5), this vul

CVE-2024-45293 HIGH POC
7.5 Oct 07

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Rated high severity (CVSS 7.5), this vul

CVE-2024-45048 MEDIUM POC
6.5 Aug 28

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Rated medium severity (CVSS 6.5), this v

CVE-2020-7776 MEDIUM POC
6.4 Dec 09

This affects the package phpoffice/phpspreadsheet from 0.0.0. Rated medium severity (CVSS 6.4), this vulnerability is re

CVE-2024-45060 MEDIUM POC
6.1 Oct 07

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Rated medium severity (CVSS 6.1), this v

CVE-2024-45292 MEDIUM POC
5.4 Oct 07

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Rated medium severity (CVSS 5.4), this v

CVE-2024-45046 MEDIUM POC
5.4 Aug 28

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Rated medium severity (CVSS 5.4), this v

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