composer audit 命令自 composer 2.5.0 版本起正式内置,此前版本(如2.4.x)不包含该命令;需同时满足版本≥2.5.0、启用 experimental.audit 配置、存在有效 composer.lock 三条件才可用。

composer audit 命令从哪来的?2.5.0 是分水岭
不是所有 Composer 都有 audit 命令。它首次完整集成是在 2.5.0,此前版本(包括 2.4.x)压根不带这个子命令。如果你运行 composer audit 报错 Command "audit" is not defined,第一件事就是确认版本:composer --version。低于 2.5.0 的必须升级,self-update 即可;某些定制版(如旧 Docker 镜像里锁定 PHP 7.2 的 phar)可能连审计模块都没编译进去,只能换官方完整版。
audit 行为变更:从默认关闭到可配置触发
即使你用的是 2.5.0+,audit 也不是开箱即用。它依赖实验性配置 experimental.audit,需显式启用:
-
composer config --global experimental.audit true(写入~/.composer/auth.json) - 或项目级:
composer config experimental.audit true(写入当前项目composer.json的config段) - 没这行配置,
composer audit会静默无输出,不是 bug,是未激活
注意:该配置在 2.9.0 后仍为实验性,未转正;未来是否默认开启、是否拆出独立扩展,目前无官方路线图。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
install --audit 的行为变化:从可选开关到 CI 友好卡点
composer install --audit 在 2.5.0 引入后,语义逐步收紧:
- 早期(2.5.x):仅执行审计,失败不中断安装流程(exit code 0 即使有 high 漏洞)
- 2.6.0+:默认返回非零退出码(exit 1)只要发现
critical或high级别 advisory,适合 CI 卡点 - 现在(2.9.6):支持细粒度控制,比如
--severity=critical,high --no-dev,跳过低风险和开发依赖干扰 - 关键限制:它只读
composer.lock,不扫描vendor/;删 vendor 重装没用,必须先更新 lock 文件
安全修复相关的底层变更:Perforce driver 命令注入补丁
最近一次影响面较大的安全修复不是 advisory 数据库更新,而是 Composer 自身代码逻辑的修补:
-
CVE-2026-40261和CVE-2026-40176都发生在 Perforce driver 中,本质是构造 shell 命令时未过滤恶意 URL 或仓库定义 - 触发条件苛刻:需项目主动使用 Perforce 作为 VCS 源,且元数据含恶意字符串;普通 Git 用户不受影响
- 修复版本:2.9.6(最新稳定)和 2.2.27(LTS),升级是唯一缓解方式
- 这不是“扫穿服务器”的 RCE,但提醒你:当 AI Agent 自动执行
composer install时,它处理的不只是 JSON,还有潜在的命令拼接上下文
真正容易被忽略的点是:audit 功能再强,也查不出 Composer 自身的命令注入缺陷——它只查你锁住的包,不查它自己怎么跑命令。










