CVE-2026-45034
PhpSpreadsheet:File::prohibitWrappers 绕过
- 已发布
- 2026年6月22日
- 已更新
- 2026年6月23日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月14日
初级CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/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低 · 未来 30 天
- 百分位
- 39.2%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
PhpSpreadsheet 是一个用于读取和写入电子表格文件的纯 PHP 库。在 1.30.5 之前,CVE-2026-34084 已通过辅助函数 File::prohibitWrappers 进行了修补。该辅助函数调用 parse_url($filename, PHP_URL_SCHEME),然后检查 is_string($scheme) && strlen($scheme) > 1 以拒绝诸如 phar://、php://、data:// 或 expect:// 之类的流包装器。该检查并不等同于“路径是否包含包装器”。当输入具有 phar:///path/file.phar/inner 形式且方案后带有三个或更多斜杠时,parse_url 返回布尔值 false,而不是返回方案字符串。因此,is_string($scheme) 分支被跳过,辅助函数返回而不抛出异常,调用方继续执行。然而,PHP 的流层仍将 phar:///... 视为有效的 phar 包装器,并打开底层的 phar 文件。结果是 IOFactory::load($attackerPath) 绕过了修补,仍然触及 phar 包装器。在 PHP 7.x 上,仅通过 is_file 触及 phar 包装器就足以让 PHP 自动反序列化 phar 元数据,这反过来会调用攻击者控制对象的魔术方法 __wakeup 和 __destruct,并实现完全 RCE。在 PHP 8.x 上,普通文件操作的自动元数据反序列化已被移除,因此 PhpSpreadsheet 层的攻击链缩减为 phar 包装器文件读取原语,只有当下游消费者调用 Phar::getMetadata 时 RCE 才会重新出现。此漏洞已在 1.30.5 中修复。
来源
1针对 PHPSpreadsheet 的 phar:// 反序列化漏洞的 PoC 漏洞利用程序,绕过 prohibitWrappers 以在易受攻击的 PHP 应用上实现远程代码执行。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。