Skip to main content

Excelize EUVDEUVD-2026-94533

| CVE-2026-107215 HIGH
Memory Allocation with Excessive Size Value (CWE-789)
2026-10-07 GitHub_M GHSA-x2q3-8cjh-766f
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
    Upload crafted encrypted XLSX
  2. Exploit
    Trigger unchecked stream-size allocation
  3. Impact
    Panic or exhaust process memory

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory allocation limits
Exploitation Conditions

The affected application must invoke Excelize's Decrypt path on an attacker-supplied, password-protected/encrypted OLE compound (CFB) Excel file - i.e., it must accept and attempt to decrypt untrusted encrypted workbooks. The trigger is a crafted CFB directory entry for the EncryptionInfo or EncryptedPackage stream whose declared streamSize is negative or extremely large, which reaches make() before any sector-chain or size-domain validation (the unpatched extractPart). Limiting factors: only encrypted-workbook processing flows are reachable (non-encrypted spreadsheet parsing does not hit this path), impact is confined to availability (crash/OOM) with no code execution or data exposure, and library versions 2.3.1 through 2.11.0 are affected.

Impact

This is a denial-of-service memory-allocation flaw (CWE-789) in the Excelize Go library's encrypted-spreadsheet decryption path. 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) is internally consistent with the description: no privileges, no user interaction, and availability-only impact (process panic via make() with a negative length, or multi-gigabyte allocation exhausting memory) with no confidentiality or integrity consequence. No EPSS score, SSVC decision, or KEV entry was supplied, and no public exploit is indicated - so despite the 'HIGH' rating this is availability-only with no evidence of active exploitation, placing it well below KEV-class or RCE priorities. The practical risk is bounded by a deployment precondition the raw CVSS does not capture: the vulnerable code sits in the Decrypt/extractPart path, so only applications that accept and decrypt untrusted password-protected OLE/CFB Excel files are exposed. Conflicting signal to flag: the input Tags label this 'Information Disclosure,' which directly contradicts the CVSS impact metrics (C:N/I:N/A:H) and the CWE-789 memory-exhaustion mechanism - this is a DoS, not disclosure. No fixed release version exists yet (a patch is staged in PR #2396), so remediation currently requires pinning the patched commit or input validation.

Exploit ScenarioDerived

An application uses Excelize to open user-uploaded, password-protected Excel workbooks. An attacker uploads a crafted OLE compound file whose EncryptionInfo or EncryptedPackage directory entry declares a negative or enormous stream size, and the service either panics (negative make length) or balloons to a multi-gigabyte allocation, crashing or starving the host. No public exploit code is identified at time of analysis.

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

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

Alert me

AnalysisAIv1 – Oct 07, 2026

Memory exhaustion and runtime panic in the Excelize Go library (versions 2.3.1 through 2.11.0) let unauthenticated remote attackers crash or drive out-of-memory conditions in any service that decrypts attacker-supplied, password-protected OLE compound (CFB) Excel workbooks. The assessed CVSS vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) confirms no privileges or user interaction are needed and that impact is confined to availability, with no code execution or data exposure. No vendor-tagged fixed release was available as of this review, though an upstream fix exists as PR #2396 / commit 5f636f9; no public exploit code was identified at time of analysis and there is no KEV listing.

RemediationAI

