<?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>Thu, 08 Oct 2026 16:00:09 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-107225</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-107225</link>
      <description>&lt;p&gt;Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.8.0 to 2.11.0, GetStyle&amp;#39;s fill, border, and font extraction predicates check only upper bounds for attacker-controlled style-table indices. File.GetStyle relies on extractStyleCondFuncs predicates that allow negative FillID, BorderID, and FontID values to reach slice indexing. When a crafted styles.xml supplies a negative fillId, borderId, or fontId and the application reads the style, a negative identifier passes the upper-bound-only predicate and becomes a negative slice index, allowing an attacker to panic while reading cell styling. 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.8.0 to 2.11.0, GetStyle&amp;#39;s fill, border, and font extraction predicates check only upper bounds for attacker-controlled style-table indices. File.GetStyle relies on extractStyleCondFuncs predicates that allow negative FillID, BorderID, and FontID values to reach slice indexing. When a crafted styles.xml supplies a negative fillId, borderId, or fontId and the application reads the style, a negative identifier passes the upper-bound-only predicate and becomes a negative slice index, allowing an attacker to panic while reading cell styling. No fixed version is available as of this review.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-107225</guid>
    </item>
    <item>
      <title>GHSA-5h23-36rv-pm65 — Excelize: GetStyle panics on a negative fillId, borderId or fontId in styles.xml</title>
      <link>https://db.gcve.eu/vuln/ghsa-5h23-36rv-pm65</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;`File.GetStyle` indexes the fill, border and font tables with values taken straight out of `xl/styles.xml`, and the conditions gating those lookups check only the upper bound. A workbook whose `cellXfs` entry carries `fillId=&amp;#34;-1&amp;#34;`, `borderId=&amp;#34;-1&amp;#34;` or `fontId=&amp;#34;-1&amp;#34;` reaches a negative slice index and panics. excelize has no `recover()`, so the panic leaves `GetStyle` and takes the calling process with it.&lt;/p&gt;
&lt;p&gt;Same defect class as GHSA-48hm-4h8j-58fg, the negative shared-string index, in a different file. That one was fixed by adding the missing lower bound; these three sites still lack it.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`styles.go`, in `GetStyle`, lines 1683, 1686 and 1689:&lt;/p&gt;
&lt;p&gt;```go
xf := s.CellXfs.Xf[idx]
if extractStyleCondFuncs[&amp;#34;fill&amp;#34;](xf, s) {
    f.extractFills(s.Fills.Fill[*xf.FillID], s, style)
}
if extractStyleCondFuncs[&amp;#34;border&amp;#34;](xf, s) {
    f.extractBorders(s.Borders.Border[*xf.BorderID], s, style)
}
if extractStyleCondFuncs[&amp;#34;font&amp;#34;](xf, s) {
    style.Font = extractFont(s.Fonts.Font[*xf.FontID])
}
```&lt;/p&gt;
&lt;p&gt;The conditions, at lines 1171 to 1185, bound only the top:&lt;/p&gt;
&lt;p&gt;```go
&amp;#34;fill&amp;#34;: func(xf xlsxXf, s *xlsxStyleSheet) bool {
    return (xf.ApplyFill == nil || (xf.ApplyFill != nil &amp;amp;&amp;amp; *xf.ApplyFill)) &amp;amp;&amp;amp;
        xf.FillID != nil &amp;amp;&amp;amp; s.Fills != nil &amp;amp;&amp;amp;
        *xf.FillID &amp;lt; len(s.Fills.Fill)
},
```&lt;/p&gt;
&lt;p&gt;`*xf.FillID &amp;lt; len(...)` is satisfied by any negative value. `FillID`, `BorderID` and `FontID` are `*int` unmarshalled directly from the `fillId`, `borderId` and `fontId` attributes, so the valu…&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;`File.GetStyle` indexes the fill, border and font tables with values taken straight out of `xl/styles.xml`, and the conditions gating those lookups check only the upper bound. A workbook whose `cellXfs` entry carries `fillId=&amp;#34;-1&amp;#34;`, `borderId=&amp;#34;-1&amp;#34;` or `fontId=&amp;#34;-1&amp;#34;` reaches a negative slice index and panics. excelize has no `recover()`, so the panic leaves `GetStyle` and takes the calling process with it.&lt;/p&gt;
&lt;p&gt;Same defect class as GHSA-48hm-4h8j-58fg, the negative shared-string index, in a different file. That one was fixed by adding the missing lower bound; these three sites still lack it.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`styles.go`, in `GetStyle`, lines 1683, 1686 and 1689:&lt;/p&gt;
&lt;p&gt;```go
xf := s.CellXfs.Xf[idx]
if extractStyleCondFuncs[&amp;#34;fill&amp;#34;](xf, s) {
    f.extractFills(s.Fills.Fill[*xf.FillID], s, style)
}
if extractStyleCondFuncs[&amp;#34;border&amp;#34;](xf, s) {
    f.extractBorders(s.Borders.Border[*xf.BorderID], s, style)
}
if extractStyleCondFuncs[&amp;#34;font&amp;#34;](xf, s) {
    style.Font = extractFont(s.Fonts.Font[*xf.FontID])
}
```&lt;/p&gt;
&lt;p&gt;The conditions, at lines 1171 to 1185, bound only the top:&lt;/p&gt;
&lt;p&gt;```go
&amp;#34;fill&amp;#34;: func(xf xlsxXf, s *xlsxStyleSheet) bool {
    return (xf.ApplyFill == nil || (xf.ApplyFill != nil &amp;amp;&amp;amp; *xf.ApplyFill)) &amp;amp;&amp;amp;
        xf.FillID != nil &amp;amp;&amp;amp; s.Fills != nil &amp;amp;&amp;amp;
        *xf.FillID &amp;lt; len(s.Fills.Fill)
},
```&lt;/p&gt;
&lt;p&gt;`*xf.FillID &amp;lt; len(...)` is satisfied by any negative value. `FillID`, `BorderID` and `FontID` are `*int` unmarshalled directly from the `fillId`, `borderId` and `fontId` attributes, so the valu…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-5h23-36rv-pm65</guid>
    </item>
  </channel>
</rss>
