<?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://cve.radiocsirt.org</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>Tue, 06 Oct 2026 07:12:22 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-338098</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-338098</link>
      <description>EUVD-2026-338098</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-338098</guid>
    </item>
    <item>
      <title>fkie_cve-2026-61449</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-61449</link>
      <description>&lt;p&gt;Grav 2.0.1 contains a decompression-bomb size-cap bypass in ZipArchiver and GPM\Installer. The size bound introduced in 2.0.1 sums the uncompressed size declared in each entry&amp;#39;s ZIP central-directory header (ZipArchive::statIndex()[&amp;#39;size&amp;#39;]) and rejects archives exceeding system.gpm.archive.max_uncompressed_size before extraction. Because this declared size is attacker-forgeable and is not cross-checked against the actual inflated stream, a crafted archive declaring tiny per-entry sizes passes the cap while extractTo() writes the real, much larger content, filling disk or exhausting inodes. The archive must be supplied by a package source or admin upload (admin/operator trust). Fixed in 2.0.2. This is an incomplete fix for GHSA-928x-9mpw-8h56.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Grav 2.0.1 contains a decompression-bomb size-cap bypass in ZipArchiver and GPM\Installer. The size bound introduced in 2.0.1 sums the uncompressed size declared in each entry&amp;#39;s ZIP central-directory header (ZipArchive::statIndex()[&amp;#39;size&amp;#39;]) and rejects archives exceeding system.gpm.archive.max_uncompressed_size before extraction. Because this declared size is attacker-forgeable and is not cross-checked against the actual inflated stream, a crafted archive declaring tiny per-entry sizes passes the cap while extractTo() writes the real, much larger content, filling disk or exhausting inodes. The archive must be supplied by a package source or admin upload (admin/operator trust). Fixed in 2.0.2. This is an incomplete fix for GHSA-928x-9mpw-8h56.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-61449</guid>
    </item>
    <item>
      <title>GHSA-8h9x-89f2-m7x3 — Grav: Decompression-bomb size cap bypassed by forged ZIP size in ZipArchiver/Installer</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-8h9x-89f2-m7x3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: getgrav/grav&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The decompression-bomb bound added in 2.0.1 (commit 1c1003c) sums `ZipArchive::statIndex($i)[&amp;#39;size&amp;#39;]` and rejects an archive whose declared uncompressed total exceeds `system.gpm.archive.max_uncompressed_size` (default 1 GiB) before extracting (`ZipArchiver.php:77-86`; same logic in `GPM\Installer::unZip` at `Installer.php:228-238`). `statIndex()[&amp;#39;size&amp;#39;]` is the uncompressed size declared in the ZIP central directory, which is attacker-forgeable and is not checked against the actual inflated stream. An archive declaring 1 byte per entry passes the cap while `extractTo()` writes the real (large) content. The entry-count and nesting-depth caps count real structure and still hold; only the size dimension is defeated, so the disk-fill / inode-exhaustion case the bound targets is not prevented. Incomplete fix for GHSA-928x-9mpw-8h56.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`extract()`/`unZip()` validate every entry up front, then call `Folder::create` + `extractTo`. The size check is:&lt;/p&gt;
&lt;p&gt;```php
$totalSize += (int) $stat[&amp;#39;size&amp;#39;];          // declared central-directory size
if ($maxSize &amp;gt; 0 &amp;amp;&amp;amp; $totalSize &amp;gt; $maxSize) { ... reject ... }
```&lt;/p&gt;
&lt;p&gt;`$stat[&amp;#39;size&amp;#39;]` is read from the central directory, which the archive author writes. libzip does not cross-check declared-vs-actual size during `extractTo`, so a forged-small value passes the gate and the real stream inflates to disk. The `max_files` (entry count) and `max_depth` (entry-name segments) checks are not forgeable this way.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;Build a 10 KiB…&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&lt;/p&gt;
&lt;p&gt;The decompression-bomb bound added in 2.0.1 (commit 1c1003c) sums `ZipArchive::statIndex($i)[&amp;#39;size&amp;#39;]` and rejects an archive whose declared uncompressed total exceeds `system.gpm.archive.max_uncompressed_size` (default 1 GiB) before extracting (`ZipArchiver.php:77-86`; same logic in `GPM\Installer::unZip` at `Installer.php:228-238`). `statIndex()[&amp;#39;size&amp;#39;]` is the uncompressed size declared in the ZIP central directory, which is attacker-forgeable and is not checked against the actual inflated stream. An archive declaring 1 byte per entry passes the cap while `extractTo()` writes the real (large) content. The entry-count and nesting-depth caps count real structure and still hold; only the size dimension is defeated, so the disk-fill / inode-exhaustion case the bound targets is not prevented. Incomplete fix for GHSA-928x-9mpw-8h56.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`extract()`/`unZip()` validate every entry up front, then call `Folder::create` + `extractTo`. The size check is:&lt;/p&gt;
&lt;p&gt;```php
$totalSize += (int) $stat[&amp;#39;size&amp;#39;];          // declared central-directory size
if ($maxSize &amp;gt; 0 &amp;amp;&amp;amp; $totalSize &amp;gt; $maxSize) { ... reject ... }
```&lt;/p&gt;
&lt;p&gt;`$stat[&amp;#39;size&amp;#39;]` is read from the central directory, which the archive author writes. libzip does not cross-check declared-vs-actual size during `extractTo`, so a forged-small value passes the gate and the real stream inflates to disk. The `max_files` (entry count) and `max_depth` (entry-name segments) checks are not forgeable this way.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;Build a 10 KiB…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-8h9x-89f2-m7x3</guid>
    </item>
  </channel>
</rss>
