
英语|中文
Opensca旨在扫描第三方依赖性,漏洞和许可证。
我们的网站:https://opensca.xmirror.cn
点击星星留下鼓励。
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 (对于后两个,需要Pipenv环境和互联网连接) |
根据您的系统体系结构从版本中下载适当的可执行文件。
或下载源代码和编译(需要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
// 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默认选项是生成当前系统体系结构的程序。如果您想尝试其他系统体系结构,则可以在编译之前设置以下环境变量。
CGO_ENABLED CGO_ENABLED=0GOOS=${OS} \ darwin,liunx,windowsGOARCH=${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 xxx |
proj | string | SaaS项目token与Opensca SaaS同步报告 | -proj xxx |
从v3.0.0中,除了可用于CMD/CRT的这些参数外,还有其他针对不同要求的参数,必须在配置文件中设置。
有关每个参数的完整介绍可以在config.json中找到
v3.0.2及更高版本允许Opensca-CLI与Opensca SaaS(通过proj )进行SNYC报告,以便可以一起管理多个项目的所有报告。
如果配置参数与命令行输入参数发生冲突,则将采取后者。
当设定路径中没有配置文件时,将在此处生成默认设置中的一个。
如果未设置配置文件的路径,将检查以下文件:
config.json在工作目录下opensca_config.json在用户目录下config.json在opensca-cli目录下从v3.0.0中, url已放入配置文件中。默认设置转到我们的云漏洞数据库。根据我们的数据库结构,也可以通过配置文件设置其他在线数据库。
使用以前的版本连接云数据库仍然需要url的设置,这可以通过CMD和配置文件完成。示例: -url https://opensca.xmirror.cn
由out参数支持的文件如下:
| 类型 | 格式 | 指定后缀 | 版本 |
|---|---|---|---|
| 报告 | json | .json | * |
xml | .xml | * | |
html | .html | v1.0.6及以上 | |
sqlite | .sqlite | v1.0.13及以上 | |
csv | .csv | v1.0.13及以上 | |
sarif | .sarif | ||
| SBOM | spdx | .spdx .spdx.json .spdx.xml | v1.0.8及以上 |
cdx | .cdx.json .cdx.xml | v1.0.11及以上 | |
swid | .swid.json .swid.xml | v1.0.11及以上 | |
dsdx | .dsdx .dsdx.json .dsdx.xml | v3.0.0及以上 |
# Use opensca-cli to scan with CMD parameters:
opensca-cli -path ${project_path} -config ${config_path} -out ${filename} . ${suffix} -token ${token}
# Start scanning after setting down the configuration file:
opensca-cli # Detect dependencies in the current directory:
docker run -ti --rm -v ${PWD} :/src opensca/opensca-cli
# Connect to the cloud vulnerability database:
docker run -ti --rm -v ${PWD} :/src opensca/opensca-cli -token ${put_your_token_here}您还可以将配置文件用于高级设置。将config.json保存到src的已安装目录或通过-config在容器中设置其他路径。在不同终端上安装当前目录的写作方法各不相同,我们在此列出了常见的fyi:
| 终端 | 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的开源日志记录工具。 rn Apache 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 rn 1、临时解决方案,适用于2.10及以上版本: rnt (1)设置jvm参数:“-Dlog4j2.formatMsgNoLookups=true”; rnt (2)设置参数:“log4j2.formatMsgNoLookups=True”; " ,
"attack_type" : "远程" ,
"release_date" : " 2021-12-10 " ,
"security_level_id" : 1 ,
"exploit_level_id" : 1
}
]| 场地 | 描述 | 是否需要 |
|---|---|---|
vendor | 组件的制造商 | n |
product | 组件的名称 | y |
version | 由漏洞影响的组件的版本 | y |
language | 组件的编程语言 | y |
name | 漏洞的名称 | n |
id | 自定义标识符 | y |
cve_id | CVE标识符 | n |
cnnvd_id | CNNVD标识符 | n |
cnvd_id | CNVD标识符 | n |
cwe_id | CWE标识符 | n |
description | 漏洞的描述 | n |
description_en | 用英语描述脆弱性 | n |
suggestion | 解决脆弱性的建议 | n |
attack_type | 攻击类型 | n |
release_date | 漏洞的发布日期 | n |
security_level_id | 脆弱性的安全级别(从1降低到4) | n |
exploit_level_id | 漏洞的利用水平(0-N/A 1-可用) | n |
*“语言”字段有几个预设的值,包括Java,JavaScript,Golang,Rust,PHP,Ruby和Python。其他语言不仅限于预设价值。
{
"origin" :{
"json" : " db.json " ,
"mysql" :{
"dsn" : " user:password@tcp(ip:port)/dbname " ,
"table" : " table_name "
},
"sqlite" :{
"dsn" : " sqlite.db " ,
"table" : " table_name "
}
}
}否。解压缩后CLI/CRT中的命令可以直接执行Opensca。
OpenSCA允许配置本地漏洞数据库。必须根据漏洞数据库文件的格式对其进行排序。
同时,Opensca还提供了一个云漏洞数据库,涵盖包括CVE/CWE/NVD/CNVD/CNNVD在内的官方数据库。
这取决于包装的大小,网络条件和语言。
从v1.0.11中,我们将Aliyun Mirror数据库添加到官方Maven存储库中,以求解由网络连接引起的滞后。
对于v1.0.10及以下,如果时间异常长,并且有关与Maven存储库的连接失败的错误信息会在日志文件中报告,则V1.0.6和V1.0.10之间的版本可以通过在config.json中设置maven字段来解决问题。
{
"maven" : [
{
"repo" : " https://maven.aliyun.com/repository/public " ,
"user" : " " ,
"password" : " "
}
]
} 设置后,将config.json保存到opensca-cli.exe的同一文件夹并执行命令。例如:
opensca-cli -token {token} -path {path} -out output.html -config config.jsonv1.0.5及以下的用户可能必须修改源代码。我们建议对更高版本进行升级。
有关更多其他常见问题,请检查常见问题解答。
热情欢迎问题。
加上微信进行进一步咨询也是一种选择:

我们的QQ组:832039395
Opensca是一个开源项目,我们感谢您的贡献!
为了做出贡献,请阅读我们的贡献指南。