Skip to main content

Excelize CVE-2026-107224

| EUVDEUVD-2026-94555 MEDIUM
Integer Overflow or Wraparound (CWE-190)
2026-10-07 GitHub_M GHSA-fw94-4wwp-w8pw
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft malicious Zip64 XLSX with high-bit uncompressed size
  2. Exploit
    Victim application opens workbook via Excelize
  3. Execution
    Negative int64 size bypasses unzip size-limit checks
  4. Impact
    make() receives negative capacity and panics (DoS)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an application using Excelize versions 2.1.0 through 2.11.0 to open an attacker-supplied workbook containing a crafted Zip64 entry whose uncompressed size is declared in the range 2^63 to 2^64-1 (high bit set). No special configuration or non-default option is needed - the overflow occurs on the standard open/read path (ReadZipReader → readFile) against default settings. The principal LIMITING factor is the UI:R requirement: the vulnerable program must be induced to open the malicious file (e.g., via upload, email attachment, or file-processing pipeline); the attacker cannot trigger it without that file being parsed. Impact is confined to a process panic/denial of service with no data exposure or modification.

Impact

This is a medium-severity availability-only issue. The provided CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H, base 6.5) indicates a network-reachable, low-complexity, unauthenticated flaw, but it requires user/application interaction (UI:R - a victim or service must open the attacker-supplied workbook) and yields no confidentiality or integrity impact - only a high availability impact (a Go panic/denial of service during make() with negative capacity). No EPSS score, CISA KEV listing, or public POC was provided in the input, so there is no signal of widespread or active exploitation; exploitation status is therefore 'no public exploit identified at time of analysis.' The root cause (CWE-190 integer overflow: a Zip64 uncompressed size of 2^63-2^64-1 wrapping uint64→negative int64 and bypassing size-limit checks) is well characterized by the source-code evidence. CONFLICT TO NOTE: the description states 'No fixed version is available,' yet the input includes PR #2369 and commit db93f8d89 that add a checkFileSize guard rejecting negative sizes - a fix appears merged/imminent even though no release is cited; verify the fixed release with the vendor advisory GHSA-fw94-4wwp-w8pw. Overall this is a legitimate but lower-tier DoS priority, not a critical widely-exploited issue.

Exploit ScenarioDerived

An attacker crafts a malicious XLSX (Zip) file whose Zip64 central-directory entry declares an uncompressed size between 2^63 and 2^64-1. When an application built on Excelize opens this workbook, the oversized value is converted to a negative int64, bypasses the unzip size-limit checks, and is passed to make() as a negative capacity, triggering a runtime panic. No public exploit code was identified in the provided data, but the crafted-file technique is straightforward given the documented root cause.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 07, 2026

Opening a crafted workbook with the Excelize Go library (versions 2.1.0 through 2.11.0) triggers an integer-overflow panic that crashes the process, producing a denial of service. A Zip64 entry whose declared uncompressed size falls between 2^63 and 2^64-1 wraps to a negative int64, slips past the library's size-limit checks, and is passed to an allocation as a negative capacity; the crash occurs on the standard open/read path with default options and no credentials. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H, 6.5) reflects that remote attackers can deliver the file but the victim application must be induced to parse it, and that only availability is affected - there is no data exposure or modification, and no public exploit has been identified at time of analysis.

RemediationAI

No vendor-released patched version was available at time of analysis - the advisory states no fixed release exists as of this review - but an upstream fix is available as a PR/commit (PR 2369, commit db93f8d89de71589069a54d1b998af02e3c5f7cd), which adds checkFileSize logic rejecting negative fileSize and invalid UnzipSizeLimit values; released patched version is not independently confirmed, so pin to a commit containing that change or vendor the patch. Do not rely on setting Options.UnzipSizeLimit as a mitigation, since the wrapped negative size bypasses the pre-fix limit comparison; you can, however, run a pre-validation pass that rejects XLSX/ZIP entries declaring UncompressedSize64 with bit 63 set (>= 2^63) or whose declared size conflicts with the actual stream, using a hardened ZIP parser before Excelize touches the file. Wrap calls to OpenReader/OpenFile in a deferred recover so the makeslice panic is converted to an error instead of terminating the process, and isolate all untrusted workbook parsing in a separate process or container with a supervisor that restarts on crash and with CPU/memory caps - the trade-off is added operational complexity and latency. Blocking end-user delivery of untrusted .xlsx files or gating imports behind explicit review reduces exposure where the parsing path cannot be isolated. Consult GHSA-fw94-4wwp-w8pw for the authoritative fix status before deciding on a permanent upgrade target.

