
Inglés | 中文
OpenSCA está destinado a escanear dependencias de terceros, vulnerabilidades y licencias.
Nuestro sitio web: https://opensca.xmirror.cn
Haga clic en Estrella para dejar el aliento.
OpenSCA ahora es capaz de analizar archivos de configuración en los lenguajes de programación listados y los administradores de paquetes correspondientes. El equipo ahora está dedicado a introducir más idiomas y enriquecer el análisis de los archivos de configuración relevantes gradualmente.
| IDIOMA | Administrador de paquetes | ARCHIVO |
|---|---|---|
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 (para los dos últimos, se necesitan entorno Pipenv y conexión a Internet) |
Descargue el archivo ejecutable apropiado de acuerdo con la arquitectura de su sistema de los lanzamientos.
O descargue el código fuente y compile (es necesario go 1.18 y arriba)
// 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 buildLa opción predeterminada es generar el programa de la arquitectura del sistema actual. Si desea probarlo para otras arquitecturas del sistema, puede establecer las siguientes variables de entorno antes de compilar.
CGO_ENABLED CGO_ENABLED=0GOOS=${OS} \ darwin,liunx,windowsGOARCH=${arch} \ amd64,arm64 | PARÁMETRO | TIPO | Descripción | MUESTRA |
|---|---|---|---|
config | string | Establezca la ruta del archivo de configuración | -config config.json |
path | string | Establezca la ruta del archivo o directorio de destino | -path ./foo |
out | string | Guardar el resultado en el archivo especificado cuyo formato se define mediante el sufijo | -out out.json, out.html |
log | string | Especificar la ruta del archivo de registro | -log my_log.txt |
token | string | Verificación del servicio en la nube de nuestro sitio web oficial | -token xxx |
proj | string | SaaS Project token para sincronizar el informe con OpenSca SaaS | -proj xxx |
Desde V3.0.0, aparte de estos parámetros disponibles para CMD/CRT, también hay otros para diferentes requisitos que deben establecerse en el archivo de configuración.
La introducción completa sobre cada parámetros se puede encontrar en config.json
V3.0.2 y arriba permite que OpenSca-Cli los informes SNYC con OpenSca SaaS (a través de proj ), de modo que todos los informes de múltiples proyectos se puedan gestionar juntos.
Si el parámetro de configuración entra en conflicto con el parámetro de entrada de línea de comandos, este último se tomará.
Cuando no hay un archivo de configuración en la ruta establecida, uno en la configuración predeterminada se generará allí.
Si no se establece una ruta del archivo de configuración, se verificarán los siguientes:
config.json en el directorio de trabajoopensca_config.json en el directorio de usuarioconfig.json en el directorio opensca-cli Desde V3.0.0, url se ha colocado en el archivo de configuración. El conjunto predeterminado va a nuestra base de datos de vulnerabilidad en la nube. Otra base de datos en línea de acuerdo con la estructura de nuestra base de datos también se puede establecer a través del archivo de configuración.
El uso de versiones anteriores para conectar el seno de datos en la nube aún necesitará la configuración de url , que podría hacerse a través de CMD y archivo de configuración. Ejemplo: -url https://opensca.xmirror.cn
Los archivos compatibles con el parámetro out se enumeran a continuación:
| TIPO | FORMATO | Sufijo especificado | VERSIÓN |
|---|---|---|---|
| INFORME | json | .json | * |
xml | .xml | * | |
html | .html | v1.0.6 y superior | |
sqlite | .sqlite | v1.0.13 y superior | |
csv | .csv | v1.0.13 y superior | |
sarif | .sarif | ||
| Sbom | spdx | .spdx .spdx.json .spdx.xml | v1.0.8 y superior |
cdx | .cdx.json .cdx.xml | v1.0.11 y superior | |
swid | .swid.json .swid.xml | v1.0.11 y superior | |
dsdx | .dsdx .dsdx.json .dsdx.xml | v3.0.0 y superior |
# 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} También puede usar el archivo de configuración para configuraciones avanzadas. Guardar config.json en el directorio montado de src o establecer otras rutas dentro del contenedor a través de -config . El método de escritura para montar el directorio actual en diferentes terminales varía, enumeramos los comunes aquí para su información:
| Terminal | pwd |
|---|---|
bash | $(pwd) |
zsh | ${PWD} |
cmd | %cd% |
powershell | (Get-Location).Path |
Para obtener más información, visite la página de 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
}
]| CAMPO | Descripción | Requerido o no |
|---|---|---|
vendor | el fabricante del componente | norte |
product | el nombre del componente | Y |
version | las versiones del componente afectado por la vulnerabilidad | Y |
language | el lenguaje de programación del componente | Y |
name | el nombre de la vulnerabilidad | norte |
id | identificador personalizado | Y |
cve_id | Identificador de CVE | norte |
cnnvd_id | identificador de CNNVD | norte |
cnvd_id | identificador de CNVD | norte |
cwe_id | Identificador de CWE | norte |
description | la descripación de la vulnerabilidad | norte |
description_en | la descripación de la vulnerabilidad en inglés | norte |
suggestion | la sugerencia para arreglar la vulnerabilidad | norte |
attack_type | el tipo de ataque | norte |
release_date | la fecha de lanzamiento de la vulnerabilidad | norte |
security_level_id | El nivel de seguridad de la vulnerabilidad (que disminuye del 1 al 4) | norte |
exploit_level_id | El nivel de exploit de la vulnerabilidad (0-N/A 1 disponible) | norte |
*Hay varios valores preestablecidos en el campo "Idioma", incluidos Java, JavaScript, Golang, Rust, PHP, Ruby y Python. Otros idiomas no se limitan al valor preestablecido.
{
"origin" :{
"json" : " db.json " ,
"mysql" :{
"dsn" : " user:password@tcp(ip:port)/dbname " ,
"table" : " table_name "
},
"sqlite" :{
"dsn" : " sqlite.db " ,
"table" : " table_name "
}
}
}No. OpenSCA puede ser ejecutado directamente por el comando en CLI/CRT después de la descompresión.
OpenSCA permite configurar la base de datos de vulnerabilidad local. Tiene que clasificarse de acuerdo con el formato del archivo de base de datos de vulnerabilidad .
Mientras tanto, OpenSCA también ofrece una base de datos de vulnerabilidad en la nube que cubre bases de datos oficiales, incluidas CVE/CWE/NVD/CNVD/CNNVD.
Depende del tamaño del paquete, la condición de la red y el idioma.
Desde V1.0.11, agregamos la base de datos de Mirror Aliyun como copia de seguridad al repositorio oficial de Maven para resolver el retraso causado por la conexión de red.
Para V1.0.10 y debajo, si el tiempo es anormalmente largo y la información de error sobre la falla de conexión al repositorio de Maven se informa en el archivo de registro, los usuarios de versiones entre V1.0.6 y V1.0.10 pueden solucionar el problema configurando el campo maven en config.json como a continuación:
{
"maven" : [
{
"repo" : " https://maven.aliyun.com/repository/public " ,
"user" : " " ,
"password" : " "
}
]
} Después de configurar, guarde config.json en la misma carpeta de opensca-cli.exe y ejecute el comando. P.ej:
opensca-cli -token {token} -path {path} -out output.html -config config.jsonLos usuarios de V1.0.5 y abajo pueden tener que modificar el código fuente. Recomendamos una actualización a versiones más altas.
Para obtener más preguntas frecuentes, consulte las preguntas frecuentes.
Los problemas son cálidamente bienvenidos.
Agregar WeChat para consultas adicionales también es una opción:

Nuestro grupo QQ: 832039395
Buzón: [email protected]
OpenSca es un proyecto de código abierto, ¡agradecemos su contribución!
Para contribuir, lea nuestra guía contribuyente.