Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessUpload crafted .xlsx workbook to service
-
DeliveryService calls GetPivotTables on file
-
ExploitOut-of-range dataField fld indexes cache-field slice
-
ExecutionUnchecked index triggers Go slice-bounds panic
-
ImpactProcess or request worker crashes (DoS)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
|
| Exploitation Conditions | Exploitation requires an application that (1) embeds excelize 2.8.1-2.11.0, (2) parses an attacker-supplied workbook, and (3) invokes GetPivotTables on it, triggering extractPivotTableFields. The malicious workbook must contain a pivot table with either a pivot-field count mismatch against the pivot-cache field-name slice (getPivotCacheFieldsName output) or an out-of-range/negative dataField 'fld' attribute. LIMITING FACTORS: the vulnerable GetPivotTables code path must actually be reached - services that never process pivot tables are unaffected; and because the panic is unrecovered, impact depends on whether the host process isolates or recovers worker crashes. No authentication or user interaction is required once a crafted file reaches the pivot-table parsing path. |
| Impact | This is a genuine availability-only denial-of-service issue (CWE-129, improper array index validation) in the qax-os/excelize Go library, affecting versions 2.8.1 through 2.11.0. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) scoring 8.7 reflects a high availability impact with no confidentiality or integrity impact, consistent with a slice-bounds panic that crashes the process or request worker. The high base score is driven almost entirely by the VA:H availability metric and network reachability - it is NOT a code-execution or data-disclosure flaw, so the headline severity overstates real-world urgency for many deployments. No EPSS score, CISA KEV listing, or SSVC decision data was provided in the input, so exploitation-probability and automatability signals cannot be weighed. There is no public exploit identified at time of analysis; the referenced GitHub PR #2435 and commit 6258dce are the vendor FIX (adding bounds checks and a regression test), not weaponized exploit code, and must not be confused with active exploitation. A key practical limiter the CVSS vector does not capture: the panic only triggers in applications that both parse attacker-controlled workbooks AND call GetPivotTables, so AV:N is accurate only for services that expose that code path to untrusted files. Notably, no fixed version is available as of this review, which raises operational risk for affected consumers despite the moderate real impact. |
| Exploit ScenarioDerived | An attacker uploads a crafted .xlsx workbook to a web service or pipeline that uses Excelize and calls GetPivotTables, embedding a pivot table whose dataField 'fld' attribute is out of range or whose pivot-field count mismatches the pivot-cache field-name slice. When the library indexes the field-name slice without bounds checking, Go raises an unrecovered slice-bounds panic that escapes the library and crashes the request worker or entire process, causing denial of service. No public proof-of-concept exploit code was identified, though the vendor's regression test demonstrates the triggering condition. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Go slice-bounds panic in the Excelize spreadsheet library versions 2.8.1 through 2.11.0 lets a crafted .xlsx workbook crash any process or request worker that calls GetPivotTables. The library parses pivot-table field indices separately from pivot-cache field names and indexes one slice with the other without bounds checks, so a workbook with a pivot-field count mismatch or an out-of-range/negative dataField fld value triggers an unrecovered runtime panic that escapes the library (CVSS 3.1 assessed 8.7, availability-only; no authentication or user interaction required from the caller's perspective). No fixed release version is confirmed in the advisory data - only the upstream fix commit - and no public exploit code was identified at time of analysis, though exploitation requires no more than delivering a malicious workbook to a service that parses pivot tables.
RemediationAI
No vendor-tagged fixed release is confirmed in the available data, so the primary remediation is to apply the upstream bounds-check fix from PR #2435 (commit 6258dcebc4e2a2aed985c38a08098dfd908521d1), either by upgrading to the first tag that contains it once published or by vendoring/patching pivotTable.go to add the two guards - 'if fieldIdx >= len(order) { continue }' in pivotCacheReader and 'if field.Fld < 0 || field.Fld >= len(order) { continue }' in extractPivotTableFields - and re-running the regression test TestExtractPivotTableFields; track the advisory at https://github.com/qax-os/excelize/security/advisories/GHSA-mx22-3794-2vpv for the tagged version. If patching is not immediately possible, the highest-value compensating controls are: (1) do not call GetPivotTables (or any pivot-table API) on untrusted uploaded workbooks - a policy change that loses pivot-table support for those files but eliminates the vulnerable path entirely; (2) run workbook parsing in an isolated, restartable worker process or sandbox so an unrecovered panic kills only that worker, at the cost of added orchestration complexity and crash-driven restarts; (3) wrap all excelize parse calls in a deferred recover() at the handler boundary to convert the panic into a 4xx error - this contains the crash but provides no protection past the point where a Go panic cannot be safely resumed, and must not be treated as a fix; (4) if the deployment can tolerate the feature loss, pin to an excelize version earlier than 2.8.1, where this pivot-table code path is absent, while noting that such versions carry other unfixed issues and should be treated as a temporary stopgap.
Affected VersionsENISA
Affected Packages
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 pure-Go library for reading and writing Microsoft Excel (OOXML) files, and GitHub's qax-os/excelize is the CPE-identified package (cpe:2.3:a:qax-os:excelize). The vulnerability is CWE-129, improper validation of array index, rooted in the pivot-table parsing path: extractPivotTableFields derives field names from getPivotCacheFieldsName (which reflects the pivotCacheDefinition's cacheFields) and then uses the pivot table's own dataField fld attributes - and pivot-field indices - directly as slice subscripts. Because the two structures are parsed independently, a workbook author can make them disagree: supplying more pivot fields than cache fields, or a fld value that is negative or >= the length of the cache-field-name slice, causes an out-of-range index. In Go an out-of-range slice access raises a runtime panic rather than returning an error; since the library does not recover it, the panic propagates out of the caller's goroutine and terminates the process or the request worker. The upstream fix (PR #2435, commit 6258dcebc4e2a2aed985c38a08098dfd908521d1) adds two guards - 'if fieldIdx >= len(order) { continue }' in pivotCacheReader and 'if field.Fld < 0 || field.Fld >= len(order) { continue }' in extractPivotTableFields - turning the panic into a skip, with a regression test confirming negative and out-of-range field indices are ignored while valid fields still resolve.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Unauthenticated network-reachable crafted-file parsing causes an unrecovered panic, so AV:N/PR:N/UI:N with availability-only impact (A:H) and no confidentiality or integrity effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.8.1 to 2.11.0, separately parsed pivot-table field indices are used to index the pivot-cache field-name slice without bounds checks. extractPivotTableFields uses getPivotCacheFieldsName output while processing GetPivotTables and trusts the dataField fld attribute as an index. When a crafted workbook supplies a pivot-field count mismatch or an out-of-range dataField fld value before GetPivotTables is called, the unchecked index causes a Go slice-bounds panic that escapes the library, allowing an attacker to crash the process or request worker. No fixed version is available as of this review.
Technical POC Analysis
CWE-129, Improper Validation of Array Index (the CVE record assigns this; note the GHSA text itself lists "Weaknesses: No CWEs", so the mapping comes from the CVE assignment, not the upstream advisor…
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Excelize spreadsheet library versions 2.8.1 through 2.11.0 contain a slice-bounds panic that allows a crafted .xlsx workbook to crash any service that calls the GetPivotTables function. This availability-only vulnerability, rated High (CVSS 8.7), can cause denial of service for applications that parse pivot tables, disrupting business operations if such services are customer-facing or critical. No vendor-released patch identified at time of analysis, and no public exploit identified at time of analysis, but leadership should prioritize mitigation because exploitation requires only delivering a malicious workbook to the affected service.
Interim mitigations: validate pivot table field counts and dataField fld values before processing; restrict file uploads to trusted sources; run affected services with least privilege and sandboxing; deploy web application firewall rules to inspect and block malicious .xlsx files; monitor for process crashes as a potential indicator of exploitation.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Denial of service in the Excelize Go library (github.com/xuri/excelize/v2, a.k.a. qax-os/excelize) before 2.11.0 allows
Denial of service in the Excelize Go library (versions 2.1.0 through 2.11.0) allows an attacker-controlled spreadsheet t
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-
Uncontrolled memory and CPU consumption in Excelize (qax-os/excelize), the widely used Go library for reading and writin
Denial of service in Excelize 2.9.0 through 2.11.0 allows a crafted spreadsheet to panic and terminate a Go process that
Denial of service in the Excelize Go library (versions 2.3.1 through 2.11.0) allows unauthenticated remote attackers to
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
Uncontrolled recursion in the Excelize Go library (versions 2.8.1 through 2.11.0) allows a fatal Go stack overflow that
Denial of service in Excelize versions 2.3.1 through 2.11.0 allows unauthenticated remote attackers to terminate the cal
Memory exhaustion and runtime panic in the Excelize Go library (versions 2.3.1 through 2.11.0) let unauthenticated remot
Resource exhaustion in the Excelize Go library (versions 2.1.0 through 2.11.0) lets a crafted .xlsx workbook drive exces
Panic-triggering denial of service in the Excelize Go library (all versions prior to 2.11.0) allows any actor who can su
EUVD-2026-94526
GHSA-mx22-3794-2vpv
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB