composer audit只能查出friendsofphp/security-advisories数据库已收录的有cve编号的php包漏洞,如monolog反序列化、laravel ssrf等;不检测私有包、零日漏洞、配置错误、逻辑漏洞或系统依赖。

composer audit 只能查出已被 FriendsOfPHP/security-advisories 数据库收录的、有 CVE 编号的已知 PHP 包漏洞,比如 monolog/monolog 的反序列化、laravel/framework 的 SSRF —— 它不看你的代码怎么用,也不管你有没有开 debug 模式。
哪些漏洞它确实能报出来
它比对的是 composer.lock 里锁死的具体版本和安全数据库里的“已确认可利用”条目。常见能命中包括:
-
CVE-2022-29248(monolog 反序列化 RCE) -
CVE-2021-31246(symfony/http-foundation 的 Host 头注入) -
CVE-2023-29197(laravel 的信息泄露,需特定配置) - 所有被标记为
critical、high、medium的 advisory 条目(只要数据库已收录)
哪些问题它完全看不到
别指望它替你做人工判断或环境分析:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 私有包或 fork 仓库——除非你手动把它们加进
repositories且该源同步了 advisories 字段 - 零日漏洞(CVE 还没编号、数据库还没收录)
-
.env文件泄露、JWT 密钥硬编码、SQL 注入逻辑漏洞等应用层问题 - 配置错误:比如
debug=true在生产环境开启,audit 不会管这个 - 系统级依赖(如 OpenSSL、cURL)或扩展漏洞(如 gd、exif)
为什么 audit 显示 “No security vulnerabilities found”,但 Snyk 却报警
数据源不同。audit 只认 FriendsOfPHP/security-advisories 这一个 JSON 列表;Snyk、Dependabot 还拉 NVD、OSV、厂商通告甚至静态分析结果。两者不是替代关系,是互补关系。
- audit 报了
CVE-2023-1234?说明这个包+版本在社区共识里是真有问题 - Snyk 报了但 audit 没报?大概率是该 CVE 还没被 FriendsOfPHP 收录,或只影响非 Packagist 分发的变体
- audit 报了但你代码根本没调那个类?它不管调用链,只管“装了就有风险”
audit 命令失败最常见的三个原因
不是漏洞不存在,而是命令根本没跑起来:
-
Command "audit" is not defined:Composer 版本低于 2.5.0,必须先运行composer self-update -
Could not find composer.lock:CI 流程跳过了composer install,或本地没提交更新后的 lock 文件 -
Could not fetch advisories:网络不通(比如公司内网屏蔽packagist.org),或镜像源不支持安全通告接口(阿里云、腾讯云镜像默认不透传 advisories)
真正容易被忽略的是:audit 的结果只反映 composer.lock 当前那一刻的状态。如果你长期没 composer update,新披露的漏洞即使已入库,也不会出现在扫描结果里——因为 lock 文件里还是旧版本,而旧版本可能还没被标记为“受影响”。










