Mend SCA 实操指南:使用 Mend CLI 进行开源组件安全扫描

现代软件开发中,开源组件已占据代码库的 70% 以上,每一个引入的依赖都是"你没写但仍需负责的代码"。Log4Shell、xz-utils 后门等事件证明,一个存在漏洞的传递依赖包可以在代码库中潜伏数月,直到攻击者先发现它。软件成分分析(SCA)的核心目标,就是在代码交付前持续、自动化地识别这些风险。

本教程以 Mend CLI 为例,从环境准备到 CI/CD 集成,完整演示一次开源组件安全扫描的实操流程。

一、Mend CLI 环境准备

1.1 前置条件

运行 Mend CLI SCA 扫描前,需满足以下条件:

  • 下载并安装 Mend CLI(支持 Linux / macOS / Windows)
  • 完成 Mend CLI 登录认证
  • 确保 Mend CLI 对应用源代码文件系统有读取权限
  • 以管理员身份运行 Mend CLI

​重要说明​:Mend SCA 不会将完整源代码上传到云端,仅存储理解漏洞可达性所需的最少信息,确保代码隐私安全。

1.2 支持的包管理器生态

Mend CLI 原生支持 30+ 种包管理器,覆盖主流开发语言:

  • Java:Maven、Gradle
  • JavaScript/TypeScript:npm、Yarn
  • Python:pip、Conda、uv(2026 年 5 月新增)
  • ​.NET​:NuGet
  • Go:Go Modules
  • Ruby:RubyGems
  • Rust:Cargo

Mend CLI 会自动为每种语言确定最优解析参数,无需手动配置解析规则。

1.3 三种扫描方式对比

Mend SCA 提供三种扫描机制,适用于不同场景:

扫描方式 定位 适用场景
Mend CLI 新一代推荐扫描器 CI/CD 管道、桌面扫描、同时支持 SCA + SAST + 容器扫描
Unified Agent 传统扫描器 已集成到遗留 CI/CD 流程的项目
Repository Integration 仓库级集成 持续监测、自动 PR、无需修改 CI/CD 配置

​推荐选择​:新项目直接使用 Mend CLI;已有 Unified Agent 集成的项目可平滑迁移;需要持续监测且不想改动 CI/CD 的场景可用 Repository Integration。

二、执行首次 SCA 扫描

2.1 触发扫描

进入项目根目录,执行以下命令触发 SCA 扫描:

bash 复制代码
mend dep

注:mend dep 是当前推荐命令(dependencies 的缩写)。旧版 mend sca 命令仍向后兼容,但建议尽早切换。

2.2 扫描执行流程

Mend CLI 在显示扫描结果前,会经历两个默认步骤:

步骤 说明
Scanning Mend CLI 扫描目录中的 SCA 漏洞和恶意包
Retrieving 发现漏洞后,Mend CLI 向 Mend Application 获取漏洞详情,为扫描摘要做准备

扫描过程中,控制台会实时显示进度。如果配置了 Mend AI 扫描,SCA 扫描结束后会显示"Mend AI scan running"条目。

2.3 提升扫描性能的环境变量

可选设置环境变量 MEND_PULL_GIT_HISTORY 为 true,可改善 Mend AI 扫描性能和缓存利用率:

bash 复制代码
export MEND_PULL_GIT_HISTORY=true
mend dep

三、解读扫描结果

3.1 结果呈现方式

Mend CLI 扫描结果以结构化表格形式直接在控制台输出,同时在 Mend Application 平台提供可视化 Dashboard。关键信息包括:

  • 漏洞组件名称及版本:识别存在 CVE 或 MSC(恶意包)的组件
  • 严重性评级:基于 CVSS 4.0 评分,标注 Critical / High / Medium / Low
  • EPSS 评分:显示漏洞在现实世界中被利用的概率
  • 可达性状态:标记漏洞函数是否被应用代码实际调用
  • 依赖类型:标明是直接依赖还是传递依赖,以及根库信息
  • 策略违规:标注违反组织安全策略的组件

3.2 优先级排序逻辑

Mend SCA 的优先级排序结合三个维度,帮助安全团队从海量告警中聚焦真正需要处理的风险:

  • CVSS 4.0 严重性:评估漏洞的技术影响程度
  • EPSS 利用概率:衡量漏洞在野外被实际利用的可能性
  • 可达性分析:追踪应用代码到漏洞函数的调用路径,不可达漏洞被标记降级

三者交叉后,一个 CVSS 9.0 但不可达且 EPSS 极低的漏洞,优先级会显著低于一个 CVSS 7.0 但可达且 EPSS 较高的漏洞。

3.3 自动标签关联

