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_HISTORYtrue,可改善 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 仓库还会自动获得 branchcommitsourceUrl 标签。例外:当本地 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 的合规要求。

相关推荐
山东科恩光电2 小时前
穆柯密佑MKL-01光敏传感器为橡塑生产安全编织新防护网
安全
小小龙学IT2 小时前
Abseil 开源 C++ 公共库深度解析:从 SwissTable 到 Status 的 Google 工程实践
c++·开源
论迹复利2 小时前
蓝牙加密算法演进——E0 流密码到 AES-CCM 的迁移路径与安全对比
安全·加密·stack·bt
huanqiulianbo3 小时前
瑞朗特防爆叉车及防爆AGV厂家攻克环保安全两难:高危作业场景迎来绿色合规新时代
安全
luiyarch3 小时前
汽车电子ISO 26262功能安全系列(第23期):硬件架构指标——SPFM、LFM、PMHF的达标攻略
安全·汽车·硬件架构
Acrellea3 小时前
光伏制氢站电气二次方案全拆解:从整流供电到智慧运维的完整闭环
安全·能源
IT大白鼠3 小时前
MSF模块架构深度解析——看懂渗透框架底层设计
安全·msf
孔明click333 小时前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·sa-token·开源·springboot·登录·权限·权限认证
腾讯数据架构师4 小时前
摩尔线程 GPU 怎么接入 Kubernetes 跑 DeepSeek?CubeStudio 摩尔线程(MUSA)适配实操
人工智能·云原生·容器·kubernetes·开源·mlops·maas