<?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>Sun, 04 Oct 2026 23:33:45 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-317956</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-317956</link>
      <description>EUVD-2026-317956</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-317956</guid>
    </item>
    <item>
      <title>fkie_cve-2026-40902</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-40902</link>
      <description>&lt;p&gt;PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0, the XLSX reader&amp;#39;s ColumnAndRowAttributes::readRowAttributes() method reads row numbers from XML attributes without validating them against the spreadsheet maximum row limit (AddressRange::MAX_ROW = 1,048,576). An attacker can craft a minimal XLSX file (~1.6KB) containing a &amp;lt;row r=&amp;#34;999999999&amp;#34;/&amp;gt; element that inflates cachedHighestRow to 999,999,999, causing any subsequent row iteration to attempt ~1 billion loop cycles and exhaust CPU resources. This vulnerability is fixed in 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0, the XLSX reader&amp;#39;s ColumnAndRowAttributes::readRowAttributes() method reads row numbers from XML attributes without validating them against the spreadsheet maximum row limit (AddressRange::MAX_ROW = 1,048,576). An attacker can craft a minimal XLSX file (~1.6KB) containing a &amp;lt;row r=&amp;#34;999999999&amp;#34;/&amp;gt; element that inflates cachedHighestRow to 999,999,999, causing any subsequent row iteration to attempt ~1 billion loop cycles and exhaust CPU resources. This vulnerability is fixed in 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-40902</guid>
    </item>
    <item>
      <title>GHSA-7c6m-4442-2x6m — PhpSpreadsheet has CPU Denial of Service via Unbounded Row Number in XLSX Row Dimensions</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-7c6m-4442-2x6m</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: phpoffice/phpspreadsheet&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The XLSX reader&amp;#39;s `ColumnAndRowAttributes::readRowAttributes()` method reads row numbers from XML attributes without validating them against the spreadsheet maximum row limit (`AddressRange::MAX_ROW = 1,048,576`). An attacker can craft a minimal XLSX file (~1.6KB) containing a `&amp;lt;row r=&amp;#34;999999999&amp;#34;/&amp;gt;` element that inflates `cachedHighestRow` to 999,999,999, causing any subsequent row iteration to attempt ~1 billion loop cycles and exhaust CPU resources.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;In `src/PhpSpreadsheet/Reader/Xlsx/ColumnAndRowAttributes.php` at line 216, the row index is cast directly from XML without bounds checking:&lt;/p&gt;
&lt;p&gt;```php
// ColumnAndRowAttributes.php:216
$rowIndex = (int) $row[&amp;#39;r&amp;#39;];  // No validation against AddressRange::MAX_ROW
```&lt;/p&gt;
&lt;p&gt;This value flows through `setRowAttributes()` (line 126) → `$this-&amp;gt;worksheet-&amp;gt;getRowDimension($rowNumber)` (line 60), which updates the cached highest row in `Worksheet.php:1348`:&lt;/p&gt;
&lt;p&gt;```php
// Worksheet.php:1342-1349
public function getRowDimension(int $row): RowDimension
{
    if (!isset($this-&amp;gt;rowDimensions[$row])) {
        $this-&amp;gt;rowDimensions[$row] = new RowDimension($row);
        $this-&amp;gt;cachedHighestRow = max($this-&amp;gt;cachedHighestRow, $row);
    }
    return $this-&amp;gt;rowDimensions[$row];
}
```&lt;/p&gt;
&lt;p&gt;The inflated `cachedHighestRow` is then returned by `getHighestRow()` (line 1099) and used as the default end bound in `RowIterator::resetEnd()` (RowIterator.php:86):&lt;/p&gt;
&lt;p&gt;```php
// RowIterator.php:86
$this-&amp;gt;endRow = $endRow ?: $this-&amp;gt;subject-&amp;gt;getHighestR…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: phpoffice/phpspreadsheet&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The XLSX reader&amp;#39;s `ColumnAndRowAttributes::readRowAttributes()` method reads row numbers from XML attributes without validating them against the spreadsheet maximum row limit (`AddressRange::MAX_ROW = 1,048,576`). An attacker can craft a minimal XLSX file (~1.6KB) containing a `&amp;lt;row r=&amp;#34;999999999&amp;#34;/&amp;gt;` element that inflates `cachedHighestRow` to 999,999,999, causing any subsequent row iteration to attempt ~1 billion loop cycles and exhaust CPU resources.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;In `src/PhpSpreadsheet/Reader/Xlsx/ColumnAndRowAttributes.php` at line 216, the row index is cast directly from XML without bounds checking:&lt;/p&gt;
&lt;p&gt;```php
// ColumnAndRowAttributes.php:216
$rowIndex = (int) $row[&amp;#39;r&amp;#39;];  // No validation against AddressRange::MAX_ROW
```&lt;/p&gt;
&lt;p&gt;This value flows through `setRowAttributes()` (line 126) → `$this-&amp;gt;worksheet-&amp;gt;getRowDimension($rowNumber)` (line 60), which updates the cached highest row in `Worksheet.php:1348`:&lt;/p&gt;
&lt;p&gt;```php
// Worksheet.php:1342-1349
public function getRowDimension(int $row): RowDimension
{
    if (!isset($this-&amp;gt;rowDimensions[$row])) {
        $this-&amp;gt;rowDimensions[$row] = new RowDimension($row);
        $this-&amp;gt;cachedHighestRow = max($this-&amp;gt;cachedHighestRow, $row);
    }
    return $this-&amp;gt;rowDimensions[$row];
}
```&lt;/p&gt;
&lt;p&gt;The inflated `cachedHighestRow` is then returned by `getHighestRow()` (line 1099) and used as the default end bound in `RowIterator::resetEnd()` (RowIterator.php:86):&lt;/p&gt;
&lt;p&gt;```php
// RowIterator.php:86
$this-&amp;gt;endRow = $endRow ?: $this-&amp;gt;subject-&amp;gt;getHighestR…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-7c6m-4442-2x6m</guid>
    </item>
  </channel>
</rss>
