1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/XmirrorSecurity-OpenSCA-cli

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md
logo

Используйте открытый источник для управления рисками открытым исходным кодом

Релиз Скачивание GitHub Запрос Docker Плагин JetBrains Плагин VSCode Лицензия Версия Go модуля

Китайский | Английский

- [Проект](#проект) - [Обнаружение уязвимостей](#обнаружение-уязвимостей) - [Установка](#установка) - [Использование](#использование) - [Описание параметров](#описание-параметров) - [Формат отчета](#формат-отчета) - [Пример использования](#пример-использования) - [Формат файла базы данных уязвимостей](#формат-файла-базы-данных-уязвимостей) - [Описание полей базы данных уязвимостей](#описание-полей-базы-данных-уязвимостей) - [Пример конфигурации базы данных уязвимостей](#пример-конфигурации-базы-данных-уязвимостей) - [Часто задаваемые вопросы](#часто-задаваемые-вопросы) - [Необходимо ли настраивать переменные окружения при использовании OpenSCA?](#необходимо-ли-настраивать-переменные-окружения-при-использовании-opensca) - [Какие базы данных уязвимостей поддерживаются в настоящее время OpenSCA?](#какие-базы-данных-уязвимостей-поддерживаются-в-настоящее-время-opensca) - [Какие факторы влияют на скорость обнаружения уязвимостей с помощью OpenSCA?](#какие-факторы-влияют-на-скорость-обнаружения-уязвимостей-с-помощью-opensca) - [Отправка отзывов & Контактная информация](#отправка-отзывов--contactinfo) - [Конечные участники](#конечные-участники) - [Вклад в проект](#вклад-в-проект) ## Проект

OpenSCA предназначен для сканирования зависимостей третьих сторон и информации об уязвимостях в проектах.

Официальный сайт: https://opensca.xmirror.cn

Поддержите нас, нажав на 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

Установка1. Скачайте архив с исполняемым файлом с GitHub, Gitee или GitCode для вашего типа системы.2. Либо скачайте исходный код и скомпилируйте его (требуется версия 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 для удобства управления активами и рисками.

Если конфигурационный файл и параметры командной строки конфликтуют, приоритет отдается параметрам командной строки.

Указание пути конфигурационного файла создает по умолчанию конфигурационный файл в указанном месте, если он ещё не существует.

Без указания пути конфигурационного файла будет последовательно проверяться доступность следующих мест:

  1. Конфигурационный файл config.json в рабочей директории
  2. Конфигурационный файл opensca_config.json в домашней директории пользователя
  3. Конфигурационный файл 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

Пример использования```shell

Используйте opensca-cli для анализа

opensca-cli -path ${project_path} -config ${config_path} -out ${filename}.${suffix} -token ${token}

После создания конфигурационного файла можно запустить opensca-cli

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

  1. Временное решение для версий 2.10 и выше: (1) Установите JVM параметр: "-Dlog4j2.formatMsgNoLookups=true"; (2) Установите параметр: "log4j2.formatMsgNoLookups=True"; Тип атаки: удалённый Дата выпуска: 2021-12-10 Уровень безопасности: 1 Уровень эксплуатации: 1| Поле | Описание | Обязательное | | :------------------- | :----------------------------------- | :----------- | | 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?

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 и ниже потребуется самостоятельная модификация исходного кода для настройки адреса зеркального сервера, рекомендуется обновиться до более новой версии.

Больше часто задаваемых вопросов, см. часто задаваемых вопросов.

Отправка отзывов & связаться с намиЕсли у вас возникли проблемы во время использования, пожалуйста, отправьте ISSUE нам.

Вы также можете добавить следующий WeChat:

QR-код

Группа QQ для технического общения: 832039395

Официальная электронная почта: opensca@anpro-tech.com

Вкладчики

  • Zhang Tao
  • Zhang Chi
  • Chen Zhong
  • Liu Enzhi
  • Ning Ge

Внесение вклада

OpenSCA — это открытый инструмент анализа компонентного состава программного обеспечения, члены проекта ожидают вашего вклада. Если вас заинтересовал этот проект, пожалуйста, обратитесь к нашему вкладышному руководству.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

OpenSCA — это инструмент для анализа программных компонентов с открытым исходным кодом. Он используется для сканирования зависимостей, уязвимостей и информации о лицензиях в компонентах проекта. Инструмент предлагает предприятиям и частным пользователям доступное по цене, точное и надёжное решение для обеспечения безопасности цепочки поставок пр... Развернуть Свернуть
Apache-2.0
Отмена

Обновления (19)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/XmirrorSecurity-OpenSCA-cli.git
git@api.gitlife.ru:oschina-mirror/XmirrorSecurity-OpenSCA-cli.git
oschina-mirror
XmirrorSecurity-OpenSCA-cli
XmirrorSecurity-OpenSCA-cli
master