01概述
近日,我们对项目依赖进行了全面的安全审计。审计结合了依赖管理工具的更新记录与公开漏洞数据库(GitHub Advisory Database)的交叉比对,并对实际运行环境中的依赖版本进行了核验。
审计发现,项目依赖中存在多项已知安全漏洞。本公告旨在公开披露审计结果、说明影响范围,并公布修复计划。
02审计方法
- 提取项目依赖锁定文件与实际安装的依赖版本。
- 将依赖版本与公开漏洞数据库中的已知漏洞进行匹配。
- 对匹配到的漏洞进行版本范围核验,确认是否实际受影响。
- 对关键漏洞进行安全性验证(以不造成实际危害为前提)。
03主要发现
依赖版本不一致问题
审计过程中发现,依赖锁定文件与实际安装的依赖存在版本差异。部分依赖在锁定文件中已升级至安全版本,但实际运行环境中仍为旧版本。
这一问题可能导致:
- 依赖更新未实际生效,漏洞仍然存在于运行环境中。
- 自动化安全扫描基于锁定文件,无法反映真实风险。
建议所有部署流程使用 npm ci 替代 npm install,确保依赖版本与锁定文件严格一致。
漏洞统计
经核验,实际运行环境中共存在以下已知漏洞:
| 严重程度 | 数量 |
|---|---|
| 严重 (Critical) | 7 |
| 高危 (High) | 46 |
| 中危 (Medium) | 35 |
| 低危 (Low) | 10 |
受影响较多的依赖
| 依赖包 | 漏洞数量 | 最高严重程度 |
|---|---|---|
| nuxt | 14 | 高危 |
| devalue | 13 | 高危 |
| tar | 12 | 严重 |
| simple-git | 6 | 严重 |
| node-forge | 5 | 高危 |
04重点漏洞说明
以下漏洞经核验确认存在于当前运行环境中,需优先处理:
高危 node-forge RSA 签名验证绕过
- 漏洞类型:加密签名验证缺陷
- 影响:攻击者可能利用此缺陷伪造 RSA 签名
- 修复状态:目前无官方修复版本,需持续关注上游公告
严重 命令注入类漏洞
- 涉及依赖:shell-quote、simple-git 等
- 影响:在特定调用场景下可能导致任意命令执行
- 修复状态:官方已发布修复版本,需升级依赖
高危 拒绝服务类漏洞
- 涉及依赖:devalue、tar、js-yaml 等
- 影响:恶意构造的输入可能导致服务不可用
- 修复状态:官方已发布修复版本,需升级依赖
中危 原型污染类漏洞
- 涉及依赖:lodash、devalue、defu 等
- 影响:可能导致安全检查绕过或其他安全问题
- 修复状态:官方已发布修复版本,需升级依赖
05修复计划
立即措施
- 重新安装依赖,确保实际安装的依赖与锁定文件一致。
- 修复部署流程,使用
npm ci保证依赖版本一致性。 - 对暂无修复版本的漏洞进行风险评估,必要时采取替代方案。
短期措施
- 升级所有存在已知漏洞的依赖至安全版本。
- 在持续集成流程中加入依赖安全扫描,防止新增漏洞引入。
- 审查生产环境中实际使用的依赖,移除不再需要的依赖。
长期措施
- 建立依赖安全审计的常态化机制。
- 配置依赖自动更新工具,及时跟进安全补丁。
- 关注上游安全公告,对暂无补丁的漏洞制定应急预案。
06致谢
感谢 GitHub Advisory Database 提供的漏洞数据支持,以及开源社区对安全问题的持续关注与贡献。
如发现本项目相关的安全问题,请通过 安全政策 中说明的渠道进行反馈。本公告将根据修复进展持续更新。