IPBUF安全漏洞报告
English
CVE-2026-35453 CVSS 5.4 中危

CVE-2026-35453 PhpSpreadsheet 存储型XSS漏洞

披露日期: 2026-05-05

漏洞信息

漏洞编号
CVE-2026-35453
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
PhpSpreadsheet

相关标签

XSSPhpSpreadsheetCVE-2026-35453HTML InjectionWeb Security

漏洞概述

该漏洞存在于 PhpSpreadsheet 的 HTML Writer 组件中。当单元格使用包含 '@' 占位符及附加字面文本的自定义数字格式时,程序会跳过 htmlspecialchars() 输出转义。攻击者若能控制被处理表格中的单元格内容,即可利用此漏洞在生成的输出中注入任意 HTML 和 JavaScript 代码,导致存储型 XSS 攻击。此问题影响多个版本分支,已在特定版本中修复。

技术细节

漏洞根源在于 PhpSpreadsheet 的 HTML Writer 在处理格式化输出时的逻辑缺陷。正常情况下,Writer 应对所有输出进行 HTML 实体转义以防止注入。然而,当格式代码包含 '@'(代表文本占位符)且后跟引号包裹的字面文本(如 `@ "items"`)时,格式化函数会将原始单元格值直接替换到格式字符串中,并提前返回,从而绕过了转义回调函数。这意味着,如果攻击者将恶意的 JavaScript 代码写入单元格,并配合特定的自定义数字格式,导出的 HTML 文件将直接包含未经过滤的恶意脚本,当其他用户在浏览器中查看该文件时,脚本即被执行。

攻击链分析

STEP 1
步骤1:构造恶意文件
攻击者创建一个电子表格文件,在单元格中写入恶意 JavaScript 代码,并将该单元格的数字格式设置为包含 '@' 占位符和额外字面文本(例如 '@ "items"')。
STEP 2
步骤2:上传文件
攻击者将构造好的恶意文件上传到目标系统,该系统使用易受攻击版本的 PhpSpreadsheet 库来读取并处理该文件(例如将其导出为 HTML)。
STEP 3
步骤3:生成恶意页面
目标系统在处理文件时,HTML Writer 组件因格式逻辑漏洞,未对单元格中的恶意代码进行转义,直接将其嵌入到生成的 HTML 页面源码中。
STEP 4
步骤4:执行攻击
当管理员或用户在浏览器中访问生成的 HTML 页面时,嵌入的恶意脚本自动执行,从而窃取 Cookie 或进行其他恶意操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Html; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // 1. Set malicious payload in a cell $sheet->setCellValue('A1', '<img src=x onerror=alert(1)>'); // 2. Apply the vulnerable custom number format ( "@" with literal text ) // This triggers the early return bypassing htmlspecialchars() $sheet->getStyle('A1')->getNumberFormat()->setFormatCode('@ "items"'); // 3. Write to HTML $writer = new Html($spreadsheet); $writer->save('exploit.html'); // Opening exploit.html in a browser will trigger the XSS alert ?>

影响范围

PhpSpreadsheet < 1.30.4
2.0.0 <= PhpSpreadsheet <= 2.1.15
2.2.0 <= PhpSpreadsheet <= 2.4.4
3.3.0 <= PhpSpreadsheet <= 3.10.4
4.0.0 <= PhpSpreadsheet <= 5.6.0

防御指南

临时缓解措施
在无法立即升级版本的情况下,应避免使用 HTML Writer 处理来自不可信来源的电子表格文件。如果必须处理,建议在后端对生成的 HTML 输出进行二次过滤或使用专门的 HTML 清理库(如 HTML Purifier)去除潜在的恶意脚本。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表