Description
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.10.1 to 2.11.0, RIGHT validates the requested length with UTF-16 code-unit counts but slices a rune array using Unicode code-point counts. RIGHT reaches leftRight through CalcCellValue, where countUTF16String validates one unit but utf8.RuneCountInString supplies the slice index in another. When RIGHT evaluates supplementary-plane text with a requested character count between the rune count and UTF-16 code-unit count, the inconsistent units produce a negative rune-slice index, allowing an attacker to panic during formula evaluation. No fixed version is available as of this review.
Published: 2026-10-07
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via panic
Action: Assess Impact
AI Analysis

Impact

Excelize, a Go library for reading and writing Microsoft Excel spreadsheets, contains a bug in its RIGHT() function. The function verifies the requested length against UTF‑16 code‑unit counts but performs slicing using Unicode code‑point counts. When the input contains supplementary‑plane characters, the mismatch can produce a negative slice index. This causes a panic during formula evaluation, which terminates the application and results in a denial of service. The vulnerability is rated a moderate CVSS score of 5.3, indicating that it can lead to application downtime if exploited but does not allow arbitrary code execution or data exfiltration.

Affected Systems

The issue affects qax‑os Excelize versions 2.10.1 through 2.11.0, the releases that introduced the mismatch in the RIGHT() implementation. No fixed version is available as of this review, so all installations within that range are vulnerable.

Risk and Exploitability

The CVSS score of 5.3 classifies the vulnerability as moderate. The EPSS score is not provided, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is a maliciously crafted spreadsheet that contains supplementary‑plane characters and is processed by an application using Excelize to evaluate formulas. Based on the description, it is inferred that an attacker could place such a spreadsheet in an environment where files are automatically parsed, triggering the panic and causing a service interruption. No public exploit has been reported, but the deterministic nature of the crash makes it a clear operational risk for systems that rely on Excelize for spreadsheet handling.

Generated by OpenCVE AI on October 7, 2026 at 19:51 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Validate or sanitize input strings to ensure the rune count does not exceed the UTF‑16 length before calling RIGHT()
  • Use alternative string manipulation functions or escape supplementary‑plane characters to avoid triggering the panic
  • Continuously monitor the qax‑os Excelize repository and apply any new release that removes the mismatch bug as soon as it becomes available

Generated by OpenCVE AI on October 7, 2026 at 19:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-8jjq-8j9w-m2v6 Excelize: RIGHT() on supplementary-plane text slices with a negative index and panics
History

Tue, 13 Oct 2026 14:30:00 +0000

Type Values Removed Values Added
First Time appeared Excelize
Excelize excelize
CPEs cpe:2.3:a:excelize:excelize:*:*:*:*:*:go:*:*
Vendors & Products Excelize
Excelize excelize

Wed, 07 Oct 2026 22:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 07 Oct 2026 20:15:00 +0000

Type Values Removed Values Added
First Time appeared Qax-os
Qax-os excelize
Vendors & Products Qax-os
Qax-os excelize

Wed, 07 Oct 2026 18:45:00 +0000

Type Values Removed Values Added
Description Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.10.1 to 2.11.0, RIGHT validates the requested length with UTF-16 code-unit counts but slices a rune array using Unicode code-point counts. RIGHT reaches leftRight through CalcCellValue, where countUTF16String validates one unit but utf8.RuneCountInString supplies the slice index in another. When RIGHT evaluates supplementary-plane text with a requested character count between the rune count and UTF-16 code-unit count, the inconsistent units produce a negative rune-slice index, allowing an attacker to panic during formula evaluation. No fixed version is available as of this review.
Title Excelize: RIGHT() on supplementary-plane text slices with a negative index and panics
Weaknesses CWE-129
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L'}


Subscriptions

Excelize Excelize
Qax-os Excelize
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-07T22:05:36.155Z

Reserved: 2026-10-07T14:34:14.816Z

Link: CVE-2026-107218

cve-icon Vulnrichment

Updated: 2026-10-07T22:03:47.687Z

cve-icon NVD

Status : Analyzed

Published: 2026-10-07T19:17:34.120

Modified: 2026-10-13T14:23:29.317

Link: CVE-2026-107218

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-07T20:00:12Z

Weaknesses
  • CWE-129

    Improper Validation of Array Index