Skip to main content
← All vulnerabilities
CVE-2026-108357EUVD-2026-108242GHSA-RXJ4-H86G-25GC

PhpSpreadsheet: XmlScanner Bypass via Double-Encoded unentity() TOCTOU Allows XXE and Denial of Service

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 3.10.8, 5.10.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: yes
  • Technical impact: partial

Summary

PhpSpreadsheet, a PHP library for reading and writing spreadsheet files, is affected when it processes SpreadsheetML (XML-based) spreadsheet files from untrusted sources. An attacker can craft such a file to bypass the library's XML safety checks, which can lead to denial of service through entity expansion, and in some PHP configurations, local file disclosure or server-side request forgery.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original description

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::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.

Timeline

  1. CVE published
  2. First seen by cve.now
  3. CISA SSVC assessment

    Exploitation: none · Automatable: yes · Technical impact: partial

  4. Record last updated

Affected versions

  • PHPOffice PhpSpreadsheet

    From 3.3.0 · fixed in 3.10.8; From 4.0.0 · fixed in 5.10.0

  • phpoffice/phpspreadsheetPackagist

    From 4.0.0 · fixed in 5.10.0

  • phpoffice/phpspreadsheetPackagist

    From 3.3.0 · fixed in 3.10.8

References 5

GitHub · PHPOffice/PhpSpreadsheet