Phpspreadsheet
Approved changes feed: RSS · Atom
cpe:2.3:a:phpoffice:phpspreadsheet:*:*:*:*:*:*:*:*
part: a version: * update: *
| Vendor | Phpoffice (e4c72832-34b4-50fe-866e-c2d34a3f9655) |
|---|---|
| Product | Phpspreadsheet (6b08b14a-6be3-544c-9fc7-1faf3b4df1af) |
| Edition | * |
| Language | * |
| Software edition | * |
| Target software | * |
| Target hardware | * |
| Other | * |
| Notes | Imported from purl2cpe mapping |
PURL mappings
| PURL | Source | Last updated |
|---|---|---|
pkg:composer/ecbc-phpoffice/phpspreadsheet |
purl2cpe | 2026-06-01 10:13:25.638280 |
pkg:github/phpoffice/phpspreadsheet |
purl2cpe | 2026-06-01 10:13:25.638282 |
Vulnerability references
| Identifier | cpeApplicability | Submitted | db.gcve.eu details | Rationale |
|---|---|---|---|---|
CVE:CVE-2026-59932 |
vulnerable | 2026-09-16 04:32:47.317089 |
PhpSpreadsheet: Gnumeric reader unbounded gzip expansion causes memory exhaustion
HIGH (7.5)
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. In versions 4.0.0 through 5.8.0, 3.3.0 through 3.10.6, 2.2.0 through 2.4.6, 2.0.0 through 2.1.17, and all releases up to and including 1.30.5, the Gnumeric reader reads attacker-supplied .gnumeric files into memory and, when the file starts with gzip magic bytes, calls gzdecode() on the full compressed contents without enforcing a decompressed-size limit. A very small compressed .gnumeric file can expand to data larger than the PHP memory limit and crash the process during Gnumeric::canRead() before the file is rejected or fully parsed. This is reachable through normal file-type detection and Gnumeric loading paths, so applications that accept attacker-controlled spreadsheet uploads can suffer denial of service. This issue has been fixed in versions 5.8.1, 3.10.7, 2.4.7, 2.1.18 and 1.30.6.
Published: 2026-07-28T17:59:17.404Z
Updated: 2026-07-29T13:56:46.333Z Reference links
|
Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-59933 |
vulnerable | 2026-09-16 04:32:46.880641 |
PhpSpreadsheet: XLS/OLE sector-chain self-loop causes memory exhaustion
HIGH (7.5)
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. In versions 4.0.0 through 5.8.0, 3.3.0 through 3.10.6, 2.2.0 through 2.4.6, 2.0.0 through 2.1.17, and all releases up to and including 1.30.5, the OLE reader follows sector chains from attacker-controlled XLS/OLE metadata without detecting cycles or enforcing a maximum chain length. A tiny malformed .xls/OLE file can set the small-block depot sector chain to point back to itself. During normal XLS detection, OLERead::read() appends the same sector data repeatedly until the PHP process exhausts memory. This is reachable from Reader\Xls::canRead() and therefore from automatic spreadsheet type detection. Applications that accept attacker-controlled spreadsheet uploads can suffer denial of service from a very small file. This issue has been fixed in versions 5.8.1, 3.10.7, 2.4.7, 2.1.18 and 1.30.6.
Published: 2026-07-28T17:29:27.129Z
Updated: 2026-07-28T17:57:30.912Z Reference links
|
Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-59931 |
vulnerable | 2026-09-16 04:32:46.786816 |
PhpSpreadsheet: SSRF bypass via HTTP redirect in WEBSERVICE() domain whitelist
HIGH (7.7)
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. In versions 4.0.0 through 5.8.0, 3.3.0 through 3.10.6, 2.2.0 through 2.4.6, 2.0.0 through 2.1.17, and all releases up to and including 1.30.5, the WEBSERVICE() domain whitelist can be bypassed via an HTTP redirect (SSRF). In Calculation/Web/Service.php, the webService() method validates a URL's host against the whitelist set via Spreadsheet::setDomainWhiteList(), then fetches content with file_get_contents($url, false, $ctx); because PHP's HTTP stream wrapper follows 301/302 redirects automatically (up to 20 hops) and the redirect target is never re-validated, an attacker who can trigger a redirect from a whitelisted domain can reach arbitrary URLs, including internal addresses. An attacker able to upload XLSX files to an application that uses setDomainWhiteList() and getCalculatedValue() can achieve a full-read SSRF, returning up to 32,767 bytes of the response body as a cell's calculated value, which enables exfiltration of cloud metadata (AWS/GCP/Azure credentials via http://169.254.169.254/), access to internal-only services, and internal port scanning (the port is not validated). This issue has been fixed in versions 5.8.1, 3.10.7, 2.4.7, 2.1.18, and 1.30.6.
Published: 2026-07-28T17:27:27.300Z
Updated: 2026-07-28T18:13:17.566Z Reference links
|
Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-45034 |
vulnerable | 2026-07-29 00:52:15.014519 |
PhpSpreadsheet: File::prohibitWrappers bypass
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.5, CVE-2026-34084 was patched by the helper File::prohibitWrappers. The helper calls parse_url($filename, PHP_URL_SCHEME) and then checks is_string($scheme) && strlen($scheme) > 1 to reject stream wrappers such as phar://, php://, data:// or expect://. The check is not equivalent to "does the path contain a wrapper". When the input has the form phar:///path/file.phar/inner with three or more slashes after the scheme, parse_url returns boolean false instead of returning the scheme string. The is_string($scheme) branch is therefore skipped, the helper returns without throwing, and the caller proceeds. PHP's stream layer, however, still treats phar:///... as a valid phar wrapper and opens the underlying phar file. The result is that IOFactory::load($attackerPath) walks past the patch and still touches the phar wrapper. On PHP 7.x, simply reaching the phar wrapper via is_file is enough for PHP to automatically deserialize the phar metadata, which in turn invokes the magic methods __wakeup and __destruct of an attacker controlled object and gives full RCE. On PHP 8.x, automatic metadata deserialization for plain file ops was removed, so the chain at the PhpSpreadsheet layer reduces to a phar wrapper file read primitive, and RCE only resurfaces if the downstream consumer ever calls Phar::getMetadata. This vulnerability is fixed in 1.30.5.
Published: 2026-06-22T20:32:32.011Z
Updated: 2026-06-23T15:53:10.411Z |
Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-40902 |
vulnerable | 2026-06-08 08:01:21.114402 |
PhpSpreadsheet: CPU Denial of Service via Unbounded Row Number in XLSX Row Dimensions
HIGH (7.5)
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0, the XLSX reader's ColumnAndRowAttributes::readRowAttributes() method reads row numbers from XML attributes without validating them against the spreadsheet maximum row limit (AddressRange::MAX_ROW = 1,048,576). An attacker can craft a minimal XLSX file (~1.6KB) containing a <row r="999999999"/> element that inflates cachedHighestRow to 999,999,999, causing any subsequent row iteration to attempt ~1 billion loop cycles and exhaust CPU resources. This vulnerability is fixed in 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0.
Published: 2026-05-12T22:02:39.802Z
Updated: 2026-05-13T12:11:34.633Z |
Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-40863 |
vulnerable | 2026-06-08 08:01:21.054345 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-40296 |
vulnerable | 2026-06-08 08:01:20.145835 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-35453 |
vulnerable | 2026-06-08 07:59:14.011556 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2026-34084 |
vulnerable | 2026-06-08 07:59:11.790842 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2025-54370 |
vulnerable | 2026-06-08 07:33:12.497633 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2025-23210 |
vulnerable | 2026-06-08 07:10:55.350910 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2025-22131 |
vulnerable | 2026-06-08 07:10:52.246054 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-56412 |
vulnerable | 2026-06-08 06:54:17.803860 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-56411 |
vulnerable | 2026-06-08 06:54:17.803519 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-56410 |
vulnerable | 2026-06-08 06:54:17.803053 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-56409 |
vulnerable | 2026-06-08 06:54:17.802684 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-56408 |
vulnerable | 2026-06-08 06:54:17.802168 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-56366 |
vulnerable | 2026-06-08 06:54:17.785475 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-56365 |
vulnerable | 2026-06-08 06:54:17.785019 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-48917 |
vulnerable | 2026-06-08 06:50:11.696435 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-47873 |
vulnerable | 2026-06-08 06:48:13.365327 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-45293 |
vulnerable | 2026-06-08 06:45:55.828911 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-45292 |
vulnerable | 2026-06-08 06:45:55.828437 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-45291 |
vulnerable | 2026-06-08 06:45:55.828104 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-45290 |
vulnerable | 2026-06-08 06:45:55.827703 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-45060 |
vulnerable | 2026-06-08 06:45:54.473411 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-45048 |
vulnerable | 2026-06-08 06:45:54.458015 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2024-45046 |
vulnerable | 2026-06-08 06:45:54.454978 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2020-7776 |
vulnerable | 2026-06-08 05:27:14.239129 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2019-12331 |
vulnerable | 2026-06-08 05:12:38.947681 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
CVE:CVE-2018-19277 |
vulnerable | 2026-06-08 05:11:15.532468 | db.gcve.eu details were skipped to keep the page responsive. | Imported from gcve-enriched-dumps CVE data |
Contribute
You can submit an edit proposal for this CPE entry or suggest a related product/vendor addition using the action button above.