CVE-2026-35453
published 2026-05-05CVE-2026-35453: PhpSpreadsheet is a library for reading and writing spreadsheet files. In versions 1.30.3 and earlier, 2.0.0 through 2.1.15, 2.2.0 through 2.4.4, 3.3.0 through…
PriorityP429medium5.4CVSS 3.1
AVNACLPRLUIRSCCLILAN
EPSS
0.20%
10.3th percentile
PhpSpreadsheet is a library for reading and writing spreadsheet files. In versions 1.30.3 and earlier, 2.0.0 through 2.1.15, 2.2.0 through 2.4.4, 3.3.0 through 3.10.4, and 4.0.0 through 5.6.0, the HTML Writer skips htmlspecialchars() output escaping when a cell uses a custom number format containing the @ text placeholder with additional literal text (e.g., @ "items"). The escaping is only applied when the formatted output strictly equals the original cell value. When the format code contains @ with quoted literal text, the formatter substitutes the raw cell value into the format string and returns early without invoking the escaping callback. An attacker who can control cell content in a spreadsheet processed by the HTML Writer can inject arbitrary HTML and JavaScript into the generated output. This issue has been fixed in versions 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0.
Affected
15 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| phpoffice | phpspreadsheet | < 1.30.4 | 1.30.4 |
| phpoffice | phpspreadsheet | <= 1.30.3 | — |
| phpoffice | phpspreadsheet | — | — |
| phpoffice | phpspreadsheet | — | — |
| phpoffice | phpspreadsheet | — | — |
| phpoffice | phpspreadsheet | — | — |
| phpoffice | phpspreadsheet | >= 0 < 1.30.4 | 1.30.4 |
| phpoffice | phpspreadsheet | >= 2.0.0 < 2.1.16 | 2.1.16 |
| phpoffice | phpspreadsheet | >= 2.0.0 < 2.1.16 | 2.1.16 |
| phpoffice | phpspreadsheet | >= 2.2.0 < 2.4.5 | 2.4.5 |
| phpoffice | phpspreadsheet | >= 2.2.0 < 2.4.5 | 2.4.5 |
| phpoffice | phpspreadsheet | >= 3.3.0 < 3.10.5 | 3.10.5 |
| phpoffice | phpspreadsheet | >= 3.3.0 < 3.10.5 | 3.10.5 |
| phpoffice | phpspreadsheet | >= 4.0.0 < 5.7.0 | 5.7.0 |
| phpoffice | phpspreadsheet | >= 4.0.0 < 5.7.0 | 5.7.0 |
CVSS provenance
nvdv3.15.4MEDIUMCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
nvdv4.04.8MEDIUMCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
VulDB
PHPOffice PhpSpreadsheet up to 5.6.0 cross site scripting (EUVD-2026-27472)
vuldb·2026-05-05·CVSS 4.8
CVE-2026-35453 [MEDIUM] PHPOffice PhpSpreadsheet up to 5.6.0 cross site scripting (EUVD-2026-27472)
A vulnerability was found in PHPOffice PhpSpreadsheet up to 1.30.3/2.1.15/2.4.4/3.10.4/5.6.0. It has been rated as problematic. The affected element is an unknown function. The manipulation leads to cross site scripting.
This vulnerability is referenced as CVE-2026-35453. Remote exploitation of the attack is possible. No exploit is available.
Upgrading the affected component is advised.
GHSA
PhpSpreadsheet has XSS via NumberFormat @ Text Substitution in HTML Writer
ghsa·2026-04-28
CVE-2026-35453 [MEDIUM] CWE-79 PhpSpreadsheet has XSS via NumberFormat @ Text Substitution in HTML Writer
PhpSpreadsheet has XSS via NumberFormat @ Text Substitution in HTML Writer
### Summary
The HTML Writer in PhpSpreadsheet bypasses `htmlspecialchars()` output escaping when a cell uses a custom number format containing the `@` text placeholder with additional literal text (e.g., `@ "items"` or `"Total: "@`). This allows an attacker to inject arbitrary HTML and JavaScript into the generated HTML output by crafting a malicious XLSX file.
### Details
#### 1. Conditional escaping in `Html.php:1586-1594`
```php
$cellData = NumberFormat::toFormattedString(
$origData2,
$formatCode ?? NumberFormat::FORMAT_GENERAL,
[$this, 'formatColor']
);
if ($cellData === $origData) {
$cellData = htmlspecialchars($cellData, Settings::htmlEntityFlags());
}
```
`htmlspecialchars()` is only called when `$cell
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
2026-05-05
Published