<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 23 Oct 2026 14:27:22 +0000</lastBuildDate>
    <item>
      <title>GHSA-rcw4-f5rp-g42v — adm-zip: Decompression-bomb protection (fix for CVE-2026-39244) can be bypassed by declaring uncompressed size as 0</title>
      <link>https://db.gcve.eu/vuln/ghsa-rcw4-f5rp-g42v</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: adm-zip&lt;/p&gt;
&lt;p&gt;**Affected package:** adm-zip (npm)
**Affected version:** 0.6.0&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The fix shipped for CVE-2026-39244 (`methods/inflater.js`) caps zlib&amp;#39;s decompression output via `maxOutputLength: expectedLength`, where `expectedLength` is read directly from the ZIP entry&amp;#39;s attacker-controlled &amp;#34;uncompressed size&amp;#34; header field (`CENLEN`/`LOCLEN`). This cap is only applied when `expectedLength &amp;gt; 0`:&lt;/p&gt;
&lt;p&gt;```js
const option = version &amp;gt;= 15 &amp;amp;&amp;amp; expectedLength &amp;gt; 0 ? { maxOutputLength: expectedLength } : {};
return zlib.inflateRawSync(inbuf, option);
```&lt;/p&gt;
&lt;p&gt;If an attacker sets the declared uncompressed-size field to exactly **0**, this condition is false, `option` becomes `{}`, and no output cap is passed to zlib at all. Node then falls back to zlib&amp;#39;s own internal default limit (several GB), so a small, highly-compressible payload can still be decompressed to a very large size in memory -- the same class of resource-exhaustion issue the original CVE addressed, just triggered differently.&lt;/p&gt;
&lt;p&gt;## Steps to Reproduce&lt;/p&gt;
&lt;p&gt;1. Build a ZIP archive containing one DEFLATE-compressed entry whose real content is highly redundant (e.g. several MB of a repeated byte, achieving close to the ~1032:1 theoretical raw-DEFLATE compression ratio).
2. Patch the entry&amp;#39;s declared uncompressed-size fields (both the local file header copy and the central directory copy, 4-byte little-endian values) to `0`. The compressed bytes and CRC32 are left untouched -- CRC validation still passes because CRC is computed over the real d…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: adm-zip&lt;/p&gt;
&lt;p&gt;**Affected package:** adm-zip (npm)
**Affected version:** 0.6.0&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The fix shipped for CVE-2026-39244 (`methods/inflater.js`) caps zlib&amp;#39;s decompression output via `maxOutputLength: expectedLength`, where `expectedLength` is read directly from the ZIP entry&amp;#39;s attacker-controlled &amp;#34;uncompressed size&amp;#34; header field (`CENLEN`/`LOCLEN`). This cap is only applied when `expectedLength &amp;gt; 0`:&lt;/p&gt;
&lt;p&gt;```js
const option = version &amp;gt;= 15 &amp;amp;&amp;amp; expectedLength &amp;gt; 0 ? { maxOutputLength: expectedLength } : {};
return zlib.inflateRawSync(inbuf, option);
```&lt;/p&gt;
&lt;p&gt;If an attacker sets the declared uncompressed-size field to exactly **0**, this condition is false, `option` becomes `{}`, and no output cap is passed to zlib at all. Node then falls back to zlib&amp;#39;s own internal default limit (several GB), so a small, highly-compressible payload can still be decompressed to a very large size in memory -- the same class of resource-exhaustion issue the original CVE addressed, just triggered differently.&lt;/p&gt;
&lt;p&gt;## Steps to Reproduce&lt;/p&gt;
&lt;p&gt;1. Build a ZIP archive containing one DEFLATE-compressed entry whose real content is highly redundant (e.g. several MB of a repeated byte, achieving close to the ~1032:1 theoretical raw-DEFLATE compression ratio).
2. Patch the entry&amp;#39;s declared uncompressed-size fields (both the local file header copy and the central directory copy, 4-byte little-endian values) to `0`. The compressed bytes and CRC32 are left untouched -- CRC validation still passes because CRC is computed over the real d…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-rcw4-f5rp-g42v</guid>
    </item>
  </channel>
</rss>
