← Back to CVE Explorer

CVE-2026-54063

Full vulnerability record from the local CVENow database.

Description

Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. Prior to 2.11.0, the checkSheet() function in github.com/xuri/excelize/v2 uses an attacker-controlled <row r="N"> XML attribute value directly as the length argument to make([]xlsxRow, row) without validating it against the Excel row limit (TotalRows = 1,048,576). A specially crafted XLSX file can trigger two denial-of-service variants: (A) an out-of-memory process kill when r=2147483647 forces a ~16 GB allocation attempt, and (B) a runtime panic via out-of-bounds slice indexing when r=-1. Any service that opens attacker-supplied XLSX files and calls GetCellValue is affected. No authentication is required. This issue is fixed in version 2.11.0.

Severity
HIGH
CVSS score
7.5 (v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-07-10 17:16:58.440000
Last modified
2026-10-25 15:10:00.147000
View original CVE JSON
{
  "id": "CVE-2026-54063",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-10T17:16:58.440",
  "lastModified": "2026-10-25T15:10:00.147",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. Prior to 2.11.0, the checkSheet() function in github.com/xuri/excelize/v2 uses an attacker-controlled <row r=\"N\"> XML attribute value directly as the length argument to make([]xlsxRow, row) without validating it against the Excel row limit (TotalRows = 1,048,576). A specially crafted XLSX file can trigger two denial-of-service variants: (A) an out-of-memory process kill when r=2147483647 forces a ~16 GB allocation attempt, and (B) a runtime panic via out-of-bounds slice indexing when r=-1. Any service that opens attacker-supplied XLSX files and calls GetCellValue is affected. No authentication is required. This issue is fixed in version 2.11.0."
    },
    {
      "lang": "es",
      "value": "Excelize es una biblioteca del lenguaje Go para leer y escribir hojas de cálculo de Microsoft Excel. Antes de la versión 2.11.0, la función checkSheet() en github.com/xuri/excelize/v2 utiliza un valor de atributo XML <row r=’N’> controlado por un atacante directamente como argumento de longitud para make([]xlsxRow, row) sin validarlo contra el límite de filas de Excel (TotalRows = 1,048,576). Un archivo XLSX especialmente diseñado puede desencadenar dos variantes de denegación de servicio: (A) una terminación de proceso por falta de memoria cuando r=2147483647 fuerza un intento de asignación de ~16 GB, y (B) un pánico en tiempo de ejecución a través de la indexación de segmentos fuera de límites cuando r=-1. Cualquier servicio que abra archivos XLSX suministrados por un atacante y llame a GetCellValue se ve afectado. No se requiere autenticación. Este problema se solucionó en la versión 2.11.0."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "qax-os",
          "product": "excelize",
          "versions": [
            {
              "version": "< 2.11.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
          "baseScore": 7.5,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "NONE",
          "integrityImpact": "NONE",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 3.6
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-07-10T18:39:45.896640Z",
          "id": "CVE-2026-54063",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-770"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:excelize:excelize:*:*:*:*:*:go:*:*",
              "versionEndExcluding": "2.11.0",
              "matchCriteriaId": "3109CFB1-75AF-4979-A10A-21F859C5D249"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/qax-os/excelize/releases/tag/v2.11.0",
      "source": "[email protected]",
      "tags": [
        "Release Notes"
      ]
    },
    {
      "url": "https://github.com/qax-os/excelize/security/advisories/GHSA-h69g-9hx6-f3v4",
      "source": "[email protected]",
      "tags": [
        "Exploit",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://github.com/qax-os/excelize/security/advisories/GHSA-h69g-9hx6-f3v4",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "tags": [
        "Exploit",
        "Vendor Advisory"
      ]
    }
  ]
}