CVE-2026-59932: PHPSpreadsheet: Gnumeric reader unbounded gzip expansion causes memory exhaustion
PhpSpreadsheet’s 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.
References
- github.com/PHPOffice/PhpSpreadsheet/commit/85f2556b0bf5269061bf45932ecda8a128d81750
- github.com/PHPOffice/PhpSpreadsheet/releases/tag/1.30.6
- github.com/PHPOffice/PhpSpreadsheet/releases/tag/2.1.18
- github.com/PHPOffice/PhpSpreadsheet/releases/tag/2.4.7
- github.com/PHPOffice/PhpSpreadsheet/releases/tag/3.10.7
- github.com/PHPOffice/PhpSpreadsheet/releases/tag/5.8.1
- github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-2mrg-gjxq-2gvr
- github.com/advisories/GHSA-2mrg-gjxq-2gvr
- nvd.nist.gov/vuln/detail/CVE-2026-59932
Code Behaviors & Features
Detect and mitigate CVE-2026-59932 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →