<?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>Thu, 08 Oct 2026 11:25:44 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-107224</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-107224</link>
      <description>&lt;p&gt;Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.1.0 to 2.11.0, a Zip64 uncompressed size with the high bit set is converted from uint64 to a negative int64 before signed size-limit checks and allocation. ReadZipReader obtains UncompressedSize64 through FileInfo.Size and passes the wrapped negative value to readFile. When a crafted Zip64 entry declares an uncompressed size from 2^63 through 2^64-1 and the workbook is opened, the negative size bypasses unzip limits and reaches make as a negative capacity, allowing an attacker to panic during workbook opening. No fixed version is available as of this review.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.1.0 to 2.11.0, a Zip64 uncompressed size with the high bit set is converted from uint64 to a negative int64 before signed size-limit checks and allocation. ReadZipReader obtains UncompressedSize64 through FileInfo.Size and passes the wrapped negative value to readFile. When a crafted Zip64 entry declares an uncompressed size from 2^63 through 2^64-1 and the workbook is opened, the negative size bypasses unzip limits and reaches make as a negative capacity, allowing an attacker to panic during workbook opening. No fixed version is available as of this review.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-107224</guid>
    </item>
    <item>
      <title>GHSA-fw94-4wwp-w8pw — Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-fw94-4wwp-w8pw</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/xuri/excelize/v2&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;A Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap)&lt;/p&gt;
&lt;p&gt;A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative `int64` in `zip.File.FileInfo().Size()`, and `ReadZipReader` does signed arithmetic on that value, so the total-decompression guard is bypassed and the negative size reaches `make([]byte, 0, size)` in `readFile`. A 159-byte crafted file panics `OpenFile` and `OpenReader` with `runtime error: makeslice: cap out of range`.&lt;/p&gt;
&lt;p&gt;The guard, at `lib.go:44-46` on HEAD `ae2113b`:&lt;/p&gt;
&lt;p&gt;```go
fileSize := v.FileInfo().Size()
unzipSize += fileSize
if unzipSize &amp;gt; f.options.UnzipSizeLimit {
	return fileList, worksheets, newUnzipSizeLimitError(f.options.UnzipSizeLimit)
}
```&lt;/p&gt;
&lt;p&gt;`FileInfo().Size()` returns `int64(UncompressedSize64)`. `UncompressedSize64` is read from the Zip64 extended-information extra record in the central directory and is fully attacker controlled, so any value with the top bit set arrives as a negative `int64`. `unzipSize` then goes negative and the comparison against `UnzipSizeLimit` (default `1000 &amp;lt;&amp;lt; 24`, `templates.go:193`) is false no matter how many such entries the archive contains.&lt;/p&gt;
&lt;p&gt;The same negative value also fails the two stream-to-temp checks at `lib.go:53` and `lib.go:64` (`fileSize &amp;gt; f.options.UnzipXMLSizeLimit`), so the entry is not diverted to a temp file and control reaches `readFile`:&lt;/p&gt;
&lt;p&gt;```go
// lib.go:150
dat := make([]byte, 0, file.FileInfo()…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/xuri/excelize/v2&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;A Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap)&lt;/p&gt;
&lt;p&gt;A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative `int64` in `zip.File.FileInfo().Size()`, and `ReadZipReader` does signed arithmetic on that value, so the total-decompression guard is bypassed and the negative size reaches `make([]byte, 0, size)` in `readFile`. A 159-byte crafted file panics `OpenFile` and `OpenReader` with `runtime error: makeslice: cap out of range`.&lt;/p&gt;
&lt;p&gt;The guard, at `lib.go:44-46` on HEAD `ae2113b`:&lt;/p&gt;
&lt;p&gt;```go
fileSize := v.FileInfo().Size()
unzipSize += fileSize
if unzipSize &amp;gt; f.options.UnzipSizeLimit {
	return fileList, worksheets, newUnzipSizeLimitError(f.options.UnzipSizeLimit)
}
```&lt;/p&gt;
&lt;p&gt;`FileInfo().Size()` returns `int64(UncompressedSize64)`. `UncompressedSize64` is read from the Zip64 extended-information extra record in the central directory and is fully attacker controlled, so any value with the top bit set arrives as a negative `int64`. `unzipSize` then goes negative and the comparison against `UnzipSizeLimit` (default `1000 &amp;lt;&amp;lt; 24`, `templates.go:193`) is false no matter how many such entries the archive contains.&lt;/p&gt;
&lt;p&gt;The same negative value also fails the two stream-to-temp checks at `lib.go:53` and `lib.go:64` (`fileSize &amp;gt; f.options.UnzipXMLSizeLimit`), so the entry is not diverted to a temp file and control reaches `readFile`:&lt;/p&gt;
&lt;p&gt;```go
// lib.go:150
dat := make([]byte, 0, file.FileInfo()…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-fw94-4wwp-w8pw</guid>
    </item>
  </channel>
</rss>
