github.com/xuri/excelize/v2
Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets
Activity
- Latest release
- 3mo ago
- Total releases
- 22
- Cadence
- ~4 months
- Last 12 months
- 2
Reach
- Stars
- 20.8k
Details
- First release
- May 02, 2019
| Version | Released | |
|---|---|---|
v2.11.0
minor
15 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107213
GO-2026-6687
GHSA-r7x5-4969-99p7
Oct 19, 2026
Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Fixed in
2.11.1-0.20260929015830-8ffeb07ec9a3
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107211
GO-2026-6695
GHSA-mx22-3794-2vpv
Oct 19, 2026
Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Fixed in
2.11.1-0.20261003002531-6258dcebc4e2
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107216
GO-2026-6688
GHSA-wp2g-vpjj-g53r
Oct 19, 2026
Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Fixed in
2.11.1-0.20260911060113-ea12859e43c6
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107218
GHSA-8jjq-8j9w-m2v6
Oct 07, 2026
Excelize: RIGHT() on supplementary-plane text slices with a negative index and panics
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
What makes it worth reporting is A 6,077-byte file containing two U+1D7D9 characters in A1 and RIGHT(A1,3) in B1 was created and then opened in a separate program without recovery enabled:
So it is a regression, not an old defect. Commit a880146 (2026-01-16) moved the guard to RIGHT only. RIGHTB reaches the same function but takes the byte branch at 14225, which is internally consistent, and I probed MID and MIDB from 1 to 5 with no panic. It is the same negative-index family as GHSA-fx5j-qcqg-grpf and GHSA-48hm-4h8j-58fg, though those are shared-string lookups in the reader rather than a unit mismatch in the formula library. Fixed in
2.11.1-0.20260908032718-ecd99d761fe0
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.11.0
minor
Dependencies (9)
+ 1 more |
|
v2.10.1
patch
18 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107213
GO-2026-6687
GHSA-r7x5-4969-99p7
Oct 19, 2026
Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Fixed in
2.11.1-0.20260929015830-8ffeb07ec9a3
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107211
GO-2026-6695
GHSA-mx22-3794-2vpv
Oct 19, 2026
Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Fixed in
2.11.1-0.20261003002531-6258dcebc4e2
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107216
GO-2026-6688
GHSA-wp2g-vpjj-g53r
Oct 19, 2026
Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Fixed in
2.11.1-0.20260911060113-ea12859e43c6
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107218
GHSA-8jjq-8j9w-m2v6
Oct 07, 2026
Excelize: RIGHT() on supplementary-plane text slices with a negative index and panics
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
What makes it worth reporting is A 6,077-byte file containing two U+1D7D9 characters in A1 and RIGHT(A1,3) in B1 was created and then opened in a separate program without recovery enabled:
So it is a regression, not an old defect. Commit a880146 (2026-01-16) moved the guard to RIGHT only. RIGHTB reaches the same function but takes the byte branch at 14225, which is internally consistent, and I probed MID and MIDB from 1 to 5 with no panic. It is the same negative-index family as GHSA-fx5j-qcqg-grpf and GHSA-48hm-4h8j-58fg, though those are shared-string lookups in the reader rather than a unit mismatch in the formula library. Fixed in
2.11.1-0.20260908032718-ecd99d761fe0
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.10.1
patch
Dependencies (9)
+ 1 more |
|
v2.10.0
minor
17 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107213
GO-2026-6687
GHSA-r7x5-4969-99p7
Oct 19, 2026
Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Fixed in
2.11.1-0.20260929015830-8ffeb07ec9a3
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107211
GO-2026-6695
GHSA-mx22-3794-2vpv
Oct 19, 2026
Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Fixed in
2.11.1-0.20261003002531-6258dcebc4e2
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107216
GO-2026-6688
GHSA-wp2g-vpjj-g53r
Oct 19, 2026
Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Fixed in
2.11.1-0.20260911060113-ea12859e43c6
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.10.0
minor
Dependencies (9)
+ 1 more |
|
v2.9.1
patch
17 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107213
GO-2026-6687
GHSA-r7x5-4969-99p7
Oct 19, 2026
Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Fixed in
2.11.1-0.20260929015830-8ffeb07ec9a3
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107211
GO-2026-6695
GHSA-mx22-3794-2vpv
Oct 19, 2026
Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Fixed in
2.11.1-0.20261003002531-6258dcebc4e2
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107216
GO-2026-6688
GHSA-wp2g-vpjj-g53r
Oct 19, 2026
Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Fixed in
2.11.1-0.20260911060113-ea12859e43c6
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.9.1
patch
Dependencies (9)
+ 1 more |
|
v2.9.0
minor
17 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107213
GO-2026-6687
GHSA-r7x5-4969-99p7
Oct 19, 2026
Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Nil-pointer dereference in GetSlicers when a worksheet has extLst present but no drawing element in github.com/xuri/excelize Fixed in
2.11.1-0.20260929015830-8ffeb07ec9a3
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107211
GO-2026-6695
GHSA-mx22-3794-2vpv
Oct 19, 2026
Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Fixed in
2.11.1-0.20261003002531-6258dcebc4e2
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107216
GO-2026-6688
GHSA-wp2g-vpjj-g53r
Oct 19, 2026
Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Fixed in
2.11.1-0.20260911060113-ea12859e43c6
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.9.0
minor
Dependencies (9)
+ 1 more |
|
v2.8.1
patch
16 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107211
GO-2026-6695
GHSA-mx22-3794-2vpv
Oct 19, 2026
Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Panic via unchecked pivot-cache field index in github.com/xuri/excelize/v2 Fixed in
2.11.1-0.20261003002531-6258dcebc4e2
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107216
GO-2026-6688
GHSA-wp2g-vpjj-g53r
Oct 19, 2026
Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Mutually-referencing array formulas recurse unboundedly, causing a fatal stack overflow in github.com/xuri/excelize Fixed in
2.11.1-0.20260911060113-ea12859e43c6
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.8.1
patch
Dependencies (9)
+ 1 more |
|
v2.8.0
minor
14 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.8.0
minor
Dependencies (9)
+ 1 more |
|
v2.7.1
patch
13 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107220
GHSA-g27h-8qhm-6pff
Oct 07, 2026
Excelize: Panic in cellInRange on a worksheet with an empty mergeCell ref
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA worksheet containing Where it is
The caller that can hand it an empty slice,
The
ImpactAny consumer that opens an untrusted workbook and reads a cell panics. The loop scans every merged cell, so any cell reference triggers it, not a specific one. Affected entry points include There is no option or flag involved; opening the file succeeds and the panic fires on the first cell read. Unless the caller wraps the call in This is a regression. Commit a34c81e (PR #1500, 2023-03-20) replaced Proof of conceptExecuted at HEAD. Build a minimal xlsx whose
Then:
Observed, running against the repository at HEAD:
For context on how targeted this is, I ran a battery of 38 crafted files covering data validation, conditional formatting, cell and row references, number formats, cols, hyperlinks, dimension, shared strings and tables. Only the empty-ref merge cell panicked; everything else returned a clean error. The other parsing paths look well guarded. Suggested fixSkip the entry when the rectangle is empty, before the range test:
Credit goes to arpitjain099. Fixed in
2.11.1-0.20260820023833-99903a3240e5
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.7.1
patch
Dependencies (9)
+ 1 more |
|
v2.7.0
minor
12 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107222
GHSA-rxcj-4pj5-74gr
Oct 07, 2026
Excelize: GetConditionalFormats indexes conditional-formatting rule sub-elements with no length or nil check
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Summary
Where it isAll three sinks are in
The branch above it handles
The guard here is Who the attacker isAnyone who can hand a spreadsheet to a service that opens it and calls ReproductionThree minimal The worksheet fragment for the
for
and for
Observed against master
One honesty note on impact. These are ordinary Go panics, not fatal errors, so a caller that wraps the call in Suggested fixLength-check Affected versions
Fixed in
2.11.1-0.20260812075026-be7a16390fa6
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.7.0
minor
Dependencies (9)
+ 1 more |
|
v2.6.1
patch
11 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.6.1
patch
Dependencies (9)
+ 1 more |
|
v2.6.0
minor
11 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.6.0
minor
Dependencies (9)
+ 1 more |
|
v2.5.0
minor
11 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.5.0
minor
Dependencies (8)
|
|
v2.4.1
patch
11 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.4.1
patch
Dependencies (8)
|
|
v2.4.0
minor
11 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.4.0
minor
Dependencies (8)
|
|
v2.3.2
patch
11 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.3.2
patch
Dependencies (8)
|
|
v2.3.1
patch
11 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107219
GHSA-jrfj-fhj2-jjvm
Oct 07, 2026
Excelize: Unbounded spinCount in agile decryption burns CPU during OpenFile
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Opening a file whose first eight bytes are the OLE magic number sends excelize down the decryption path whether or not the caller set a password, or supports encrypted workbooks at all.
A 3072-byte file with spinCount 100000000 makes
The loop arrived with Excel and LibreOffice write spinCount 100000, which costs 61ms here, so a ceiling well above the legitimate value would cost real files nothing. This is availability only, and it is not a vulnerability for a program that only opens files its own operator produced. Fixed in
2.11.1-0.20260906004932-2badfcd5841d
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.3.1
patch
Dependencies (8)
|
|
v2.3.0
minor
10 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.3.0
minor
Dependencies (5)
|
|
v2.2.0
minor
10 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.2.0
minor
Dependencies (5)
|
|
v2.1.0
minor
10 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107223
GHSA-fq3v-74gv-27gm
Oct 07, 2026
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
High
Network
Low
None
SummaryThe Confirmed at Details
The contrast that makes this an oversight rather than a design decision is inside the callers themselves. The row axis has the guard this axis is missing: GHSA-h69g-9hx6-f3v4 capped Public entry points that flatten the existing columns: PoCExecuted in-package: crafted a real xlsx, rezipped with an injected
Measured:
Growth is linear in ImpactAny service that opens an untrusted spreadsheet and calls a column mutator. The input is a few dozen bytes of XML inside an otherwise ordinary workbook, no authentication is involved beyond whatever gates the upload, and the process is either wedged for minutes or killed by the OOM reaper. Availability only; no read or write primitive here. Suggested fixValidate Why this is not GHSA-h69g-9hx6-f3v4 or GHSA-q5j5-6p94-4gwcBoth of those are row-axis allocation bounds, and both fixes cap at Fixed in
2.11.1-0.20260807015645-a54c578af309
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107224
GHSA-fw94-4wwp-w8pw
Oct 07, 2026
Excelize: A Zip64 uncompressed-size of 2^63 panics OpenFile/OpenReader
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
SummaryA Zip64 uncompressed-size of 2^63 casts to a negative int64 that bypasses the unzip-size guard and reaches make([]byte, 0, negativeCap) A Zip64 uncompressed-size in the range [2^63, 2^64) casts to a negative The guard, at
The same negative value also fails the two stream-to-temp checks at
The asymmetry inside this same function is the clearest way to see it: Reproduction, executed against HEAD
|
v2.1.0
minor
Dependencies (4)
|
|
v2.0.2
patch
8 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-59161
GO-2026-6453
GHSA-q5j5-6p94-4gwc
Sep 16, 2026
Unbounded memory allocation via streaming row reader in github.com/xuri/excelize In github.com/xuri/excelize/v2, the streaming worksheet reader used by Rows and GetRows does not enforce the maximum row limit (TotalRows) on row "r" attributes. A crafted spreadsheet with an out-of-bounds row index causes GetRows to allocate empty row slices up to the specified row number, leading to excessive memory consumption and denial of service. Fixed in
2.11.0
References Updated Sep 17, 2026 · Source: OSV.dev
CVE-2026-59162
GO-2026-6452
GHSA-fx5j-qcqg-grpf
Sep 16, 2026
Panic via negative shared-string index in github.com/xuri/excelize In github.com/xuri/excelize/v2, parsing a spreadsheet cell with a negative shared-string index causes a runtime panic. The shared-string lookup in xlsxC.getValueFrom checks only the upper bound of the parsed index against the shared-string slice length, causing negative indices (such as -1) to bypass validation and trigger an out-of-bounds slice access when reading cells via APIs such as GetCellValue or GetRows. Fixed in
2.11.0
References Updated Sep 24, 2026 · Source: OSV.dev
CVE-2026-54063
GO-2026-5960
GHSA-h69g-9hx6-f3v4
Jul 27, 2026
Excelize: Unbounded Row Index Allocation in Worksheet Parser (checkSheet OOM/Panic DoS) in github.com/xuri/excelize Excelize: Unbounded Row Index Allocation in Worksheet Parser (checkSheet OOM/Panic DoS) in github.com/xuri/excelize Fixed in
2.11.0
References Updated Jul 27, 2026 · Source: OSV.dev |
v2.0.2
patch
Dependencies (3)
|
|
v2.0.1
patch
8 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-59161
GO-2026-6453
GHSA-q5j5-6p94-4gwc
Sep 16, 2026
Unbounded memory allocation via streaming row reader in github.com/xuri/excelize In github.com/xuri/excelize/v2, the streaming worksheet reader used by Rows and GetRows does not enforce the maximum row limit (TotalRows) on row "r" attributes. A crafted spreadsheet with an out-of-bounds row index causes GetRows to allocate empty row slices up to the specified row number, leading to excessive memory consumption and denial of service. Fixed in
2.11.0
References Updated Sep 17, 2026 · Source: OSV.dev
CVE-2026-59162
GO-2026-6452
GHSA-fx5j-qcqg-grpf
Sep 16, 2026
Panic via negative shared-string index in github.com/xuri/excelize In github.com/xuri/excelize/v2, parsing a spreadsheet cell with a negative shared-string index causes a runtime panic. The shared-string lookup in xlsxC.getValueFrom checks only the upper bound of the parsed index against the shared-string slice length, causing negative indices (such as -1) to bypass validation and trigger an out-of-bounds slice access when reading cells via APIs such as GetCellValue or GetRows. Fixed in
2.11.0
References Updated Sep 24, 2026 · Source: OSV.dev
CVE-2026-54063
GO-2026-5960
GHSA-h69g-9hx6-f3v4
Jul 27, 2026
Excelize: Unbounded Row Index Allocation in Worksheet Parser (checkSheet OOM/Panic DoS) in github.com/xuri/excelize Excelize: Unbounded Row Index Allocation in Worksheet Parser (checkSheet OOM/Panic DoS) in github.com/xuri/excelize Fixed in
2.11.0
References Updated Jul 27, 2026 · Source: OSV.dev |
v2.0.1
patch
Dependencies (2)
|
|
v2.0.0
initial
8 CVEs
CVE-2026-107215
GO-2026-6689
GHSA-x2q3-8cjh-766f
Oct 19, 2026
Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Panic and memory exhaustion via unbounded CFB stream allocation in github.com/xuri/excelize Fixed in
2.11.1-0.20260912113515-5f636f9dcde5
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107214
GO-2026-6684
GHSA-2j4c-ffch-9f23
Oct 19, 2026
Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Excelize Decrypt: unrecoverable panics on malformed OLE/CFB encrypted workbooks in github.com/xuri/excelize Fixed in
2.11.1-0.20260915055537-22f76f9acb94
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107212
GO-2026-6685
GHSA-jw42-f3rr-4cc3
Oct 19, 2026
Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Excelize: Unbounded row number in Rows.Columns makes GetRows and the Rows iterator loop for days in github.com/xuri/excelize Fixed in
2.11.1-0.20260930021559-01a9ff32fb3c
References Updated Oct 19, 2026 · Source: OSV.dev
CVE-2026-107217
GHSA-c85p-xxjj-2r75
Oct 07, 2026
Excelize ColumnNameToNumber: int64 overflow yields an out-of-domain coordinate with nil error, causing negative slice index panic on r="0" rows
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
When normalizing a Details
PoCA standalone program (public API only) was provided to the maintainer by email ( ImpactA <1 KB crafted Proposed fixBound the accumulated value inside the loop: check Fixed in
2.11.1-0.20260910071107-696050fbf14e
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-107221
GHSA-8mcq-6wmr-jrjv
Oct 07, 2026
Excelize: a row whose earlier cell has a higher column reference than its last cell panics index out of range on almost every worksheet read API
6.5
/ 10
Medium
Network
Low
None
Required
Unchanged
None
None
High
Affected versions and vulnerable location
Root causeThe slice is sized from the last cell's column, but cells are not required to be column-sorted in the XML. A cell that appears earlier in the row but references a higher column than the last cell has Attacker model and reachabilityAny service that opens an untrusted spreadsheet and calls a worksheet API that goes through Proof of concept (executed)Crafted
Confirming grep:
Suggested fixSize Fixed in
2.11.1-0.20260816084418-46a5eb289448
References Updated Oct 07, 2026 · Source: OSV.dev
CVE-2026-59161
GO-2026-6453
GHSA-q5j5-6p94-4gwc
Sep 16, 2026
Unbounded memory allocation via streaming row reader in github.com/xuri/excelize In github.com/xuri/excelize/v2, the streaming worksheet reader used by Rows and GetRows does not enforce the maximum row limit (TotalRows) on row "r" attributes. A crafted spreadsheet with an out-of-bounds row index causes GetRows to allocate empty row slices up to the specified row number, leading to excessive memory consumption and denial of service. Fixed in
2.11.0
References Updated Sep 17, 2026 · Source: OSV.dev
CVE-2026-59162
GO-2026-6452
GHSA-fx5j-qcqg-grpf
Sep 16, 2026
Panic via negative shared-string index in github.com/xuri/excelize In github.com/xuri/excelize/v2, parsing a spreadsheet cell with a negative shared-string index causes a runtime panic. The shared-string lookup in xlsxC.getValueFrom checks only the upper bound of the parsed index against the shared-string slice length, causing negative indices (such as -1) to bypass validation and trigger an out-of-bounds slice access when reading cells via APIs such as GetCellValue or GetRows. Fixed in
2.11.0
References Updated Sep 24, 2026 · Source: OSV.dev
CVE-2026-54063
GO-2026-5960
GHSA-h69g-9hx6-f3v4
Jul 27, 2026
Excelize: Unbounded Row Index Allocation in Worksheet Parser (checkSheet OOM/Panic DoS) in github.com/xuri/excelize Excelize: Unbounded Row Index Allocation in Worksheet Parser (checkSheet OOM/Panic DoS) in github.com/xuri/excelize Fixed in
2.11.0
References Updated Jul 27, 2026 · Source: OSV.dev |
v2.0.0
initial
Dependencies (2)
|