Description
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.
Published: 2026-10-22
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service (CPU & Memory Exhaustion)
Action: Patch Now
AI Analysis

Impact

The vulnerability allows an attacker to craft a malicious ODS file containing an unbounded table:number-rows-repeated attribute. When processed by PhpSpreadsheet’s Ods::processTableRow method, the library materializes a cell instance for every repetition without enforcing a spreadsheet row limit, leading to excessive CPU consumption and memory allocation. The result is a denial‑of‑service that can terminate PHP workers and deplete server resources.

Affected Systems

This flaw affects the PHPOffice PhpSpreadsheet library in all releases older than 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0. The issue was patched in these exact release versions. Any application that relies on an earlier version for reading ODS files is vulnerable.

Risk and Exploitability

With a CVSS score of 8.7 the vulnerability is considered high severity. No EPSS score is currently available and the flaw is not listed in the CISA KEV catalog. The attack vector is inferred to arise from providing a malicious ODS document that the application reads; the unchecked repetition attribute can be triggered without authentication if an upload or import endpoint accepts arbitrary files. This can exhaust CPU and memory on the hosting environment, potentially causing service interruption. Because the library itself performs no checks, the exploitation likelihood depends largely on how the library is invoked but is considered significant in environments that accept user‑generated ODS files.

Generated by OpenCVE AI on October 22, 2026 at 18:33 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to PhpSpreadsheet version 1.30.7 or later, including 2.1.19, 2.4.8, 3.10.8, or 5.10.0, to apply the fix that bounds the number-rows-repeated processing.
  • If upgrading is not immediately possible, enforce a pre‑validation layer that rejects or limits ODS files with number-rows-repeated values above a safe threshold before handing them to the library.
  • Implement application‑level resource quotas or PHP‑FPM worker limits to constrain CPU and memory usage during ODS parsing, reducing the impact of any potential exploit.

Generated by OpenCVE AI on October 22, 2026 at 18:33 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-j2w7-387v-m2rq PhpSpreadsheet ODS Reader: Unbounded number-rows-repeated → CPU & Memory Exhaustion (DoS)
History

Thu, 29 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 23 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
First Time appeared Phpoffice
Phpoffice phpspreadsheet
Vendors & Products Phpoffice
Phpoffice phpspreadsheet

Thu, 22 Oct 2026 17:45:00 +0000

Type Values Removed Values Added
Description 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.
Title PhpSpreadsheet ODS Reader: Unbounded number-rows-repeated → CPU & Memory Exhaustion (DoS)
Weaknesses CWE-400
CWE-789
References
Metrics cvssV4_0

{'score': 8.7, 'vector': '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'}


Subscriptions

Phpoffice Phpspreadsheet
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-29T11:51:32.420Z

Reserved: 2026-10-09T20:32:44.301Z

Link: CVE-2026-108359

cve-icon Vulnrichment

Updated: 2026-10-29T11:51:20.617Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-22T18:17:26.740

Modified: 2026-10-29T12:17:09.343

Link: CVE-2026-108359

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T19:00:16Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-789

    Memory Allocation with Excessive Size Value