Description
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.8.0 to 2.11.0, GetStyle'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.
Published: 2026-10-07
Score: 6.5 Medium
EPSS: n/a
KEV: No
Impact: Application Crashes (Denial of Service)
Action: Patch Unavailable
AI Analysis

Impact

Excelize is a Go library for handling Microsoft Excel spreadsheets. The flaw lies in the GetStyle function, which checks only the upper bounds of style‑table indices supplied from styles.xml. When a malicious file contains negative fillId, borderId or fontId values, the library accepts them and uses them as negative slice indices, which triggers a panic and crashes the application. This is a classic bounds‑checking error (CWE‑129) that results in denial of service because the process terminates.

Affected Systems

The vulnerability affects the qax‑os Excelize library, specifically all releases from version 2.8.0 up to and including 2.11.0. Any program written in Go that imports this library and processes user‑supplied .xlsx files could be impacted.

Risk and Exploitability

The CVSS score of 6.5 indicates moderate severity, and the EPSS score is not available. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires an attacker to supply a crafted styles.xml file to an application that uses the affected library, which could be local or remote if the application accepts file uploads from external users. Because the issue results in a panic rather than code execution, the primary risk is denial of service, but it can also impact availability of services that rely on Excelize.

Generated by OpenCVE AI on October 7, 2026 at 20:25 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Verify your project uses Excelize 2.8.0–2.11.0 and upgrade to the latest stable release that includes the fix; if a fixed version is not yet available, switch to a maintained fork that resolves the issue.
  • Sanitize and validate any .xlsx files before passing them to Excelize, rejecting or correcting negative style identifiers and rejecting malformed styles.xml files.
  • Wrap calls to the library in a recover‑protected goroutine or use a panic‑recovery wrapper so that a panic does not bring down the entire application; log the event for further analysis.
  • If upgrading is not immediately possible, isolate Excelize usage in a separate process or sandbox to contain potential crashes.

Generated by OpenCVE AI on October 7, 2026 at 20:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-5h23-36rv-pm65 Excelize: GetStyle panics on a negative fillId, borderId or fontId in styles.xml
History

Wed, 07 Oct 2026 21:00:00 +0000

Type Values Removed Values Added
First Time appeared Qax-os
Qax-os excelize
Vendors & Products Qax-os
Qax-os excelize

Wed, 07 Oct 2026 19:00:00 +0000

Type Values Removed Values Added
Description Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.8.0 to 2.11.0, GetStyle'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.
Title Excelize: GetStyle panics on a negative fillId, borderId or fontId in styles.xml
Weaknesses CWE-129
CWE-20
References
Metrics cvssV3_1

{'score': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-07T18:55:55.603Z

Reserved: 2026-10-07T14:34:14.816Z

Link: CVE-2026-107225

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-07T19:17:35.333

Modified: 2026-10-07T19:17:35.333

Link: CVE-2026-107225

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-07T20:45:07Z

Weaknesses
  • CWE-129

    Improper Validation of Array Index

  • CWE-20

    Improper Input Validation