文章总结: 文档分析了PHPComposer中两个高危任意命令执行漏洞CVE-2026-40176和CVE-2026-40261,CVSS评分分别为7.8和8.8。漏洞源于PerforceVCS驱动处理时的输入验证不足和Shell元字符逃逸,攻击者可通过恶意composer.json触发RCE。建议立即升级至Composer2.9.6或2.2.27版本,或通过代码审查、限制源使用等临时措施防御。 综合评分: 85 文章分类: 漏洞分析,漏洞预警,供应链安全,WEB安全,安全工具
【安全预警】CVSS 8.8!PHP Composer 任意命令执行漏洞原理解析与修复指南
原创
Kit Chung Kit Chung
安全圈动向
2026年4月16日 08:05 广东
在小说阅读器读本章
去阅读
大家好,不知道这两天大家有没有关注安全圈的动态?咱们平时搞 PHP 开发、维护服务器,几乎天天都要敲的 composer install,居然爆出了两个高危的任意命令执行(RCE)漏洞!
说实话,这种供应链级别的漏洞,一直都是各种高级可持续威胁(APT)组织和黑客团伙的最爱。想象一下,你只是拉取了一个看似正常的项目依赖,结果服务器直接被别人拿到了 Shell,这锅最后还不是得咱们 IT 人背?
废话不多说,咱们直接上技术干货,看看这次 Composer 到底是在哪里翻了车,以及咱们该怎么防。
💣 漏洞核心:又是“命令注入”惹的祸
这次官方披露了两个高危漏洞,都出在 Composer 处理 Perforce VCS(版本控制系统) 驱动的逻辑上。可能很多兄弟会说:“我们公司早就全员 Git/GitLab 了,谁还用老掉牙的 Perforce 啊?这漏洞跟我们没关系吧?”
大错特错! 这次漏洞最贼的地方在于:就算你的服务器上根本没有安装 Perforce 客户端,只要 Composer 解析到了恶意构造的配置,依然会触发恶意代码执行!
咱们来逐一拆解一下这两个 CVE:
1. CVE-2026-40176 (CVSS 评分: 7.8) – 仓库配置污染
-
原理剖析:
这是一个典型的输入验证不严导致的问题。攻击者可以在恶意的
composer.json文件中,声明一个包含恶意载荷(Payload)的 Perforce VCS 仓库。 -
利用路径:
当你毫无防备地运行 Composer 去解析这个文件时,底层的代码没有对仓库配置字段进行严格的过滤。攻击者注入的任意系统命令,就会以当前运行 Composer 的用户权限(如果你头铁用了 root,那画面太美)直接在你的服务器上执行。
2. CVE-2026-40261 (CVSS 评分: 8.8) – Shell 元字符逃逸
-
原理剖析:
这个漏洞评分更高,问题出在转义不充分(inadequate escaping)。咱们写过 Bash/Python 脚本的都知道,像
|、;、&&、$()这种 Shell 元字符,如果直接拼接到系统命令里去执行,那绝对是灾难。 -
利用路径:
攻击者通过构造包含这些 Shell 元字符的“源引用(source reference)”。Composer 在处理这些引用时,没能把这些特殊字符“摁住”,导致它们逃逸到了底层的 Shell 中,变成了可执行的系统命令。
🛠️ 技术重现与思考
其实站在代码审计的角度来看,这种漏洞在很多大型开源项目中都屡见不鲜。它的实现难点不在于多复杂的内存溢出,而在于业务逻辑与底层系统交互时的边界管控。
Composer 作为一个包管理器,不可避免地要调用各种底层的系统命令(比如 git clone,或者这里的 p4 客户端)。当外部的不可信输入(比如从网络上拉取的 composer.json 内容)没有经过严格的白名单清洗,直接拼接成了 exec() 或 shell_exec() 的参数时,RCE 也就水到渠成了。
官方也算是反应迅速,目前已经全网扫描了 Packagist.org 官方源,暂时还没发现有黑客利用这些漏洞发布带毒的 Perforce 信息的证据。并且从 2026 年 4 月 10 日起,官方已经直接禁用了 Packagist.org 上的 Perforce 源元数据发布,算是从源头上掐断了公共库的传播途径。
🛡️ 修复与防御指南:赶紧动手,拒绝背锅!
安全无小事,对于咱们一线运维和研发来说,第一时间打补丁才是王道。这次受影响的版本跨度还是挺大的:
⚠️ 受影响版本及修复目标:
• >= 2.3 且 < 2.9.6 👉 请立即升级至 2.9.6 版本
• >= 2.0 且 < 2.2.27 👉 请立即升级至 2.2.27 版本
直接在服务器上跑一下自更新命令:
composer self-update
如果你的业务环境比较特殊,或者因为某些历史包袱暂时无法升级,请务必做好以下临时防御措施:
-
代码审查卡点:
在运行
composer install/update之前,务必人工检查,或者写个 Python 脚本、甚至搭个 n8n 自动化工作流来审查一下composer.json文件,看看里面有没有乱七八糟的 Perforce 字段(重点关注未知的repositories配置)。 -
管好你的源:
只使用受信任的 Composer 仓库,坚决抵制来路不明的第三方源。
-
高危参数规避:
暂时避免使用
--prefer-dist或在配置中开启preferred-install: dist,减少从压缩包分发中踩坑的概率。
结语:最后说两句
现在这年头,做 IT 越来越像是在“排雷”。不仅要防内网的越权,还得防供应链的背刺。建议大家把自动化安全扫描(比如集成到 CI/CD 流水线里的依赖检查工具,或者推送到灰度环境时的 Zabbix/日志联动报警)赶紧搞起来,用机器代替人工去防范这种低级却致命的漏洞。
赶紧检查下你们生产环境的 Composer 版本吧!如果有用,记得点个在看和转发!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全圈动向 Kit Chung Kit Chung《【安全预警】CVSS 8.8!PHP Composer 任意命令执行漏洞原理解析与修复指南》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论