PHP 领域的行业标准测试框架 PHPUnit 的维护团队发布了紧急安全更新,修复了一处高严重性漏洞 —— 该漏洞竟将测试流程本身变为攻击入口。此漏洞编号为CVE-2026-24765,CVSS 评分为 7.8 分,攻击者可通过操纵代码覆盖率文件,利用该漏洞实现远程代码执行(RCE)。
该漏洞直击自动化测试环境的核心,利用了 PHPUnit 在测试执行完毕后的清理机制发起攻击,问题出在 PHPT 测试运行器中,且恰巧存在于一个名为cleanup For Coverage 的方法里,该方法的核心作用是处理测试执行过程中生成的代码覆盖率数据。
根据官方安全公告,该方法 “会对代码覆盖率文件进行无验证反序列化操作,若 PHPT 测试执行前,系统中存在恶意的.coverage 文件,就可能导致远程代码执行”。
这一漏洞的技术根源是经典的不安全反序列化(CWE-502) 缺陷:相关代码会通过
@unserialize($buffer)函数处理数据缓冲区,却未对数据的安全性做任何校验。若攻击者能将恶意的序列化对象 —— 尤其是包含__wake up方法的序列化对象,植入到系统中 PHP Unit 存储或读取 PHP T 测试代码覆盖率文件的目录下,PHPUnit 就会在清理阶段盲目执行该恶意对象。利用该漏洞的前提是,攻击者需获得 PHP Unit 存放 PHP T 测试代码覆盖率文件目录的本地文件写入权限,常见的实现途径包括:
- CI/CD 流水线攻击:攻击者提交恶意拉取请求,将.coverage 文件植入测试文件目录,当 CI 系统调用 PHP Unit 执行测试并收集代码覆盖率信息时,恶意文件就会被触发;
- 本地开发环境攻击:攻击者获得目标主机的 Shell 权限,或能向项目目录写入文件;
- 供应链攻击:通过篡改依赖包,将恶意文件植入第三方包或单体代码仓库中。
此次漏洞影响范围覆盖 PHP Unit 多个主版本,使用以下版本的用户均存在安全风险:
- PHP Unit 8:8.5.51 及以下版本
- PHP Unit 9:9.6.32 及以下版本
- PHP Unit 10:10.5.61 及以下版本
- PHP Unit 11:11.5.49 及以下版本
- PHP Unit 12:12.5.7 及以下版本
PHP Unit 维护团队已发布修复补丁版本(8.5.52、9.6.33、10.5.62、11.5.50 和 12.5.8),并敦促所有用户立即完成升级。
但官方安全公告同时强调,软件补丁只是解决方案的一部分,问题的根源往往在于CI/CD 环境的配置方式。公告中警示:“仅修复这一处反序列化调用漏洞,无法解决根本的攻击面问题。”
要真正实现流水线的安全防护,企业必须遵循纵深防御原则,采取以下措施:
- 隔离测试运行器:确保 CI/CD 测试运行器为临时实例(每次运行后即销毁),防止跨任务的恶意代码污染;
- 限制执行权限:启用分支保护规则,禁止未审核的代码触发自动化测试;
- 扫描制品文件:对拉取请求中的代码及构建生成的制品文件进行篡改监测,这一环节至关重要。








发表评论
您还未登录,请先登录。
登录