No vendor-tagged fixed release was identified at time of analysis, so the primary fix is upstream fix available (PR #2396 / commit 5f636f9dcde55911f14290060b017f0cc88cd694); the released patched version is not independently confirmed. Apply that commit as a vendor patch or Go module replace directive (it bounds allocations to min(len(raw), MaxCFBStreamSizeV3 or MaxCFBStreamSizeV4) and returns ErrWorkbookFileFormat for negative or oversized EncryptionInfo/EncryptedPackage entries), then upgrade to the first tagged Excelize release after 2.11.0 that contains it once published, verifying the fix's presence rather than assuming it. Until then, the most effective control is to avoid feeding untrusted encrypted workbooks to Decrypt: if the application only expects plaintext .xlsx, reject CFB containers outright by checking for the D0 CF 11 E0 A1 B1 1A E1 magic before parsing, accepting the trade-off that legitimate password-protected files will also be refused. As a containment measure, run workbook parsing in a sandboxed subprocess under a hard cgroup/ulimit memory cap with restart-on-crash so the multi-gigabyte allocation path terminates the worker instead of the host, at the cost of needing higher limits for legitimately large files and added process-management complexity. Enforce a strict maximum accepted upload size at the API boundary (trade-off: oversized legitimate workbooks are rejected), and wrap the Decrypt call in a recover() so the negative-size 'makeslice: len out of range' panic is converted into a handled error - noting explicitly that recover() does not protect against the allocation-exhaustion variant, which ends in a fatal OOM error the runtime cannot recover. Reference the advisory at https://github.com/qax-os/excelize/security/advisories/GHSA-x2q3-8cjh-766f for updates.

Affected VersionsENISA

excelize 2.3.1, ≤ 2.11.0

Affected Packages

go github.com/xuri/excelize/v2 fix: 2.11.1-0.20260912113515-5f636f9dcde5
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 decrypts ECMA-376 encrypted workbooks by opening the container as a Microsoft Compound File Binary (CFB/OLE2) document via the mscfb reader and then locating two directory-entry streams, EncryptionInfo and EncryptedPackage, which carry the Standard or Agile encryption metadata and ciphertext. The vulnerable helper extractPart iterates CFB directory entries and, before any sector-chain or size-domain validation, executes make([]byte, entry.Size) using the attacker-controlled streamSize field from the directory entry. Because that field is fully attacker-controlled, a crafted compound file can declare a negative size (which aborts inside Go's runtime with a 'makeslice: len out of range' panic) or an extremely large size (which forces a multi-gigabyte allocation and process memory exhaustion). This is the CWE-789 class, Memory Allocation with Excessive Size Value: the allocation is sized from an untrusted header value rather than being bounded by the actual file length or by format-defined maxima. The upstream patch computes maxStreamSize as the minimum of the real input length and the CFB version-appropriate ceiling (MaxCFBStreamSizeV3 = 2^31-1 for version 3, read from bytes 26:28 of the CFB header, and MaxCFBStreamSizeV4 = 0xFFFFFFFA000 for version 4), then rejects both EncryptionInfo and EncryptedPackage entries where entry.Size < 0 or maxStreamSize < entry.Size, returning ErrWorkbookFileFormat. Note that the flaw is reachable only through the Decrypt path; ordinary parsing of unencrypted spreadsheets does not touch extractPart.

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

Unauthenticated parsing of a remotely supplied encrypted file (AV:N/AC:L/PR:N/UI:N) causing only panic/memory exhaustion, so A:H with C:N/I:N.

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, extractPart allocates a byte slice directly from an attacker-controlled CFB directory-entry size before validating the sector chain or size domain. extractPart trusts the CFB directory entry streamSize for EncryptionInfo and EncryptedPackage allocations before validating the stream. When a crafted OLE compound file declares a negative or extremely large EncryptionInfo or EncryptedPackage stream size, the declared size reaches make with a negative length or forces a multi-gigabyte allocation, allowing an attacker to panic or exhaust process memory. No fixed version is available as of this review.

Technical POC Analysis

CWE-789 (Memory Allocation with Excessive Size Value), realized in Excelize as a negative-or-unbounded allocation from attacker-controlled data.

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

The Excelize Go library (versions 2.3.1 through 2.11.0) contains a high-severity memory exhaustion and runtime panic vulnerability that can be triggered remotely by unauthenticated attackers through password-protected OLE compound Excel workbooks. Any business service that uses this library to decrypt user-supplied encrypted Excel files is at risk of denial-of-service, potentially causing downtime and disrupting critical operations. Leadership should prioritize patching or mitigating this issue because it can be exploited without authentication or user interaction, impacting availability.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include enforcing strict memory limits and timeouts on file-processing services, rate limiting requests, blocking password-protected CFB Excel uploads from untrusted sources, sandboxing decryption processes, and monitoring for crashes or memory exhaustion. Apply upstream fix (PR #2396 / commit 5f636f9) only after testing, and deploy vendor patch when available.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Medium
popular Go Excel library embedded in many backend file-processing services
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.2%
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-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-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