# CVE-2026-107221: Excelize row cell reordering panic in worksheet read

Source: https://junglewise.ai/threats/cve-2026-107221-excelize-a-row-whose-earlier-cell-has-a-higher-column-reference  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-10-07. Updated: 2026-10-07  
License: CC BY 4.0 with a link back

CVE-2026-107221 · Severity: medium · CVSS 6.5 · Published 2026-10-07

Excelize is a Go library for reading and writing Excel spreadsheets. A maliciously crafted spreadsheet can cause the library to crash when common worksheet operations are performed, leading to a denial of service for any application using the library to process untrusted files.

Technologies: [github.com/xuri/excelize/v2 (Go)](https://junglewise.ai/threats/technologies/github-com-xuri-excelize-v2). Vendors: [Go](https://junglewise.ai/threats/vendors/go).

## Quick answers

**Is CVE-2026-107221 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-107221 being exploited in the wild.

**How severe is CVE-2026-107221?** Medium severity, with a CVSS score of 6.5, published 7 October 2026.

**Which products and versions are affected?** Excelize project Excelize all versions prior to fix; github.com/xuri/excelize/v2 (Go) >= 2.0.0, < 2.11.1-0.20260816084418-46a5eb289448, SEMVER:introduced=0,fixed=2.11.1-0.20260816084418-46a5eb289448, SEMVER:introduced=2.0.0,fixed=2.11.1-0.20260816084418-46a5eb289448.

**Is there a fix for CVE-2026-107221?** Yes. github.com/xuri/excelize/v2 (Go): upgrade to 2.11.1-0.20260816084418-46a5eb289448 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-107221 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-107221?** Check whether you run Excelize project Excelize or github.com/xuri/excelize/v2 (Go) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- github.com/xuri/excelize/v2 (Go): upgrade to 2.11.1-0.20260816084418-46a5eb289448 or later

  ```sh
  go get github.com/xuri/excelize/v2@v2.11.1-0.20260816084418-46a5eb289448
  ```


## Technical details

The vulnerability exists in the checkRow function which sizes a target slice based on the last cell's column position in document order, then attempts to scatter all cells into that slice by their column index. If an earlier cell references a higher column than the final cell, an out-of-bounds write occurs. This affects all non-streaming worksheet APIs (GetCellValue, SetCellValue, CalcCellValue, GetMergeCells, etc.) that invoke workSheetReader, but not the streaming GetRows path.

## Affected products

- Excelize project Excelize all versions prior to fix

## Identifiers

- CVE-2026-107221
- GHSA-8mcq-6wmr-jrjv
- GO-2026-6676

## Timeline

- 2026-10-07: disclosed
- 2026-10-07: advisory: GHSA-8mcq-6wmr-jrjv published

## Related threats

- [Excelize unchecked pivot-cache field index bounds in extractPivotTableFields](https://junglewise.ai/threats/cve-2026-107211-excelize-unchecked-pivot-cache-field-index-in)
- [Excelize unbounded row iteration denial of service](https://junglewise.ai/threats/cve-2026-107212-excelize-unbounded-row-number-in-rows-columns-makes-getrows-and)
- [Excelize nil-pointer dereference in GetSlicers](https://junglewise.ai/threats/cve-2026-107213-excelize-nil-pointer-dereference-in-getslicers-when-a-worksheet)
- [Excelize Decrypt panic on malformed OLE encrypted workbooks](https://junglewise.ai/threats/cve-2026-107214-excelize-decrypt-unrecoverable-panics-on-malformed-ole-cfb)
- [Excelize extractPart unbounded buffer allocation DoS](https://junglewise.ai/threats/cve-2026-107215-excelize-extractpart-allocates-attacker-controlled-unbounded-and)