Mend AppSec Platform 会为扫描和项目自动分配 sourceUrl 标签,适用于 Unified Agent、Mend CLI 和仓库集成扫描。这对于将不同扫描绑定到同一项目特别有用。

扫描的 Git 仓库还会自动获得 branch、commit 和 sourceUrl 标签。例外:当本地 Git 仓库处于 detached HEAD 状态时,不会分配 branch 标签。

四、集成到 CI/CD 管道

4.1 典型集成工作流

Mend SCA 在 CI/CD 中的典型集成流程覆盖完整 SDLC:

编码阶段(IDE) :开发者在 IDE 中引入新依赖时,Mend 插件即时检查组件漏洞状态和许可证信息

​提交阶段(SCM Hook) :代码提交到 GitHub / GitLab / Bitbucket 时,Repository Integration 自动触发扫描

​构建阶段(CI/CD):Mend CLI 在管道中执行全面扫描(SCA + SAST + 容器镜像)

​发布阶段(Policy Gate) :根据预定义策略,Mend 放行、告警或阻断构建。例如阻止包含 Critical 级可达漏洞的版本进入制品仓库

持续监测​:即使代码无变更,新漏洞披露时 Mend 会重新评估已有项目风险并通知安全团队

4.2 策略门禁配置建议

在 CI/CD 中集成 SCA 时,策略门禁配置直接影响团队接受度:

  • 严重性阈值:建议初始设置阻断 Critical,告警 High,忽略 Low/Medium
  • 宽限期:为已有依赖中新发现的 Critical CVE 设置 14 天修复宽限期
  • 例外管理:建立误报或可接受风险的例外流程,设置例外有效期
  • 可达性过滤:启用可达性分析,不可达漏洞不阻断构建

实践提示:如果每次扫描都因任何 Medium 级别发现而失败构建,工程师会在数周内绕过或静默该检查。先定义策略再自动化。

五、常见问题 Q&A

Q1:Mend CLI 和旧版 Unified Agent 有什么区别?

Mend CLI 是新一代扫描器,自动为每种语言确定最优解析参数,同时原生支持 SCA + SAST + 容器扫描,无需单独配置。Unified Agent 是传统扫描器,适合已集成到遗留流程的项目。新项目建议直接使用 Mend CLI。

Q2:Mend SCA 扫描会上传源代码吗?

不会。Mend SCA 仅存储理解漏洞可达性所需的最少信息,不会上传完整源代码到云端。

Q3:可达性分析支持哪些语言?

可达性分析对 Java 生态的支持最为成熟。对其他语言的覆盖深度可能有所不同,建议在正式使用前针对目标语言生态进行测试验证。

Q4:如何处理自动修复引入的兼容性问题?

自动升级依赖版本时可能在特定构建环境中引入兼容性问题。建议对关键项目设置人工审核门禁,对于可能引入 Breaking Change 的升级保留人工审核步骤,已知安全的版本升级可配置自动合并。

Q5:Mend SCA 能否检测恶意包?

可以。Mend Supply Chain Defender 在包引入阶段检测可疑的恶意行为,包括名称混淆(typosquatting)、依赖劫持、投毒等攻击方式,阻止恶意包进入代码库和制品仓库。

Q6:Mend CLI 支持哪些 SBOM 格式?

支持 CycloneDX 和 SPDX 两种国际标准格式。2026 年 6 月新增源文件级细粒度 SBOM 导出,可包含未匹配源文件、CVE、许可证和版权信息,满足 CRA 和 EO 14028 的合规要求。

相关推荐
wflynn2 分钟前
GitHub 日榜趋势速报 | 2026-10-07
开源·github
夏文强16 分钟前
国产开源反攻海外:GLM-5.3 进 Cursor,CursorBench 开放权重第一
人工智能·开源·大模型·glm·智谱
文慧的科技江湖1 小时前
2026年10月6日算力行业招投标早报:电力侧先给“调度“立项,算力集采清单里调度还在缺席 | 慧知开源智算调度平台
开源·算力·算力调度·智算·招投标
不悔哥1 小时前
开源 hostapd:路由器 Wi‑Fi 热点背后的守护进程
开源
万物智能信息科技1 小时前
血氧心跳传感器MAX30100芯片驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
人工智能·驱动开发·华为·开源·harmonyos·鸿蒙
miofly1 小时前
GitHub 日榜趋势速报 | 2026-10-08
开源·github
枫叶丹41 小时前
AI Agent 说完成了,怎样验证任务真的完成
人工智能·chatgpt·开源·agent·codex
caoerzhong12 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
盟接之桥12 小时前
当大模型遇见线束制造:不是通用AI,而是行业AI
大数据·网络·人工智能·安全·制造
DisonTangor13 小时前
llama.cpp 新特性:决策模型
人工智能·开源·aigc