Affected VersionsENISA

excelize 2.1.0, ≤ 2.11.0

Affected Packages

go github.com/xuri/excelize/v2 fix: 2.11.1-0.20260805032953-db93f8d89de7
euvd excelize_2_1_0 no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-190 (Integer Overflow or Wraparound) in Excelize's XLSX container handling. XLSX files are ZIP archives, and Excelize reads them through Go's archive/zip package via ReadZipReader, which iterates zip.File entries and inspects FileInfo.Size. For Zip64 entries, the true size is carried in the UncompressedSize64 uint64 field; when that value has bit 63 set (declared size in the 2^63..2^64-1 range), converting it to the signed int64 returned by FileInfo.Size produces a negative number. The library's only guard at the time was a comparison of the accumulated unzip size against Options.UnzipSizeLimit, which a negative value trivially undercuts, so the wrapped size flowed through readFile into make([]byte, size) as a negative capacity and Go's runtime panicked on the invalid slice capacity. The upstream fix (PR #2369, commit db93f8d89de71589069a54d1b998af02e3c5f7cd) introduces a checkFileSize helper that rejects a negative UnzipSizeLimit, a negative fileSize, and a fileSize exceeding the limit before the allocation, and adds regression tests covering negative and over-limit inputs. Note that the supplied tag 'Authentication Bypass' is inconsistent with the assessed vector, which specifies no confidentiality or integrity impact - this is purely an availability defect and should not be read as an access-control bypass.

Know when Excelize gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Crafted file is attacker-supplied but must be opened by the app (UI:R); no auth needed (PR:N) on the default parse path; impact is a panic/DoS only, so C:N/I:N/A:H.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.4%
Top 73% exploitable
Prevalence
Medium
very popular Go Excel library, embedded in many Go applications
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.

CVE-2026-54063 HIGH POC
7.5 Jul 10

Denial of service in the Excelize Go library (github.com/xuri/excelize/v2, a.k.a. qax-os/excelize) before 2.11.0 allows

CVE-2026-107212 HIGH POC
7.5 Oct 07

Denial of service in the Excelize Go library (versions 2.1.0 through 2.11.0) allows an attacker-controlled spreadsheet t

CVE-2026-107221 MEDIUM POC
6.5 Oct 07

A crafted Excel (.xlsx) file can crash any Go application that parses it with Excelize 2.0.0 through 2.11.0 using a non-

CVE-2026-59161 HIGH POC
8.7 Jul 10

Uncontrolled memory and CPU consumption in Excelize (qax-os/excelize), the widely used Go library for reading and writin

CVE-2026-107213 HIGH
8.7 Oct 07

Denial of service in Excelize 2.9.0 through 2.11.0 allows a crafted spreadsheet to panic and terminate a Go process that

CVE-2026-107211 HIGH
8.7 Oct 07

Go slice-bounds panic in the Excelize spreadsheet library versions 2.8.1 through 2.11.0 lets a crafted .xlsx workbook cr

CVE-2026-107219 HIGH
7.5 Oct 07

Denial of service in the Excelize Go library (versions 2.3.1 through 2.11.0) allows unauthenticated remote attackers to

CVE-2026-107217 HIGH
7.5 Oct 07

Denial of service in the Excelize Go spreadsheet library (github.com/xuri/excelize/v2 2.0.0-2.11.0 and github.com/xuri/e

CVE-2026-107216 HIGH
7.5 Oct 07

Uncontrolled recursion in the Excelize Go library (versions 2.8.1 through 2.11.0) allows a fatal Go stack overflow that

CVE-2026-107214 HIGH
7.5 Oct 07

Denial of service in Excelize versions 2.3.1 through 2.11.0 allows unauthenticated remote attackers to terminate the cal

CVE-2026-107215 HIGH
7.5 Oct 07

Memory exhaustion and runtime panic in the Excelize Go library (versions 2.3.1 through 2.11.0) let unauthenticated remot

CVE-2026-107223 HIGH
7.1 Oct 07

Resource exhaustion in the Excelize Go library (versions 2.1.0 through 2.11.0) lets a crafted .xlsx workbook drive exces

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy