Skip to content
Heist/ feed
Back to feed
High

PhpSpreadsheet ODS Reader: Unbounded number-rows-repeated → CPU & Memory Exhaustion (DoS)

Type: advisorySources: OSV

PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0, Ods::processTableRow in src/PhpSpreadsheet/Reader/Ods.php accepts an unbounded table:number-rows-repeated attribute from an ODS table row. When the row contains a value, the reader materializes a cell for every repetition without checking the spreadsheet row limit, so a small attacker-controlled ODS file can consume substantial CPU and memory and terminate the PHP worker. Column repetition is separately bounded and is not part of this vulnerability. This issue is fixed in versions 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-108359
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 06:14 UTC · Revision 1

Source evidence

PhpSpreadsheet ODS Reader: Unbounded number-rows-repeated → CPU & Memory Exhaustion (DoS)

core-osv · Original source

Published 22 Oct 2026, 17:32 UTC

PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0, Ods::processTableRow in src/PhpSpreadsheet/Reader/Ods.php accepts an unbounded table:number-rows-repeated attribute from an ODS table row. When the row contains a value, the reader materializes a cell for every repetition without checking the spreadsheet row limit, so a small attacker-controlled ODS file can consume substantial CPU and memory and terminate the PHP worker. Column repetition is separately bounded and is not part of this vulnerability. This issue is fixed in versions 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0.

