
Anglais | 中文
OpenSCA est destiné à analyser les dépendances, les vulnérabilités et les licences tierces.
Notre site Web: https://opensca.xmirror.cn
Cliquez sur l'étoile pour laisser les encouragements.
OpenSCA est désormais capable d'analyser les fichiers de configuration dans les langages de programmation répertoriés et les gestionnaires de packages correspondants. L'équipe est désormais dédiée à l'introduction de plus de langues et à enrichir progressivement l'analyse des fichiers de configuration pertinents.
| LANGUE | Gestionnaire de packages | DÉPOSER |
|---|---|---|
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 (pour les deux derniers, l'environnement PiPenv et la connexion Internet sont nécessaires) |
Téléchargez le fichier exécutable approprié en fonction de votre architecture système à partir des versions.
Ou télécharger le code source et compiler ( go 1.18 et supérieur est nécessaire)
// 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 buildL'option par défaut consiste à générer le programme de l'architecture système actuelle. Si vous souhaitez l'essayer pour d'autres architectures système, vous pouvez définir les variables d'environnement suivantes avant la compilation.
CGO_ENABLED CGO_ENABLED=0GOOS=${OS} \ darwin,liunx,windowsGOARCH=${arch} \ amd64,arm64 | PARAMÈTRE | TAPER | Description | ÉCHANTILLON |
|---|---|---|---|
config | string | Définir le chemin du fichier de configuration | -config config.json |
path | string | Définir le chemin du fichier cible ou du répertoire | -path ./foo |
out | string | Enregistrez le résultat dans le fichier spécifié dont le format est défini par le suffixe | -out out.json, out.html |
log | string | Spécifiez le chemin du fichier journal | -log my_log.txt |
token | string | Vérification du service cloud à partir de notre site Web officiel | -token xxx |
proj | string | SAASS token TO SYNC RAPPORT AVEC OPENSCA SAAS | -proj xxx |
De la v3.0.0, en dehors de ces paramètres disponibles pour CMD / CRT, il y en a également d'autres pour différentes exigences qui doivent être définies dans le fichier de configuration.
L'introduction complète sur chaque paramètre peut être trouvée dans config.json
V3.0.2 et supérieur permet à OpenSCA-CLI des rapports SNYC avec OpenSCA SAAS (via proj ), afin que tous les rapports de plusieurs projets puissent être gérés ensemble.
Si le paramètre de configuration entre en conflit avec le paramètre d'entrée de ligne de commande, ce dernier sera pris.
Lorsqu'il n'y a pas de fichier de configuration dans le chemin SET, un dans les paramètres par défaut y sera généré.
Si aucun chemin de configuration n'est défini, les suivants seront vérifiés:
config.json sous le répertoire de travailopensca_config.json sous le répertoire utilisateurconfig.json sous le répertoire opensca-cli De la V3.0.0, url a été placée dans le fichier de configuration. L'ensemble par défaut va à notre base de données de vulnérabilité Cloud. Une autre base de données en ligne conformément à notre structure de base de données peut également être définie via le fichier de configuration.
L'utilisation de versions précédentes pour connecter la données cloud aura toujours besoin du réglage de url , ce qui pourrait être effectué via CMD et le fichier de configuration. Exemple: -url https://opensca.xmirror.cn
Les fichiers pris en charge par le paramètre out sont répertoriés ci-dessous:
| TAPER | FORMAT | Suffixe spécifié | VERSION |
|---|---|---|---|
| RAPPORT | json | .json | * |
xml | .xml | * | |
html | .html | v1.0.6 et supérieur | |
sqlite | .sqlite | v1.0.13 et supérieur | |
csv | .csv | v1.0.13 et supérieur | |
sarif | .sarif | ||
| Sbom | spdx | .spdx .spdx.json .spdx.xml | v1.0.8 et plus |
cdx | .cdx.json .cdx.xml | v1.0.11 et supérieur | |
swid | .swid.json .swid.xml | v1.0.11 et supérieur | |
dsdx | .dsdx .dsdx.json .dsdx.xml | v3.0.0 et supérieur |
# 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} Vous pouvez également utiliser le fichier de configuration pour les paramètres avancés. Enregistrez config.json dans le répertoire monté de src ou définissez d'autres chemins dans le conteneur via -config . La méthode d'écriture pour le montage du répertoire actuel sur différents terminaux varie, nous énumérons ceux communs ici pour info:
| Terminal | PWD |
|---|---|
bash | $(pwd) |
zsh | ${PWD} |
cmd | %cd% |
powershell | (Get-Location).Path |
Pour plus d'informations, visitez la page 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
}
]| CHAMP | Description | Requis ou non |
|---|---|---|
vendor | le fabricant du composant | N |
product | Le nom du composant | Y |
version | Les versions du composant affectées par la vulnérabilité | Y |
language | le langage de programmation du composant | Y |
name | le nom de la vulnérabilité | N |
id | identifiant personnalisé | Y |
cve_id | Identificateur CVE | N |
cnnvd_id | Identifiant CNNVD | N |
cnvd_id | Identifiant CNVD | N |
cwe_id | Identifiant CWE | N |
description | la description de la vulnérabilité | N |
description_en | La description de la vulnérabilité en anglais | N |
suggestion | La suggestion de réparation de la vulnérabilité | N |
attack_type | Le type d'attaque | N |
release_date | la date de sortie de la vulnérabilité | N |
security_level_id | Le niveau de sécurité de la vulnérabilité (diminuant de 1 à 4) | N |
exploit_level_id | Le niveau d'exploitation de la vulnérabilité (0-n / a 1-disponible) | N |
* Il y a plusieurs valeurs prédéfinies dans le champ "Langue", notamment Java, JavaScript, Golang, Rust, PHP, Ruby et Python. Les autres langues ne se limitent pas à la valeur prédéfinie.
{
"origin" :{
"json" : " db.json " ,
"mysql" :{
"dsn" : " user:password@tcp(ip:port)/dbname " ,
"table" : " table_name "
},
"sqlite" :{
"dsn" : " sqlite.db " ,
"table" : " table_name "
}
}
}Non. OpenSCA peut être directement exécuté par la commande dans CLI / CRT après décompression.
OpenSCA permet de configurer la base de données de vulnérabilité locale. Il doit être trié en fonction du format du fichier de base de données de vulnérabilité .
Pendant ce temps, OpenSCA propose également une base de données de vulnérabilité cloud couvrant des bases de données officielles, y compris CVE / CWE / NVD / CNVD / CNNVD.
Cela dépend de la taille du package, de la condition réseau et de la langue.
Depuis v1.0.11, nous ajoutons la base de données Mirror Aliyun comme sauvegarde au référentiel Maven officiel pour résoudre le décalage causé par la connexion réseau.
Pour v1.0.10 et ci-dessous, si le temps est anormalement long et des informations d'erreur sur l'échec de la connexion au référentiel Maven sont signalés dans le fichier journal, les utilisateurs de versions entre v1.0.6 et v1.0.10 peuvent résoudre le problème en définissant le champ maven dans config.json comme ci-dessous:
{
"maven" : [
{
"repo" : " https://maven.aliyun.com/repository/public " ,
"user" : " " ,
"password" : " "
}
]
} Après le réglage, enregistrez config.json dans le même dossier d'OpenSCA-Cli.exe et exécutez la commande. Par exemple:
opensca-cli -token {token} -path {path} -out output.html -config config.jsonLes utilisateurs de V1.0.5 et ci-dessous peuvent devoir modifier le code source. Nous recommandons une mise à niveau vers des versions supérieures.
Pour plus d'autres FAQ, veuillez consulter les FAQ.
Les problèmes sont chaleureusement les bienvenus.
Ajouter WeChat pour d'autres consultations est également une option:

Notre groupe QQ: 832039395
Boîte aux lettres: [email protected]
OpenSCA est un projet open source, nous apprécions votre contribution!
Pour contribuer, veuillez lire nos directives contributives.