{"id":"CVE-2026-108357","title":"PhpSpreadsheet: XmlScanner Bypass via Double-Encoded unentity() TOCTOU Allows XXE and Denial of Service","summary":"PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. From 3.3.0 until 3.10.8 and 5.10.0, Reader\\Xml passes stored SpreadsheetML XML through XmlScanner::scan in Xml::canRead and Xml::trySimpleXMLLoadStringPrivat…","severity":"high","cvss":8.8,"cvssVector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:L/SI:N/SA:N","cvssSource":"cna","cwe":["CWE-611","CWE-776"],"vendor":"PHPOffice","product":"PhpSpreadsheet","affected":["PhpSpreadsheet >= 3.3.0, < 3.10.8","PhpSpreadsheet >= 4.0.0, < 5.10.0"],"ssvc":{"exploitation":"none","automatable":"yes","technicalImpact":"partial","timestamp":"2026-10-23T17:32:57.479788Z"},"published":"2026-10-22","updated":"2026-10-23","sourceUpdated":"2026-10-23T21:08:17.784Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-108357","references":[{"url":"https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-rxj4-h86g-25gc","label":"https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-rxj4-h86g-25gc"},{"url":"https://github.com/PHPOffice/PhpSpreadsheet/commit/89f455c133e1a7e2d4abfadc43ce29eb7450d781","label":"https://github.com/PHPOffice/PhpSpreadsheet/commit/89f455c133e1a7e2d4abfadc43ce29eb7450d781"},{"url":"https://github.com/PHPOffice/PhpSpreadsheet/commit/980b5c294493856f1a25754f1e8a1d2185b93738","label":"https://github.com/PHPOffice/PhpSpreadsheet/commit/980b5c294493856f1a25754f1e8a1d2185b93738"},{"url":"https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/3.10.8","label":"https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/3.10.8"},{"url":"https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/5.10.0","label":"https://github.com/PHPOffice/PhpSpreadsheet/releases/tag/5.10.0"}],"tags":["cve.org"],"epss":0.00285,"epssPercentile":0.19995,"ingestedAt":"2026-10-22T22:00:50.356Z","slug":"CVE-2026-108357","body":"## Overview\n\nPhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. From 3.3.0 until 3.10.8 and 5.10.0, Reader\\Xml passes stored SpreadsheetML XML through XmlScanner::scan in Xml::canRead and Xml::trySimpleXMLLoadStringPrivate, while Xml::unentity decodes numeric entities only after each DOCTYPE pattern check. A double-encoded less-than character is reduced by the first callback to another encoded character and by the second callback to a literal less-than sign, so SimpleXML receives an unchecked DOCTYPE and entity declaration. Processing attacker-controlled SpreadsheetML XML can cause entity-expansion denial of service and can permit local file access or SSRF on PHP before 8.0 or when LIBXML_NOENT is enabled. This issue is fixed in versions 3.10.8 and 5.10.0.\n\n## Affected\n\n- `PhpSpreadsheet >= 3.3.0, < 3.10.8`\n- `PhpSpreadsheet >= 4.0.0, < 5.10.0`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"twilight","depthScore":48,"depthScoreParts":{"impact":48.4,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}