Skip to main content

Excelize CVE-2026-107214

| EUVDEUVD-2026-94531 HIGH
Uncaught Exception (CWE-248)
2026-10-07 GitHub_M GHSA-2j4c-ffch-9f23
7.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 malformed OLE file with valid EncryptionInfo
  2. Delivery
    Deliver to app that decrypts spreadsheets
  3. Exploit
    Decrypt dispatches to standard/agile decryptor
  4. Execution
    Unvalidated slice/index/divide triggers runtime panic
  5. Impact
    Calling process terminates (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
Exploitation Conditions

Exploitation requires the host application to call Excelize's Decrypt on an attacker-supplied file (e.g. opening or decrypting an uploaded, password-protected .xlsx), and the malicious OLE compound file must contain a version-valid EncryptionInfo stream so that dispatch proceeds into standardDecrypt or agileDecrypt. The vulnerable code path is only reached for the encrypted-workbook decryption flow - applications that never process encrypted/untrusted spreadsheets are not exposed. Limiting factors: the attacker needs a channel to get the file to the decryption routine, affected versions are Excelize 2.3.1 through 2.11.0, and the worst-case outcome is process termination only (no code execution or data disclosure). No fixed version exists, so mitigation must occur at the application layer (validating or sandboxing untrusted file processing).

Impact

All impact signals point to a single outcome - denial of service. The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) and CWE-248 (uncaught exception) agree: there is no confidentiality or integrity impact, only availability loss via an unrecovered Go runtime panic that terminates the calling process. The 'network' attack vector is nominal - it reflects that a malicious file can be delivered remotely (e.g. uploaded to a service that decrypts it), not that the library listens on a socket; real exploitation always requires the victim application to open or pass an attacker-supplied spreadsheet to Decrypt. No EPSS score, KEV listing, or POC was provided in the input, so there is no public evidence of active exploitation; the risk is a reliability/crash issue rather than a code-execution or data-breach threat. The one aggravating factor is that no fixed version exists as of this review, so affected deployments cannot remediate by upgrading and must mitigate at the application layer. Net assessment: a genuine but bounded DoS - a real priority only for services that decrypt untrusted, encrypted Excel files; low urgency for applications that never process untrusted encrypted input. NOTE: EPSS data is absent, so exploitation probability cannot be quantified.

Exploit ScenarioDerived

An attacker uploads or supplies a malformed OLE compound file that carries a version-valid EncryptionInfo stream to an application that uses Excelize to open or decrypt spreadsheets. When the application calls Decrypt, the attacker-controlled EncryptionInfo and EncryptedPackage data reach standardDecrypt or agileDecrypt before validation, hitting one of nine malformed-input classes that causes an unrecovered Go runtime panic and crashes the process. No public exploit was identified at time of analysis, though the patch PR (#2395) and its test cases effectively document the triggering inputs.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 07, 2026

Denial of service in Excelize versions 2.3.1 through 2.11.0 allows unauthenticated remote attackers to terminate the calling Go process by supplying a malformed OLE compound file with a version-valid EncryptionInfo stream to the library's Decrypt function. The decryption dispatch lacks structural and parameter validation, causing nine malformed-input classes to trigger unrecovered Go runtime panics instead of returning documented errors. Exploitation requires the host application to process attacker-supplied encrypted spreadsheets, no fixed version is available as of this review, and no public exploit code has been identified.

RemediationAI

No vendor-released patch version exists as of this review; an upstream fix is available in PR 2395 (commit 22f76f9acb94b85b3eb9c4365ab4f750cebbc565) but a tagged release has not been independently confirmed. Until a patched version is released, do not call Excelize's Decrypt on untrusted files if that functionality is not required. If encrypted spreadsheet processing is essential, run it in an isolated child process or sandboxed worker so a panic terminates only that worker rather than the main service, accepting the added latency and operational complexity. Alternatively, implement strict pre-validation of the OLE compound file structure (checking EncryptionInfo stream version, stream lengths, and key-size fields) before invoking Decrypt, but note this duplicates upstream logic and may still miss edge cases. Monitor the vendor advisory at https://github.com/qax-os/excelize/security/advisories/GHSA-2j4c-ffch-9f23 and apply the fix from PR 2395 once a release is available.

Affected VersionsENISA

excelize 2.3.1, ≤ 2.11.0

Affected Packages

go github.com/xuri/excelize/v2 fix: 2.11.1-0.20260915055537-22f76f9acb94
euvd excelize_2_3_1 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

Excelize is a Go library for reading and writing Microsoft Excel spreadsheets. Its encrypted-workbook decryption flow parses OLE compound files, extracting an EncryptionInfo stream that selects either standard or agile encryption, and an EncryptedPackage stream containing the ciphertext. CWE-248 (Uncaught Exception) is the root cause: before calling standardDecrypt or agileDecrypt, the dispatch routine fails to validate attacker-controlled values such as EncryptionHeaderSize, KeySize, KeyBits, BlockSize, SpinCount, and buffer lengths. Those values are then used in slice operations, indexing, memory allocation, and division, so nine distinct malformed inputs cause Go runtime panics that are not recovered. The CPE cpe:2.3:a:qax-os:excelize:*:*:*:*:*:*:*:* covers the package, but the vulnerable range is specifically 2.3.1 to 2.11.0, where the decryption dispatch first performed insufficient structural and parameter validation. The offered fix in GitHub PR 2395 and commit 22f76f9acb94b85b3eb9c4365ab4f750cebbc565 adds bounds checks, block-size validation, and key-length restrictions before decryption proceeds.

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 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

A malicious file can be delivered to an automated decryption service (AV:N, PR:N, UI:N) and reliably triggers a panic (AC:L); impact is availability-only crash, so C:N/I:N/A:H.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/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
None
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.3.1 to 2.11.0, the decryption dispatch performs insufficient structural and parameter validation before standard and agile decryptors slice, index, allocate, and divide using attacker-controlled values. Decrypt passes attacker-controlled EncryptionInfo and EncryptedPackage data into standardDecrypt or agileDecrypt before validating the structures used by those routines. When a malformed OLE compound file with a version-valid EncryptionInfo stream is opened or passed to Decrypt, nine malformed-input classes reach unrecovered Go runtime panics instead of the documented error path, allowing an attacker to terminate the calling process. No fixed version is available as of this review.

Technical POC Analysis

CWE-248 (unrecovered exception).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A denial-of-service weakness in the Excelize Go library, affecting versions 2.3.1 through 2.11.0, lets a malformed encrypted spreadsheet crash the entire Go process that parses it - meaning any internal or customer-facing service that accepts uploaded Excel files can be knocked offline by a single bad document. Because Excelize is a broadly embedded open-source dependency, the exposure likely spans multiple application teams and products rather than a single system, and no vendor-released patch was identified at the time of this analysis, leaving availability risk unmitigated by upgrading alone. Leadership should care because the failure mode is whole-process termination, which can translate directly into service outages and SLA breaches rather than a contained error.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: isolate spreadsheet parsing in a separate, restartable process or sandboxed worker to contain panic-induced termination; wrap Decrypt and file-opening calls in panic-recovery handlers that return errors to the caller; validate and allow-list uploaded file formats and reject password-protected or encrypted spreadsheets where business requirements permit; enforce strict file-size and upload-rate limits; and monitor for abnormal process exits or restarts correlated with document ingestion.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Medium
popular open-source Go Excel library, common in Go backends but not universal
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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
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-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

CVE-2026-59162 MEDIUM
6.9 Jul 10

Panic-triggering denial of service in the Excelize Go library (all versions prior to 2.11.0) allows any actor who can su

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