OpenSCA предназначен для сканирования зависимостей третьих сторон и информации об уязвимостях в проектах.
Официальный сайт: https://opensca.xmirror.cn
Поддержите нас, нажав на star, чтобы поддержать наших коллег!
Язык | Пакетный менеджер | Разрешаемые файлы |
---|---|---|
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,linux,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 xxx
|
| proj
| string
| Токен для проекта SaaS | -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
в домашней директории пользователяconfig.json
в директории opensca-cli
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 -path ${project_path} -config ${config_path} -out ${filename}.${suffix} -token ${token}
opensca-cli
```shell
# Анализировать зависимости в текущей директории
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
, чтобы указать другой путь внутри контейнера.
Способы монтирования текущего каталога различаются в зависимости от используемого терминала. Вот несколько примеров:
терминал | путь к текущему каталогу |
---|---|
bash |
$(pwd) |
zsh |
${PWD} |
cmd |
%cd% |
powershell |
(Get-Location).Path |
Дополнительная информация доступна по адресу страницы Docker Hub
---### Формат файла с уязвимостямиjson [ { "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. \nApache Log4j имеет уязвимость в конфигурационных файлах, сообщениях журналирования и параметрах, которая позволяет злоумышленникам контролировать LDAP и другие JNDI-конечные точки. Если злоумышленник может контролировать сообщения журналирования или параметры этих сообщений, он сможет выполнить произвольный код, загруженный с серверов LDAP при активированной замене запросов.", "description_en": "Apache Log4j2 версий 2.0-beta9 до 2.12.1 и 2.13.0 до 2.15.0 имеют уязвимости в функциях JNDI, используемых в конфигурациях, сообщениях журналирования и параметрах. Эти функции не защищены от атак, управляемых злоумышленниками через LDAP и другие JNDI-конечные точки. Если злоумышленник может контролировать сообщения журналирования или параметры этих сообщений, он сможет выполнить произвольный код, загруженный с серверов LDAP при активированной замене запросов. В версиях 2.15.0 и выше эта возможность деактивирована по умолчанию. В версии 2.16.0 эта функциональность полностью удалена." } ]
Уязвимость специфична для log4j-core и не затрагивает log4net, log4cxx или другие проекты Apache Logging Services.
Предложение: Для версий 2.12.1 и ниже рекомендуется обновиться до версии 2.12.2, для остальных версий рекомендуется обновиться до версии 2.15.0 или выше. Подробнее см.: https://github.com/apache/logging-log4j2/pull/608
vendor
| Производитель компонента | Нет |
| product
| Наименование компонента | Да |
| version
| Версия, затронутая уязвимостью | Да |
| language
| Язык компонента | Да |
| name
| Наименование уязвимости | Нет |
| id
| Уникальный идентификатор | Да |
| cve_id
| ID CVE | Нет |
| cnnvd_id
| ID CNNVD | Нет |
| cnvd_id
| ID CNVD | Нет |
| cwe_id
| 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
.| Символ | Описание (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 предоставляет облачную службу базы данных уязвимостей, совместимую с официальными базами данных NVD, CNVD, CNNVD.### На что влияет скорость сканирования при использовании OpenSCA?
Скорость сканирования зависит от размера архива, состояния сети и используемого языка. Обычно это занимает несколько секунд до нескольких минут.
С версии v1.0.11 в стандартной логике была добавлена облачная база данных Alibaba Cloud как резервная для официальной Maven, что решило проблему замедленного сканирования из-за ограничений соединения с официальной базой данных.
Для версий v1.0.10 и ниже, если вы столкнулись с замедлением скорости сканирования или ошибками подключения Maven в логах, можно настроить поле "maven"
в файле конфигурации config.json
следующим образом:
{
"maven": [
{
"repo": "https://maven.aliyun.com/repository/public",
"user": "",
"password": ""
}
]
}
После завершения настройки убедитесь, что файл конфигурации находится в одной директории с opensca-cli
, затем выполните команду сканирования opensca-cli
с ключом -config config.json
, пример:
opensca-cli -token {token} -path {path} -out output.html -config config.json
Для версий v1.0.5 и ниже потребуется самостоятельная модификация исходного кода для настройки адреса зеркального сервера, рекомендуется обновиться до более новой версии.
Больше часто задаваемых вопросов, см. часто задаваемых вопросов.
Вы также можете добавить следующий WeChat:
Группа QQ для технического общения: 832039395
Официальная электронная почта: opensca@anpro-tech.com
OpenSCA — это открытый инструмент анализа компонентного состава программного обеспечения, члены проекта ожидают вашего вклада. Если вас заинтересовал этот проект, пожалуйста, обратитесь к нашему вкладышному руководству.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )