免费开源代码安全卫士开源集成到gitlab或者ci/cd进行代码漏洞扫描,代码扫描工具:sonar、fireline、coverity、fortify、blackduck对比。软件开发中,如何根据项目以来的第三方组件名称和版本,快速联网搜索相关CVE漏洞,并获取每个漏洞的评级,最后生成一个简单的CVE漏洞报告。
Horusec:开源代码安全卫士
https://github.com/ZupIT/horusec
在当今的软件开发世界中,安全性是每个项目不可或缺的一部分。Horusec,一个由ZupIT开发的开源工具,正是为了满足这一需求而诞生的。它通过静态代码分析,帮助开发者和DevSecOps团队在开发过程中识别安全漏洞。本文将深入介绍Horusec的项目特点、技术分析、应用场景以及为何它值得您的关注。
项目介绍
Horusec是一个开源的静态代码分析工具,支持多种编程语言,包括C#、Java、Kotlin、Python、Ruby、Golang、Terraform、Javascript、Typescript、Kubernetes、PHP、C、HTML、JSON、Dart、Elixir、Shell和Nginx。它不仅能够扫描项目文件中的安全漏洞,还能检查Git历史记录中的关键信息泄露。Horusec通过CLI和CI/CD mats为开发者提供服务,确保代码的安全性。
项目技术分析
Horusec的核心技术在于其强大的静态代码分析能力。它集成了多种安全工具,能够同时分析18种编程语言,使用20种不同的安全工具来提高分析的准确性。此外,Horusec还支持Docker,这意味着它可以利用Docker的容器化优势,提供更加一致和隔离的分析环境。
项目及技术应用场景
Horusec的应用场景非常广泛,特别适合以下情况:
开发阶段的安全检查:开发者可以在编码过程中使用Horusec进行实时安全检查,及时发现并修复漏洞。
CI/CD集成:DevSecOps团队可以将Horusec集成到CI/CD流程中,确保每次代码部署前的安全性。
历史代码审计:通过分析Git历史记录,Horusec可以帮助团队发现过去可能遗漏的安全问题。
项目特点
Horusec的主要特点包括:
多语言支持:支持18种编程语言,覆盖了主流的开发语言。
集成多种安全工具:使用20种不同的安全工具进行分析,提高了漏洞检测的准确性。
Docker支持:通过Docker容器化,确保分析环境的一致性和隔离性。
灵活的配置:Horusec提供了丰富的命令行选项,可以根据需要进行灵活配置。
易于集成:可以轻松集成到现有的开发和部署流程中,如Visual Studio Code扩展和CI/CD管道。
结语
Horusec是一个功能强大且易于集成的开源代码安全分析工具。无论您是开发者还是DevSecOps工程师,Horusec都能帮助您在开发过程中确保代码的安全性。现在就访问Horusec的GitHub页面,了解更多信息并开始使用吧!
代码扫描工具:sonar、fireline、coverity、fortify、blackduck对比
代码扫描工具在软件开发中扮演着重要的角色,它们帮助开发者识别和修复代码中的潜在问题。以下是对 SonarQube、Fireline、Coverity、Fortify 和 Black Duck 的介绍及其区别:
- SonarQube
简介:
SonarQube 是一个开源的代码质量管理工具。
支持多种编程语言,如 Java、C#、JavaScript、TypeScript、Python 等。
功能:
静态代码分析:检测代码中的漏洞、错误和代码异味。
代码度量:提供代码覆盖率、复杂度等度量指标。
集成:与 CI/CD 工具(如 Jenkins、GitLab CI)集成,自动化代码质量检查。
优点:
开源且社区活跃。
支持多种插件,扩展功能强大。
直观的用户界面,易于使用。
- Fireline
简介:
Fireline 是一个专注于代码安全的静态分析工具。
功能:
检测代码中的安全漏洞,如 SQL 注入、跨站脚本攻击(XSS)等。
提供详细的漏洞报告和修复建议。
优点:
专注于安全漏洞检测,提供深度分析。
适用于需要高安全性的应用程序开发。
- Coverity
简介:
Coverity 是 Synopsys 提供的静态代码分析工具。
支持多种编程语言,如 C、C++、Java、C#、JavaScript 等。
功能:
静态代码分析:检测代码中的缺陷和安全漏洞。
自动化分析:与 CI/CD 工具集成,实现自动化代码扫描。
报告和修复建议:提供详细的缺陷报告和修复建议。
优点:
高准确性和低误报率。
强大的企业级支持和服务。
支持广泛的编程语言和复杂代码库。
- Fortify
简介:
Fortify 是 Micro Focus 提供的应用安全测试工具。
包含静态应用安全测试(SAST)和动态应用安全测试(DAST)。
功能:
静态代码分析:检测代码中的安全漏洞。
动态分析:在运行时检测应用程序的安全漏洞。
安全审计和合规性检查。
优点:
综合的安全测试解决方案,覆盖静态和动态分析。
强大的企业级支持和服务。
提供详细的漏洞修复指导。
- Black Duck
简介:
Black Duck 是 Synopsys 提供的开源安全和管理工具。
专注于开源组件的安全和合规性。
功能:
开源组件扫描:检测项目中使用的开源组件。
漏洞检测:识别开源组件中的已知漏洞。
许可证合规性:检查开源组件的许可证合规性。
优点:
专注于开源组件的管理和安全。
提供详细的漏洞和许可证合规报告。
与其他 Synopsys 工具集成,提供全面的安全解决方案。
区别总结
SonarQube:主要关注代码质量和代码异味,提供全面的代码度量和质量报告。
Fireline:专注于代码安全漏洞的检测,适用于需要高安全性的应用。
Coverity:提供高准确性的静态代码分析,适合复杂和大型代码库。
Fortify:综合的应用安全测试工具,覆盖静态和动态分析,适合全面的安全测试需求。
Black Duck:专注于开源组件的安全和合规性管理,适用于使用大量开源组件的项目。
每种工具都有其特定的优势和应用场景,选择合适的工具应根据项目的具体需求和环境来决定。
假如您是软件开发人员或代码安全分析师,则通常须要分析源代码以检测安全漏洞并维护安全的质量代码。但是您的代码中可能存在许多难以手动发现的问题。毕竟,我们依然是人类,因此即便是最高级的安全分析师也都会错过一些安全漏洞。我们提供了源代码分析工具来拯救我们,这是一个功能壮大的工具,能够快捷,自动地检查引擎盖下的所有内容,而没需执行代码,并且成为人眼的完美伴侣。
源代码分析工具也称为静态应用程序安全性测试工具或SAST工具,旨在向开发人员提供有关他们可能在代码中引入的问题的即时反应,这与在软件开发生命周期中后期查找漏洞相比非常有用。循环(SDLC)。
从一初始就随着创建高质量安全代码的增加,出现了向采用这些工具的更大转变。如今,市场上没有大量可用的工具,但是对于初创公司和自由职业者来说,商业选择太昂贵了,但是请不要担忧,这里列出了一些顶级的免费开源静态代码分析工具。
- VisualCodeGrepper
VisualCodeGrepper是针对常用的最时兴的编程语言的超快捷且壮大的源代码分析工具,全面的扫描工具,它是针对C,C ++,C#,VB,PHP,Java,PL / SQL和COBOL的自动化工具,可大大加快代码的速度通过识别不安全的代码来检查过程。它尝试在注释中查找能够指示代码损坏的短语,并通过统计数据和饼图提供详细的报告。它具有一些很棒的功能,这对进行代码分析的任何人都非常有用,尤其是在时长很昂贵的情况下:
使用此工具,您能够分析大部分现代和旧的时兴编程语言,例如C,C ++,Java,PHP,COBOL等。只需指定用于正确识别和分析代码的语言即可。
您能够运行多个扫描操作,详细取决于项目标类型和复杂性。在可能的操作中,它能够帮助您触发代码的完整扫描过程,并且在此过程中,chard会立即弹出一个新窗口,其中显示每个组件以进行更好的分析。
为整个代码库提供一个漂亮的饼图,其中显示了代码,空格,注释和错误代码的相比照例。
显示了一个列表,以查看每个项目以及可能的错误,安全缺少陷注释数,整个项目标百分比以及潜在的不安全标志和代码位。
执行许多复杂的检查,并允许您使用每种语言的配置文件添加要搜索的所有不良功能。
尝试在注释中找到能够指示代码损坏的一系列短语。
智能搜索以查找缓冲区溢出以及有符号或没符号比较。
2.RIPS
RIPS(增强编程安全性)是针对PHP,Java和Node.Js的语言特定的静态代码分析工具。它能够自动检测PHP和Java应用程序中的安全漏洞,是应用程序开发的理想选择。该工具支持所有主要的PHP和Java框架。它能够部署为自托管软件或用作云效劳。具有SDLC集成和相关行业规范。除了RIPS之外,没有其他工具能够检测到最深层嵌套在代码内部的最复杂的安全错误,并且精确性极高,因此它是分析代码的理想选择。
使用本地安装进行本地代码扫描以珍爱代码隐私。还提供具有安全且高度可扩展的基于云的平台(SaaS)的在线扫描,而没需本地安装或维护开销。
没缝的全自动安全测试和代码漏洞报告。因此,在与构建工具集成之后,IDE和问题跟踪器以及任何其他自定义工具都能够带来自动化功能。
它跟踪您在整个开发生命周期中的应用程序进度,并立即发现代码中的风险和漏洞,以便您能够尽快攻克问题,
此工具因其速度而非常受欢迎。即便在不到20分钟的时长内扫描了22亿行的宏大磁码,它也以闪电般的速度扫描您的代码。
在RISP分析引擎的帮助下,能够独立扫描多种编程语言,同时考虑语言的详细信息以进行最精确的分析。
通过一种非常独特的方法,该工具能够检测到一些其他扫描仪可能遗漏的安全漏洞。
- Brakeman
它是一个免费的开放源代码漏洞扫描程序,专门为Ruby on Rails应用程序设计。它是一个静态代码分析器,可在开发过程中的任何阶段扫描Rails应用程序代码以发现安全问题。与许多其他Web安全扫描程序不同,此工具能够查看应用程序的源代码,因此没需设置整个应用程序堆栈即可使用它。扫描应用程序代码后,它将针对所有安全问题生成详细的报告。
没需任何必要的配置即可运行此工具。安装后,没需进行任何先期设置或配置。
在开发过程的任何阶段随时运行。只需使用新的rails生成一个新应用程序并立即检查,
提供对应用程序的更完整介绍。该分析仪能够在安全漏洞被利用之前识别出它们。
提供灵敏的测试,每次执行的检查都是独立的,因此Barkman能够灵敏地进行测试,
它比“黑匣子”网站扫描仪要快得多,甚至大型应用程序也能够在几分钟内被扫描。
- Flawfinder
它是一个免费的简略程序,能够扫描C或C ++源代码,从而快捷识别可能的安全漏洞并生成按风险级别排序的报告。它作为开源软件提供,对于在程序广泛发布之前快捷发现并打消潜在的安全问题非常有用。它非常易于使用,并且经过专门设计,易于与python的pip一起安装,并附带一个简略的用户指南。它与Common Weakness Enumeration(CWE)兼容,并获得了CII最佳实践通过徽章。对于初学者来说非常有用,它对静态源代码分析工具进行了简略介绍。它设计为在Unix,Cygwin,基于Linux的系统和macOS上用作命令行工具,并且仅须要Python 2.7或Python 3。
容易安装,也容易使用。它是入门代码分析的理想工具。
它是具有OSI批准的许可证的免费开源软件,
即便您没法构建软件也能正常工作
它非常快,能够在相对较短的时长内检查较大的程序
它具有更高的命中密度(每千行源代码中的命中数)。
5.Bandit
这是一个免费工具,专门用于查找Python代码中的常见安全问题。它使用适当的插件处理每个文件,并在python代码中生成有关可能的安全性错误的详细报告。它是带有Apache License 2.0的开源软件。能够在开发过程中或之后使用此工具,以在将代码投入出产之前查找Python代码中的常见安全问题,或使用此工具来分析现有项目并查找可能的缺少陷。
·命令行界面可扫描您的python代码。
·支持CSV,HTML或JSON文件。
·允许指定基准报告的路径,以忽略您认为不是问题的已知漏洞。
·使用预提交进行版本控制集成。
·允许用户编写和注册检查和格式化程序的扩展名。
源代码审计漏洞 白盒测试的各种漏洞风险描述或具体修复方案
https://github.com/wooyunwang/Fortify
软件开发中,如何根据项目以来的第三方组件名称和版本,快速联网搜索相关CVE漏洞,并获取每个漏洞的评级,最后生成一个简单的CVE漏洞报告。
在软件开发中,要快速联网搜索项目依赖的第三方组件名称和版本的CVE漏洞,并获取每个漏洞的评级,最后生成一个简单的CVE漏洞报告,可以采用以下步骤:
使用CVEMap工具:
CVEMap是一个开源命令行界面(CLI)工具,可以探索CVE漏洞数据库。它每6小时更新一次CVE数据集,并结合了多个公共来源的数据,包括NVD (NIST) CVE数据库、CISA CVE和已知利用漏洞(KEV)数据库等。- 安装:可以通过Go安装CVEMap,使用命令
go install github.com/projectdiscovery/cvemap/cmd/cvemap@latest
。 - 配置:需要配置ProjectDiscovery Cloud Platform的API令牌,可以通过环境变量或交互式选项进行配置。
- 搜索:使用
cvemap
命令加上相应的参数来搜索CVE漏洞,例如cvemap -product chrome -l 5
可以列出Chrome的5条记录。 - 评级:可以通过
-severity
参数指定漏洞的严重程度,例如cvemap -severity critical
列出严重漏洞。
- 安装:可以通过Go安装CVEMap,使用命令
https://github.com/projectdiscovery/cvemap
https://cloud.projectdiscovery.io/
export PDCP_API_KEY=e4957ed7-0703
./cvemap auth
./cvemap -cpe "cpe:2.3:a:oracle:mysql:8.4.0:*:*:*:*:*:*:*" -l 15
echo CVE-2024-21272 | ./cvemap -json
./cvemap -product mysql -l 15
使用Dependency-Check工具:
Dependency-Check是一个用于识别项目依赖中已知漏洞的工具。它可以在执行新的扫描任务之前更新规则库,并开始进行外部依赖库漏洞的扫描。- 安装:从官网下载最新版本的Dependency-Check,并解压即可使用。
- 扫描:使用命令
Dependency-check --project <project name> --scan <jar path> --out <result path> --format <XML/HTML/CSV/JSON/JUNIT/ALL> --disableCentral
进行扫描。 - 结果处理:扫描后的结果需要人工排除误报,并根据CVE官网上的漏洞介绍、官方漏洞说明结合源代码和修复方法人工进行逐一排查。
使用CVE Binary Tool:
CVE Binary Tool是一个用于评估CVE严重程度的工具,它可以从已知漏洞数据源下载漏洞数据,并提供多种格式的报告输出。- 安装:通过pip安装CVE Binary Tool,使用命令
pip install cve-bin-tool
。 - 扫描:使用命令
cve-bin-tool <directory/file>
进行扫描。
- 安装:通过pip安装CVE Binary Tool,使用命令
生成报告:
可以使用如PeTeReport这样的开源渗透测试漏洞报告生成工具,它可以帮助安全研究人员和渗透测试人员提供详细的调查结果、附录、攻击路径并管理调查结果模板数据库。
综合以上工具和方法,你可以快速联网搜索项目依赖的CVE漏洞,获取每个漏洞的评级,并生成一个简单的CVE漏洞报告。这些工具提供了从漏洞搜索、评级到报告生成的完整流程,帮助开发者识别和处理项目中的安全风险。
OpenSCA-cli 用开源的方式做开源风险治理
https://www.xmirror.cn/
https://opensca.xmirror.cn/login
项目介绍
OpenSCA 用来扫描项目的第三方组件依赖及漏洞信息。
欢迎点亮star,鼓励下项目组的小伙伴们~
检测能力
OpenSCA
现已支持以下编程语言相关的配置文件解析及对应的包管理器,后续会逐步支持更多的编程语言,丰富相关配置文件的解析。
支持语言 | 包管理器 | 解析文件 |
---|---|---|
Java |
Maven |
pom.xml |
Java |
Gradle |
.gradle .gradle.kts |
JavaScript |
Npm |
package-lock.json package.json yarn.lock |
PHP |
Composer |
composer.json composer.lock |
Ruby |
gem |
gemfile.lock |
Golang |
gomod |
go.mod go.sum Gopkg.toml Gopkg.lock |
Rust |
cargo |
Cargo.lock |
Erlang |
Rebar |
rebar.lock |
Python |
Pip |
Pipfile Pipfile.lock setup.py requirements.txt requirements.in |
下载安装
或者下载源码编译(需要
go 1.18
及以上版本)// github linux/mac git clone https://github.com/XmirrorSecurity/OpenSCA-cli.git opensca && cd opensca && go build // gitee linux/mac git clone https://gitee.com/XmirrorSecurity/OpenSCA-cli.git opensca && cd opensca && go build // gitcode linux/mac git clone https://gitcode.com/XmirrorSecurity/OpenSCA-cli.git opensca && cd opensca && go build // github windows git clone https://github.com/XmirrorSecurity/OpenSCA-cli.git opensca ; cd opensca ; go build // gitee windows git clone https://gitee.com/XmirrorSecurity/OpenSCA-cli.git opensca ; cd opensca ; go build // gitcode windows git clone https://gitcode.com/XmirrorSecurity/OpenSCA-cli.git opensca ; cd opensca ; go build
默认生成当前系统架构的程序,如需生成其他系统架构可配置环境变量后编译
- 禁用
CGO_ENABLED
CGO_ENABLED=0
- 指定操作系统
GOOS=${OS} \\ darwin,liunx,windows
- 指定体系架构
GOARCH=${arch} \\ amd64,arm64
- 禁用
使用说明
参数说明
参数 | 类型 | 描述 | 使用样例 |
---|---|---|---|
config |
string |
指定配置文件路径 | -config config.json |
path |
string |
指定检测项目路径 | -path ./foo |
out |
string |
根据后缀生成报告 | -out out.json,out.html |
log |
string |
指定日志文件路径 | -log my_log.txt |
token |
string |
云端服务token |
-token xxx |
proj |
string |
saas项目token |
-proj xxx |
完整的检测参数需在配置文件中配置
(*v3.0.0开始url参数不再通过命令行指定,默认为OpenSCA云漏洞库服务https://opensca.xmirror.cn/
,也可通过配置文件指定其他数据格式相符的云漏洞库;使用过往版本可在命令行或配置文件指定url参数。)
配置字段及说明详见config.json
v3.0.2开始,OpenSCA-cli可以通过proj参数向OpenSCA SaaS同步检出结果,方便资产及风险的全局管理。
配置文件与命令行参数冲突时优先使用命令行输入参数
指定了配置文件路径但目标位置不存在文件时会在目标位置生成默认配置文件
未指定配置文件路径会依次尝试访问以下位置:
- 工作目录下的
config.json
- 用户目录下的
opensca_config.json
opensca-cli
目录下的config.json
报告格式
out
参数支持范围如下:
类型 | 文件格式 | 识别的文件后缀 |
---|---|---|
检测报告 | json |
.json |
xml |
.xml |
|
html |
.html |
|
sqlite |
.sqlite |
|
csv |
.csv |
|
sarif |
.sarif |
|
SBOM清单 | spdx |
.spdx .spdx.json .spdx.xml |
cdx |
.cdx.json .cdx.xml |
|
swid |
.swid.json .swid.xml |
|
dsdx |
.dsdx .dsdx.json .dsdx.xml |
使用样例
# 使用opensca-cli检测
opensca-cli -path ${project_path} -config ${config_path} -out ${filename}.${suffix} -token ${token}
# 写好配置文件后也可以直接执行opensca-cli
opensca-cli
# 检测当前目录的依赖信息
docker run -ti --rm -v ${PWD}:/src opensca/opensca-cli
# 使用云端漏洞数据库:
docker run -ti --rm -v ${PWD}:/src opensca/opensca-cli -token ${put_your_token_here}
如需在docker
容器中使用配置文件,将config.json
放到src
挂载目录即可。也可以使用-config
指定其他容器内路径。
不同终端挂载当前目录的写法不同,常见的几种终端写法如下:
terminal | pwd |
---|---|
bash |
$(pwd) |
zsh |
${PWD} |
cmd |
%cd% |
powershell |
(Get-Location).Path |
更多信息请参考 Docker Hub 主页
漏洞库文件格式
[
{
"vendor": "org.apache.logging.log4j",
"product": "log4j-core",
"version": "[2.0-beta9,2.12.2)||[2.13.0,2.15.0)",
"language": "java",
"name": "Apache Log4j2 远程代码执行漏洞",
"id": "XMIRROR-2021-44228",
"cve_id": "CVE-2021-44228",
"cnnvd_id": "CNNVD-202112-799",
"cnvd_id": "CNVD-2021-95914",
"cwe_id": "CWE-502,CWE-400,CWE-20",
"description": "Apache Log4j是美国阿帕奇(Apache)基金会的一款基于Java的开源日志记录工具。\r\nApache Log4J 存在代码问题漏洞,攻击者可设计一个数据请求发送给使用 Apache Log4j工具的服务器,当该请求被打印成日志时就会触发远程代码执行。",
"description_en": "Apache Log4j2 2.0-beta9 through 2.12.1 and 2.13.0 through 2.15.0 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. From version 2.16.0, this functionality has been completely removed. Note that this vulnerability is specific to log4j-core and does not affect log4net, log4cxx, or other Apache Logging Services projects.",
"suggestion": "2.12.1及以下版本可以更新到2.12.2,其他建议更新至2.15.0或更高版本,漏洞详情可参考:https://github.com/apache/logging-log4j2/pull/608 \r\n1、临时解决方案,适用于2.10及以上版本:\r\n\t(1)设置jvm参数:“-Dlog4j2.formatMsgNoLookups=true”;\r\n\t(2)设置参数:“log4j2.formatMsgNoLookups=True”;",
"attack_type": "远程",
"release_date": "2021-12-10",
"security_level_id": 1,
"exploit_level_id": 1
}
]
漏洞库字段说明
字段 | 描述 | 是否必填 |
---|---|---|
vendor |
组件厂商 | 否 |
product |
组件名 | 是 |
version |
漏洞影响版本 | 是 |
language |
组件语言 | 是 |
name |
漏洞名 | 否 |
id |
自定义编号 | 是 |
cve_id |
cve 编号 | 否 |
cnnvd_id |
cnnvd 编号 | 否 |
cnvd_id |
cnvd 编号 | 否 |
cwe_id |
cwe 编号 | 否 |
description |
漏洞描述 | 否 |
description_en |
漏洞英文描述 | 否 |
suggestion |
漏洞修复建议 | 否 |
attack_type |
攻击方式 | 否 |
release_date |
漏洞发布日期 | 否 |
security_level_id |
漏洞风险评级(1~4 风险程度递减) | 否 |
exploit_level_id |
漏洞利用评级(0:不可利用,1:可利用) | 否 |
本地漏洞库中language
字段设定值包含java、javascript、golang、rust、php、ruby、python
version
范围描述:
符号 | 描述(x 为检出的组件版本) |
---|---|
[a,b] |
a<=x<=b |
(a,b) |
a<x<b |
[a,b) |
a<=x<b |
(a,b] |
a<x<=b |
(0,b) |
x<b |
(a,) |
x>a |
{a,b,c,...} |
x=a 或 x=b 或 x=c 或 ... |
同时位于多个范围需要用||
连接,例如:
[a,b)||(b,c]
代表a<=x<b
或b<x<=c
,即a<=x<=c
且x!=b
也可以区间和集合混用:
(0,b)||{c,d}||[e,)
代表x<b
或x=c
或x=d
或x>=e
漏洞库配置示例
{
"origin":{
"json":"db.json",
"mysql":{
"dsn":"user:password@tcp(ip:port)/dbname",
"table":"table_name"
},
"sqlite":{
"dsn":"sqlite.db",
"table":"table_name"
}
}
}
常见问题
使用OpenSCA需要配置环境变量吗?
不需要。解压后直接在命令行或终端工具中执行对应命令即可开始检测。
OpenSCA目前支持哪些漏洞库呢?
OpenSCA支持自主配置本地漏洞库,需要按照漏洞库文件格式配置。
同时OpenSCA提供云漏洞库服务,兼容NVD、CNVD、CNNVD等官方漏洞库。
使用OpenSCA检测时,检测速度与哪些因素有关?
检测速度与压缩包大小、网络状况和检测语言有关,通常情况下会在几秒到几分钟。
v1.0.11开始在默认逻辑中新增了阿里云镜像库作为maven官方库的备用,解决了官方库连接受限导致的检测速度过慢问题。
v1.0.10及更低版本使用时如遇检测速度异常慢、日志文件中有maven连接失败报错,v1.0.6-v1.0.10可在配置文件config.json中将“maven”字段作如下设置:
{
"maven": [
{
"repo": "https://maven.aliyun.com/repository/public",
"user": "",
"password": ""
}
]
}
设置完毕后,确保配置文件和opensca-cli在同一目录下,执行opensca-cli检测命令加上-config congif.json即可,示例:
opensca-cli -token {token} -path {path} -out output.html -config config.json
v1.0.5及更低版本需要自行修改源码配置镜像库地址,建议升级到更高版本。
更多常见问题,参见常见问题。
OpenSCA-cli 是一款开源的软件成分分析工具,旨在帮助企业和个人用户扫描项目的开源组件依赖、漏洞及许可证信息。它提供了一种低成本、高精度且稳定易用的开源软件供应链安全解决方案。
项目快速启动
要快速启动 OpenSCA-cli,请按照以下步骤操作:
安装 OpenSCA-cli
curl -sSL https://raw.githubusercontent.com/XmirrorSecurity/OpenSCA-cli/master/scripts/install.sh | sh
运行 OpenSCA-cli
opensca-cli -path [project_path] -config [config_path] -out [filename] [suffix] -token [token]
应用案例和最佳实践
OpenSCA-cli 广泛应用于以下场景:
企业安全管理:帮助企业识别和修复开源组件中的安全漏洞。
开源项目维护:开源项目维护者可以使用 OpenSCA-cli 定期扫描项目,确保项目的安全性。
DevSecOps 集成:将 OpenSCA-cli 集成到 CI/CD 流程中,实现自动化安全扫描。
典型生态项目
OpenSCA-cli 与其他开源项目和工具的集成,可以进一步增强其功能:
CI/CD 工具:与 Jenkins、GitHub Actions 等 CI/CD 工具集成,实现自动化扫描。
代码仓库:与 GitHub、GitLab 等代码仓库集成,方便项目管理。
安全工具:与其他安全工具如 SonarQube、OWASP Dependency-Check 等集成,形成完整的安全生态。
通过以上步骤和案例,您可以快速上手并有效利用 OpenSCA-cli 来提升项目的安全性。
大多数企业或多或少的会去采购第三方软件,或者研发同学在开发代码时,可能会去使用一些好用的软件包或者依赖包,但是如果这些包中存在恶意代码,又或者在安装包时不小心打错了字母安装了错误的软件包,则可能出现供应链攻击。因此去识别采购或者自研项目中的软件包,来保证其版本足够新、不存在恶意代码是解决供应链的一项重要措施,而SCA(软件成分分析)可以帮助完成这一动作。
下载地址:
https://github.com/XmirrorSecurity/OpenSCA-cli
使用方法:
首先使用了Docker的方式,快速扫描本地:
docker run -ti --rm -v ${PWD}:/src opensca/opensca-cli
直接使用Github下载的二进制文件进行了本地扫描:
./OpenSCA-cli -token xe43dxxf55-xx-xx-xx-xxx -proj "" -path ${待检测目标路径}
云端还是能扫出不少东西的:
DependencyTrack
下载地址:
https://github.com/DependencyTrack/dependency-track
参考官方文档:
https://docs.dependencytrack.org/getting-started/deploy-docker/
这里使用Docker启动,且先不使用数据库:
curl -LO https://dependencytrack.org/docker-compose.yml
docker-compose up -d
根据docker-compose.yml内容,frontend前端端口是8080,访问8080,使用admin/admin登录:
使用python-sbom生成工具生成sbom:
https://github.com/CycloneDX/cyclonedx-python
python -m pip install cyclonedx-bom
python3 -m cyclonedx_py -h
python3 -m cyclonedx_py requirements -o out.json
然后到Projects->Create project->Components->Upload BOM上传生成的BOM即可。
发现一个问题,就以python为例,DependencyTrack解析的是requirements等方式来获取的软件清单,相比于OpenSCA-cli少了很多,比如hostScan项目中的requirements.txt文件里面的包就是17个,DependencyTrack识别到的就是17个:
而OpenSCA-cli会发现一些依赖的包: