<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>PhpSpreadsheet (&gt;= 3.3.0, &lt;= 3.10.6) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/phpspreadsheet--3.3.0--3.10.6/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 23 Jul 2026 15:02:28 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/phpspreadsheet--3.3.0--3.10.6/feed.xml" rel="self" type="application/rss+xml"/><item><title>PhpSpreadsheet Gnumeric Reader Unbounded Gzip Expansion Leads to Denial of Service</title><link>https://feed.craftedsignal.io/briefs/2026-07-phpspreadsheet-gnumeric-dos/</link><pubDate>Thu, 23 Jul 2026 15:02:28 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-phpspreadsheet-gnumeric-dos/</guid><description>The PhpOffice PhpSpreadsheet library is vulnerable to a denial of service (DoS) attack, identified as CVE-2026-59932, where its Gnumeric reader processes attacker-supplied `.gnumeric` files containing gzipped content without enforcing a decompressed-size limit, causing memory exhaustion and application crashes.</description><content:encoded><![CDATA[<p>The PhpOffice PhpSpreadsheet library, a widely used PHP library for reading and writing spreadsheet files, contains a critical vulnerability (CVE-2026-59932) in its Gnumeric file reader component. When processing an attacker-supplied <code>.gnumeric</code> file, the <code>Gnumeric::canRead()</code> function and subsequent processing paths invoke <code>gzdecode()</code> on gzipped contents without implementing a maximum decompressed-size limit. This allows a small, specially crafted compressed <code>.gnumeric</code> file to expand significantly, consuming excessive memory and leading to a PHP fatal error and process crash. This vulnerability impacts web applications, queue workers, and other services that accept and process untrusted spreadsheet uploads using PhpSpreadsheet, enabling attackers to trigger denial of service conditions by simply providing a malicious file. Affected versions include all PhpSpreadsheet versions up to 1.30.5, and specific ranges within 2.x, 3.x, 4.x, and 5.x.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Initial Access</strong>: An attacker crafts a malicious <code>.gnumeric</code> file containing a small, highly compressed gzip payload designed to decompress into a significantly larger data size.</li>
<li><strong>Victim Interaction</strong>: The attacker uploads this crafted <code>.gnumeric</code> file to a vulnerable application that uses the PhpSpreadsheet library for processing spreadsheet files (e.g., via a web form, API endpoint, or email attachment).</li>
<li><strong>File Read Initiation</strong>: The vulnerable application calls PhpSpreadsheet's <code>PhpOffice\PhpSpreadsheet\Reader\Gnumeric::canRead()</code> method, or other loading functions, to determine the file type or extract information.</li>
<li><strong>Unbounded Decompression</strong>: Inside <code>gzfileGetContents()</code>, the library detects the gzip magic bytes and proceeds to call <code>gzdecode()</code> on the entire compressed file contents.</li>
<li><strong>Memory Exhaustion</strong>: During decompression, the small input file expands to an exceptionally large size (e.g., a 97KB file expands to 96MB), exceeding the PHP process's configured <code>memory_limit</code>.</li>
<li><strong>Application Crash</strong>: The PHP interpreter encounters a &quot;PHP Fatal error: Allowed memory size exhausted,&quot; leading to the immediate termination of the PHP process or worker handling the request.</li>
<li><strong>Denial of Service</strong>: The application or service becomes unresponsive or crashes, effectively creating a denial of service condition for legitimate users or operations.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-59932 leads directly to denial of service (DoS) for applications utilizing PhpSpreadsheet. A small, maliciously crafted <code>.gnumeric</code> file, for instance, a 97,811-byte file, can expand to approximately 96 MiB during processing. This rapid memory allocation exhausts the PHP process's memory limit (e.g., 64 MiB), causing a fatal error and crashing the application worker. Any service that accepts untrusted spreadsheet uploads, such as document converters, preview services, data import functionalities, or web applications handling user-uploaded files, is susceptible. This can result in service outages, reduced availability, and operational disruptions for affected organizations across various sectors.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade <code>composer/phpoffice/phpspreadsheet</code> to a patched version immediately to remediate CVE-2026-59932.</li>
<li>Implement input validation and file size checks for all user-uploaded spreadsheet files to prevent excessively large files from being processed.</li>
<li>Configure PHP's <code>memory_limit</code> to a reasonable, but not unbounded, value for processes handling file uploads, and monitor for sudden spikes in memory usage as a detection mechanism.</li>
<li>Ensure that any custom file processing logic that handles gzipped data includes strict limits on the maximum allowed decompressed size.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>denial-of-service</category><category>vulnerability</category><category>phpspreadsheet</category><category>php</category><category>ghsa</category><category>software-supply-chain</category></item></channel></rss>