文章总结: PhpSpreadsheet库爆出高危远程代码执行漏洞CVE-2026-45034,影响3.12亿用户。该漏洞通过斜杠绕过补丁检查,利用parse_url函数缺陷使phar包装器绕过安全验证,在PHP7.x环境下可自动触发反序列化实现代码执行。建议立即升级至1.30.5版本,改用字符串包含检查和realpath()验证路径。 综合评分: 92 文章分类: 漏洞分析,WEB安全,应用安全,解决方案,漏洞预警
PhpSpreadsheet 远程代码执行漏洞:3.12 亿用户面临 PoC 利用代码披露风险
sec随谈 sec随谈
sec随谈
2026年6月11日 09:47 北京
在小说阅读器读本章
去阅读
PhpSpreadsheet 是一个广泛使用的纯 PHP 编写库,提供一套功能强大的类,用于读写 Excel 和 LibreOffice Calc 等格式文件。该库在全网的累计下载量已超过 3.12 亿次。近期,安全研究人员披露了一个严重的 PhpSpreadsheet 远程代码执行漏洞,并公开发布了概念验证利用代码的详细信息。这一严重缺陷使远程攻击者能够执行任意代码,导致无数 Web 应用程序当前面临被入侵的即时威胁。
深入了解 CVE-2026-45034 漏洞利用
此次新发现的漏洞正式编号为 CVE-2026-45034,危险程度极高。具体而言,该漏洞是对此前漏洞 CVE-2026-34084 补丁的直接绕过。根本原因在于一个名为 File::prohibitWrappers 的特定辅助函数。该函数最初由开发人员设计,用于拒绝 phar:// 或 php:// 等恶意流包装器,依赖 parse_url 函数提取并验证 URL 协议。然而,这一实现存在致命的逻辑缺陷——该检查并不等同于”路径中是否包含包装器”的判断。
斜杠绕过技术
攻击者可以轻松操纵输入字符串来规避安全检查。当使用三个或更多斜杠(如 phar:///path)时,parse_url 函数将返回失败,不再返回协议字符串,而是直接返回布尔值 false。由此导致后续安全检查被完全跳过,辅助函数直接返回而不抛出任何异常。与此同时,PHP 内部的流处理层仍能正确识别 phar 包装器,最终导致应用程序依然打开了危险文件。
实现远程代码执行
漏洞的利用效果在很大程度上取决于当前运行的 PHP 版本。在 PHP 7.x 环境下,仅需通过 is_file 触达 phar 包装器,即可自动触发反序列化,该自动过程会调用攻击者控制的魔术方法,最终实现完整的远程代码执行。相比之下,PHP 8.x 已移除自动元数据反序列化功能,因此在现代版本中该漏洞降级为文件读取原语。但若应用程序后续手动调用 Phar::getMetadata,完整的远程代码执行风险仍会重现。概念验证代码使用 exploit.phar 文件轻松演示了完整的攻击链。
保护您的 PHP 应用程序
管理员必须立即修复这一 PhpSpreadsheet 远程代码执行漏洞。安全专家强烈建议不要使用 parse_url 来检测包装器,因为其行为会因斜杠数量和 PHP 版本的不同而产生不一致的结果。开发人员应改为实施严格的字符串包含检查,并通过 realpath() 验证路径,以有效防御此类包装器攻击。目前,1.x 分支中 1.30.4 及以下的所有版本均存在此绕过漏洞。为确保系统安全,用户必须升级至已发布的修复版本 1.30.5。
参考链接:
https://github.com/user-attachments/files/27317342/run.sh
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:sec随谈 sec随谈 sec随谈《PhpSpreadsheet 远程代码执行漏洞:3.12 亿用户面临 PoC 利用代码披露风险》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论