最新消息:关注人工智能 AI赋能新媒体运营

PHP包管理器Composer曝出两个命令注入高危漏洞,可远程触发任意命令执行

科技资讯 admin 浏览

PHP生态中广泛使用的包管理工具Composer,官方披露了两个高严重性命令注入漏洞CVE-2026-40261与CVE-2026-40176,均源于Perforce版本控制系统集成模块在构建Shell命令时未对用户输入进行适当转义处理。其中CVSS评分为8.8的CVE-2026-40261可通过恶意Composer包仓库远程触发,且无需客户端安装Perforce即可执行任意命令,构成严重的软件供应链攻击风险。官方已发布Composer 2.2.27与2.9.6修复版本。

两个漏洞的根本原因相似,均为Composer的Perforce驱动在拼接系统命令时,直接将外部传入的参数嵌入命令字符串,未进行过滤或转义,导致攻击者可通过在参数中插入Shell特殊字符实现命令注入。

CVE-2026-40261涉及Perforce::syncCodeBase()方法,该方法在同步代码时,将来源引用直接拼接到Shell命令中。由于来源引用属于包元数据的一部分,任何Composer包仓库均可在提供包信息时声明Perforce为来源类型,并植入恶意内容。因此,只要开发者从被入侵或恶意搭建的Composer仓库安装包,就可能在不知情的情况下触发命令执行。该漏洞可在以源码方式安装或更新依赖包时被利用,包括使用--prefer-source选项,或安装dev前缀版本时的默认行为。

CVE-2026-40176出现在Perforce::generateP4Command()方法中,该方法在生成P4命令时,将用户提供的Perforce连接参数(包括Port、User和Client)直接内嵌到命令字符串中。攻击者可通过在composer.json中配置恶意的Perforce VCS仓库设置来触发命令注入。但该漏洞的攻击面相对有限,因为VCS仓库配置仅从项目根目录的composer.json或Composer全局配置目录加载,无法通过已安装的依赖包间接触发。

两个漏洞影响Composer 2.0至2.2.26的LTS分支,以及2.3至2.9.5的主分支,官方已在2.2.27与2.9.6版本中完成修复。若开发者暂时无法升级,针对CVE-2026-40261,可改用下载压缩包的方式安装包,避免以源码方式获取依赖;针对CVE-2026-40176,应避免在来源不明的项目目录中执行Composer命令。