<?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://vulnerability.circl.lu</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>Sun, 04 Oct 2026 21:19:10 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-61690</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-61690</link>
      <description>&lt;p&gt;Grav is a file-based Web platform. Prior to 2.0.1, Grav ZipArchiver::extract() in system/src/Grav/Common/Filesystem/ZipArchiver.php passes archives to ZipArchive::extractTo() without enforcing the system.gpm.archive uncompressed-size, file-count, or nesting-depth limits. Code using Archiver::create(&amp;#39;zip&amp;#39;) to extract an attacker-controlled archive can exhaust disk space or inodes and make the site unavailable. This issue is fixed in version 2.0.1.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Grav is a file-based Web platform. Prior to 2.0.1, Grav ZipArchiver::extract() in system/src/Grav/Common/Filesystem/ZipArchiver.php passes archives to ZipArchive::extractTo() without enforcing the system.gpm.archive uncompressed-size, file-count, or nesting-depth limits. Code using Archiver::create(&amp;#39;zip&amp;#39;) to extract an attacker-controlled archive can exhaust disk space or inodes and make the site unavailable. This issue is fixed in version 2.0.1.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-61690</guid>
    </item>
    <item>
      <title>GHSA-928x-9mpw-8h56 — Grav: Decompression Bomb via ZipArchiver - Missing Extraction Limits</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-928x-9mpw-8h56</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: getgrav/grav&lt;/p&gt;
&lt;p&gt;## Summary
`ZipArchiver::extract()` lacks limits on uncompressed size, file count, and nesting depth, creating a distinct, unpatched variant of the GHSA-2vcx-h8p2-9pg9 zip bomb vulnerability. While the parallel method Installer::unZip() received comprehensive limits, ZipArchiver::extract() remains unprotected, leaving a separate code path vulnerable to the same attack vector. The vulnerability is a distinct, unpatched variant of the bug described in GHSA-2vcx-h8p2-9pg9, as it affects a separate code path in the same codebase, implementing the same abstract class.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;**Vulnerable code** - `system/src/Grav/Common/Filesystem/ZipArchiver.php:29-58`:&lt;/p&gt;
&lt;p&gt;```php
public function extract($destination, ?callable $status = null)
{
    $zip = new ZipArchive();
    $archive = $zip-&amp;gt;open($this-&amp;gt;archive_file);&lt;/p&gt;
&lt;p&gt;if ($archive === true) {
        Folder::create($destination);&lt;/p&gt;
&lt;p&gt;// Only guards against Zip Slip (path traversal)
        for ($i = 0, $count = $zip-&amp;gt;count(); $i &amp;lt; $count; $i++) {
            $name = $zip-&amp;gt;getNameIndex($i);
            if ($name !== false &amp;amp;&amp;amp; !$this-&amp;gt;isSafeEntryPath($name)) {
                $zip-&amp;gt;close();
                throw new RuntimeException(...);
            }
        }&lt;/p&gt;
&lt;p&gt;// Extracts EVERYTHING — no size, count, or depth limit
        if (!$zip-&amp;gt;extractTo($destination)) { ... }&lt;/p&gt;
&lt;p&gt;$zip-&amp;gt;close();
        return $this;
    }
}
```&lt;/p&gt;
&lt;p&gt;**What&amp;#39;s missing vs `Installer::unZip()`**:&lt;/p&gt;
&lt;p&gt;| Protection | `Installer::unZip()` | `ZipArchive…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: getgrav/grav&lt;/p&gt;
&lt;p&gt;## Summary
`ZipArchiver::extract()` lacks limits on uncompressed size, file count, and nesting depth, creating a distinct, unpatched variant of the GHSA-2vcx-h8p2-9pg9 zip bomb vulnerability. While the parallel method Installer::unZip() received comprehensive limits, ZipArchiver::extract() remains unprotected, leaving a separate code path vulnerable to the same attack vector. The vulnerability is a distinct, unpatched variant of the bug described in GHSA-2vcx-h8p2-9pg9, as it affects a separate code path in the same codebase, implementing the same abstract class.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;**Vulnerable code** - `system/src/Grav/Common/Filesystem/ZipArchiver.php:29-58`:&lt;/p&gt;
&lt;p&gt;```php
public function extract($destination, ?callable $status = null)
{
    $zip = new ZipArchive();
    $archive = $zip-&amp;gt;open($this-&amp;gt;archive_file);&lt;/p&gt;
&lt;p&gt;if ($archive === true) {
        Folder::create($destination);&lt;/p&gt;
&lt;p&gt;// Only guards against Zip Slip (path traversal)
        for ($i = 0, $count = $zip-&amp;gt;count(); $i &amp;lt; $count; $i++) {
            $name = $zip-&amp;gt;getNameIndex($i);
            if ($name !== false &amp;amp;&amp;amp; !$this-&amp;gt;isSafeEntryPath($name)) {
                $zip-&amp;gt;close();
                throw new RuntimeException(...);
            }
        }&lt;/p&gt;
&lt;p&gt;// Extracts EVERYTHING — no size, count, or depth limit
        if (!$zip-&amp;gt;extractTo($destination)) { ... }&lt;/p&gt;
&lt;p&gt;$zip-&amp;gt;close();
        return $this;
    }
}
```&lt;/p&gt;
&lt;p&gt;**What&amp;#39;s missing vs `Installer::unZip()`**:&lt;/p&gt;
&lt;p&gt;| Protection | `Installer::unZip()` | `ZipArchive…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-928x-9mpw-8h56</guid>
    </item>
  </channel>
</rss>