osv:CVE-2026-108359
Complete source record
{
  "id": "d824f15f03ae68a234c65dfbfc759afa5da924e50747ceba60900df3d6a5f631",
  "url": "https://osv.dev/vulnerability/CVE-2026-108359",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "PhpSpreadsheet ODS Reader: Unbounded number-rows-repeated → CPU & Memory Exhaustion (DoS)",
    "summary": "PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0, Ods::processTableRow in src/PhpSpreadsheet/Reader/Ods.php accepts an unbounded table:number-rows-repeated attribute from an ODS table row. When the row contains a value, the reader materializes a cell for every repetition without checking the spreadsheet row limit, so a small attacker-controlled ODS file can consume substantial CPU and memory and terminate the PHP worker. Column repetition is separately bounded and is not part of this vulnerability. This issue is fixed in versions 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0.",
    "evidence": "osv:CVE-2026-108359",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-108359",
      "aliases": [
        "CVE-2026-108359",
        "GHSA-j2w7-387v-m2rq"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/phpoffice/phpspreadsheet",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "f5dd9c1f084d336ea63cf53099533e061a9c157a"
                },
                {
                  "introduced": "4a77798f835119754961a97714f135826a323caa"
                },
                {
                  "fixed": "eb2ad61ccffa21bdc77481c69403f2bed5b13e5b"
                },
                {
                  "introduced": "b0993b7e4d9c860133365d115b176bc6e0f57022"
                },
                {
                  "fixed": "badf4f22c54332046af37687c3384c6a0ed14ae1"
                },
                {
                  "introduced": "87ddd21eb0b6b7ad20a11d314348ef307475f547"
                },
                {
                  "fixed": "fee9c1ca8d9f1f676f007ac1ab134ce43624bd52"
                },
                {
                  "introduced": "2d4b9f3582102aafb6b1378fff8a20eeeacfb31c"
                },
                {
                  "fixed": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53"
                },
                {
                  "fixed": "299993894dce37aa3b64aa23e9a3f4bb77ab0e66"
                },
                {
                  "fixed": "2de29384aa11223ee08136c0e6a9e9981bc1a2eb"
                },
                {
                  "fixed": "980b5c294493856f1a25754f1e8a1d2185b93738"
                },
                {
                  "fixed": "9a0b48622ebfe93fa48cb9bc09ce57303bb07af9"
                },
                {
                  "fixed": "da13f40e8760d599b0e8a296017d4b028b20e86c"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.30.7"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2.0.0"
                      },
                      {
                        "fixed": "2.1.19"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2.2.0"
                      },
                      {
                        "fixed": "2.4.8"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "3.3.0"
                      },
                      {
                        "fixed": "3.10.8"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "4.0.0"
                      },
                      {
                        "fixed": "5.10.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "299993894dce37aa3b64aa23e9a3f4bb77ab0e66"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "2de29384aa11223ee08136c0e6a9e9981bc1a2eb"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "980b5c294493856f1a25754f1e8a1d2185b93738"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "9a0b48622ebfe93fa48cb9bc09ce57303bb07af9"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "da13f40e8760d599b0e8a296017d4b028b20e86c"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "f5dd9c1f084d336ea63cf53099533e061a9c157a"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "1.30.7"
                  },
                  {
                    "range": [
                      {
                        "fixed": "eb2ad61ccffa21bdc77481c69403f2bed5b13e5b"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "2.1.19"
                  },
                  {
                    "range": [
                      {
                        "fixed": "badf4f22c54332046af37687c3384c6a0ed14ae1"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "2.4.8"
                  },
                  {
                    "range": [
                      {
                        "fixed": "fee9c1ca8d9f1f676f007ac1ab134ce43624bd52"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "3.10.8"
                  },
                  {
                    "range": [
                      {
                        "fixed": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "5.10.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "5.9.0",
            "1.30.6",
            "3.10.7",
            "2.4.7",
            "2.1.18",
            "3.10.6",
            "2.4.6",
            "2.1.17",
            "1.30.5",
            "5.8.0",
            "3.10.5",
            "2.4.5",
            "2.1.16",
            "1.30.4",
            "5.7.0",
            "5.6.0",
            "1.30.3",
            "3.10.4",
            "2.4.4",
            "2.1.15",
            "5.5.0",
            "3.10.3",
            "1.30.2",
            "2.4.3",
            "2.1.14",
            "5.4.0",
            "5.3.0",
            "3.10.2",
            "2.1.13",
            "1.30.1",
            "2.4.2",
            "5.1.0",
            "5.2.0",
            "3.10.1",
            "2.4.1",
            "3.10.0",
            "2.4.0",
            "2.1.12",
            "1.30.0",
            "5.0.0",
            "1.29.12",
            "3.9.3",
            "2.3.10",
            "2.1.11",
            "4.5.0",
            "3.9.2",
            "2.3.9",
            "2.1.10",
            "1.29.11",
            "4.4.0",
            "4.3.0",
            "4.3.1",
            "4.2.0",
            "4.1.0",
            "3.3.0",
            "3.9.0",
            "1.29.10",
            "3.9.1",
            "2.3.8",
            "2.1.9",
            "4.0.0",
            "2.3.7",
            "2.1.8",
            "1.29.9",
            "3.8.0",
            "2.3.6",
            "2.1.7",
            "1.29.8",
            "2.3.5",
            "2.1.6",
            "1.29.7",
            "3.7.0",
            "1.29.6",
            "2.3.4",
            "2.1.5",
            "3.6.0",
            "2.3.3",
            "2.1.4",
            "1.29.5",
            "3.5.0",
            "3.4.0",
            "2.3.2",
            "2.1.3",
            "1.29.4",
            "1.29.2",
            "2.1.1",
            "2.3.0",
            "2.1.0",
            "1.29.1",
            "2.2.2",
            "1.29.0",
            "2.2.1",
            "2.2.0",
            "2.0.0",
            "1.28.0",
            "1.27.0",
            "1.25.2",
            "1.25.1",
            "1.25.0",
            "1.24.1",
            "1.24.0",
            "1.23.0",
            "1.22.0",
            "1.21.0",
            "1.20.0",
            "1.19.0",
            "1.18.0",
            "1.17.1",
            "1.17.0",
            "1.16.0",
            "1.15.0",
            "1.14.1",
            "1.14.0",
            "1.13.0",
            "1.12.0",
            "1.11.0",
            "1.10.1",
            "1.10.0",
            "1.8.2",
            "1.8.1",
            "1.8.0",
            "1.7.0",
            "1.6.0",
            "1.5.0",
            "1.4.1",
            "1.4.0",
            "1.3.1",
            "1.3.0",
            "1.2.1",
            "1.2.0",
            "1.1.0",
            "1.0.0",
            "1.0.0-beta2",
            "phpexcel-last-cherry-picked-commit",
            "phpexcel-last-release-1.8.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-108359.json"
          }
        }
      ],
      "modified": "2026-10-31T02:30:43.140927571Z",
      "provider": "osv",
      "references": [
        "https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/1.30.7",
        "https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/2.1.19",
        "https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/2.4.8",
        "https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/3.10.8",
        "https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/5.10.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/108xxx/CVE-2026-108359.json",
        "https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-j2w7-387v-m2rq",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-108359",
        "https://github.com/PHPOffice/PhpSpreadsheet/commit/299993894dce37aa3b64aa23e9a3f4bb77ab0e66",
        "https://github.com/PHPOffice/PhpSpreadsheet/commit/2de29384aa11223ee08136c0e6a9e9981bc1a2eb",
        "https://github.com/PHPOffice/PhpSpreadsheet/commit/980b5c294493856f1a25754f1e8a1d2185b93738",
        "https://github.com/PHPOffice/PhpSpreadsheet/commit/9a0b48622ebfe93fa48cb9bc09ce57303bb07af9",
        "https://github.com/PHPOffice/PhpSpreadsheet/commit/da13f40e8760d599b0e8a296017d4b028b20e86c"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-400",
          "CWE-789"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/108xxx/CVE-2026-108359.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-108359",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 493003,
  "published_at": "2026-10-22T17:32:49.724+00:00"
}