CVE-2026-107223 json
Excelize: Unbounded <col max> attribute is loaded with no MaxColumns check and expanded per-column by flatCols(), so any column mutator hangs or OOMs the process
published 2026-10-07 32 d ago modified 2026-11-05 3 d ago also GHSA-fq3v-74gv-27gm , GO-2026-6678 , EUVD-2026-94554
- cvss
- 7.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 31%
- public exploits
- 0
- none known
Summary
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.1.0 to 2.11.0, flatCols expands file-loaded column ranges without validating Min and Max against the worksheet column limit. SetColWidth reaches flatCols, which expands xlsxCol.Min through xlsxCol.Max without enforcing MaxColumns. When a crafted worksheet supplies an oversized col max attribute and the application invokes a column mutator, flatCols performs a deep copy and append for every attacker-selected column number, allowing an attacker to consume excessive CPU and memory or trigger OOM. No fixed version is available as of this review.
Patch / fix
- go github.com/xuri/excelize/v2 2.11.1-0.20260807015645-a54c578af309
- github.com/qax-os/excelize@a54c578 commit
- github.com/qax-os/excelize#2370 pull request
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 32 d ago
Exploit prediction
0.37% chance of exploitation in the next 30 days, higher than 31% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/qax-os/excelize/security/advisories/GHSA-fq3v-74gv-27gm referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 7.1 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
| CNA | 4.0 | 7.1 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/xuri/excelize/v2 | >=2.1.0, <2.11.1-0.20260807015645-a54c578af309 <2.11.1-0.20260807015645-a54c578af309 |
2.11.1-0.20260807015645-a54c578af309 |
| go | github.com/360EntSecGroup-Skylar/excelize/v2 | >=2.1.0 |
no fix listed |
Affected products
- qax-os excelize
Classification
- Weakness
-
- CWE-789 Memory Allocation with Excessive Size Value
References
-
github.com
/qax-os/excelize/pull/2370
web, issue-tracking, patch
-
github.com
/qax-os/excelize/commit/a54c578af309fa81f448143ed2b7a91192cc58a7
web, patch
-
github.com
/qax-os/excelize/security/advisories/GHSA-fq3v-74gv-27gm
web, exploit, vendor-advisory, advisory
-
github.com
/qax-os/excelize
package
Sources
- CVE List CVE-2026-107223
- GitHub Advisory GHSA-fq3v-74gv-27gm
- NVD CVE-2026-107223
- OSV GO-2026-6678
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.