SCA(软件成分分析)是开源风险治理、组件依赖包安全测试的核心工具,目前国内外最具代表性的免费开源SCA工具有OpenSCA、 Snyk Open Source、Veracode SCA、OWASP DependencyCheck。每个开源威胁治理工具各有不同,各具特色。
OpenSCA
OpenSCA是国内排名第一的开源SCA工具,继承了商业级SCA的开源应用安全缺陷检测、多级开源依赖挖掘、纵深代码同源检测等核心能力,支持漏洞库、私服库等自主配置,覆盖IDE/命令行/云平台、离线/在线等多种使用场景,支持Java、JavaScript(Node.js)、PHP、Python、Go (Golang)、Rust、Erlang等多种主流编程语言并支持生成软件物料清单(SBOM),目前国内社区及github持续更新,本地化运营支持做的比较好。
检测能力
OpenSCA具备HTML格式报告导出功能,将检测结果以可视化形式统计、展示,提升了检测报告的可读性,便于组件依赖清单及漏洞信息的管理维护。
报告结果概览:
- 统计检出的组件、漏洞数量及占比情况。
结果概览
- 在检出的组件依赖列表,会明确展示组件的风险等级、检出的漏洞数、依赖方式等信息。
- 点击<依赖列表>内的组件,可查看组件的详细信息,包括检出路径、组件漏洞信息等。
产品优势:
- 支持主流编程语言的软件成分分析,如:Java、JavaScript、PHP、Ruby;
- 云平台实时的组件库/漏洞库/许可证库/特征库等知识库支撑。
- 组件的直接依赖及间接依赖解析分析;
- 支持主流许可证的检出,分析开源许可证的合规性及兼容性风险。
Snyk Open Source
根据Forrester2023的观点,从「Strategy策略」维度来看,Snyk在SCA领域国外排名第一,但是写的时候发现snyk这个工具好像转为收费了,还是简单介绍一下支持的开发语言、构建工具和包管理器,不做进一步展开了。
支持语言 | 包管理器或工具 |
.Net (C#, F#, Visual Basic) | Nuget, Paket |
Bazel | See API docs. |
C/C++ | N/A |
Elixir | hex |
Go | Go Modules, dep, govendor |
Java | Gradle, Maven |
JavaScript | npm, yarn |
PHP | Composer |
Python | pip, Poetry, pipenv |
Ruby | Bundler |
Scala | sbt |
Swift and Objective-C | CocoaPods |
报告
- 可见性:在一个位置查看所有许可证问题和安全漏洞的状态,概览设计用于在大屏幕上显示
- 问责制:查看团队解决问题的速度
- 可审计:项目中使用的所有依赖项的清单,可以导出为 CSV
Veracode SCA
在2023年forrester排名中, Veracode SCA排名第四,也是国外知名的免费SCA,Veracode SCA支持两种扫描方法,可以在开发生命周期的不同阶段运行它们:扫描上传的应用程序和基于代理的扫描。
检测能力
支持语言 | 包管理器 |
Java | Maven |
Gradle | |
Ant | |
Jars | |
Scala | SBT |
Kotlin | Maven |
Gradle | |
Go | Trash |
Glide | |
GoVendor | |
GoDep | |
go get | |
Go modules | |
Dep | |
Python | pip |
Pipenv | |
JavaScript | NPM |
Yarn | |
Bower | |
Objective-C | CocoaPods |
Swift | CocoaPods |
Ruby | Bundler |
PHP | Composer |
C/C++ | Make |
C#/.NET | NuGet |
DLL |
Dependency-Check
Dependency-Check是OWASP的一个知名SCA工具,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。执行依赖项检查时将收集到的有关依赖项的信息与下载到本地的CPE&NPM库数据进行对比,以此确认该依赖项中是否存在漏洞,如果检查发现扫描的组件存在已知的易受攻击的漏洞则标识出来,最后生成报告进行展示。
检测能力:
支持语言 | 包管理器 |
Java | Maven、Ant、Gradle、 |
.NET | |
Python | |
Ruby | |
PHP | |
Node.js | |
Swift/OC | |
JavaScript |
产品优势:
Dependency-Check支持面广(支持多种语言)、可集成性强,作为一款开源工具,在多年来的发展中已经支持和许多主流的软件进行集成,比如:命令行、Ant、Maven、Gradle、Jenkins、Sonar等;具备使用方便,落地简单等优势。
总结对比
平台名称 | Snyk Open Source | OpenSCA | Veracode SCA | Dependency-Check | |
发布时间 | 2019年 | 2021年12月 | 2021年10月 | 2012年 | |
背景 | 英国 | 中国 | 美国 | 美国 | |
官网地址 | https://snyk.io/product/open-source-security-management/ | https://opensca.xmirror.cn/ | https://www.veracode.com/products/software-composition-analysis | https://owasp.org/www-project-dependency-check/ | |
项目库地址 | Github: https://github.com/snyk/cli | Github: https://github.com/XmirrorSecurity/OpenSCA-cli Gitee: https://gitee.com/XmirrorSecurity/OpenSCA-cli/releases | Github: https://github.com/marketplace/actions/veracode-software-composition-analysis | Github: https://github.com/jeremylong/DependencyCheck | |
检测能力 | 检测语言支持 | JavaScript、PHP、python、.Net、C/C++、Elixir、Go、Java、Swift and objective-c、Ruby、Scala等 | Java、JavaScript、PHP、Ruby、Golang、Rust、Erlang、Python等 | Java、Scala、Kotlin、Go、Python、JavaScript、Objective-C等 | Java、.NET、Python、Ruby、PHP、Node.js、Swift/OC等 |
包管理器支持 | Npm、yarn、Composer、pip、 Poetry、pipenv、Nuget、Paket、N/A、hex、Go Modules、dep、 govendor、Gradle、 Maven、CocoaPods、Bundler、sbt、CocoaPods等 | Maven、npm、Composer、Gradle、Gem、go mod、Cargo、Rebar、pip等 | Maven、Gradle、Ant、Bundler NPM、Bower、Yarn、Composer、Pip、SBT、Maven、Gradle、Make、Go get、NuGet等 | Maven、Ant、Jenkins、Gradle、Sonar等 | |
软件成分分析 | 支持 | 支持 | 支持 | 支持 | |
软件特征分析 | 支持 | 支持 | 不详 | 不详 | |
软件直接依赖分析 | 支持 | 支持 | 支持 | 支持 | |
软件间接依赖分析 | 支持 | 支持 | 不支持 | 不支持 | |
实时检测 | 支持 | 支持 | 支持 | 支持 | |
容器镜像检测 | 支持 | 支持 | 支持 | 支持 | |
代码安全检测 | 支持 | 支持 | 支持 | 支持 | |
检测场景 | 需求阶段 | 支持 | 支持 | 支持 | 支持 |
设计阶段 | 支持 | 支持 | 支持 | 支持 | |
编码阶段 | 支持 | 支持 | 支持 | 支持 | |
测试阶段 | 支持 | 支持 | 支持 | 支持 | |
安全管理阶段 | 支持 | 支持 | 支持 | 支持 | |
平台/工具链集成 | IDE插件 | 支持 | 支持 | 支持 | 不支持 |
代码仓库 | 支持 | 支持 | 不支持 | 支持 | |
特征库及知识库 | 漏洞库兼容 | CVE | NVD、CNNVD、CNVD | CVE | NVD |
组件库更新 | 不详 | 支持 | 不详 | 不详 | |
漏洞库更新 | 支持 | 支持 | 不详 | 不详 | |
许可证库更新 | 支持 | 支持 | 支持 | 不详 | |
漏洞库查询 | 支持 | 不支持 | 不支持 | 不支持 | |
组件库查询 | 支持 | 不支持 | 不支持 | 不支持 | |
特征库规则库更新 | 不详 | 支持 | 不详 | 不详 | |
漏洞修复建议 | 支持 | 支持 | 支持 | 不支持 | |
漏洞利用难度 | 支持 | 支持 | 不支持 | 不支持 | |
报告 | 支持 | 支持 | 支持 | 支持 |
总结:
-
各开源威胁治理工具都有丰富的语言及包管理器支持,可以更好地满足用户对工具的需求;
-
每个工具都支持软件成分分析、实时检测、容器镜像检测、代码安全检测;
-
每个工具都覆盖需求阶段、设计阶段、编码阶段、测试阶段、安全管理阶段的检测场景,可以更好地支持检测功能;
-
每个工具都支持检测结果以不同的报告形式展现,可以更好地对安全态势分析;
-
OpenSCA、Snyk Open Source支持软件特征分析,其它不详;
-
Snyk Open Source漏洞库更新、许可证库更新; OpenSCA支持组件库更新、漏洞库更新、许可证库更新、特征库规则库更新;Veracode SCA支持漏洞库更新;其它不详。
-
如果一定要对比推荐的话,国内用户希望二次开发使用,带WEB界面、使用方便的,推荐使用OpenSCA;注重独立性、不依托厂商,推荐使用Dependency Check。