SASTMASTER#
SASTMASTER представляет собой модуль для выполнения SAST-анализа обеспечивающий интеграцию и управление инструментами статического анализа кода.
Состав SASTMASTER#
SASTMASTER включает следующие элементы:
SAST-адаптер - представляет собой программный адаптер ASOC, обеспечивающий интеграцию и управление инструментами статического анализа кода.
TASKMANAGER - декомпозирует задачу на подзадачи и распределяет между инструментами сканирования.
Infer, Gosec, Semgrep, GitLeaks, PTAI, Svace - инструменты сканирования.
Принцип действия SASTMASTER#
Принцип действия SASTMASTER:
SASTMASTER получает задачи на сканирование из очереди Kafka.
Декомпозирует задачи полученные из очереди Kafka.
Распределяет подзадачи между соответствующим инструментам сканирования.
Собирает результаты сканирования, сохраняет и возвращает результат анализа в Личный кабинет.
Настройка подключения SASTMASTER#
Порядок настройки подключения SASTMASTER описан в Руководстве по установке.
Сценарий работы SASTMASTER#
Описание процесса выполнения задачи на сканирование модулем SASTMASTER:
В модуль сканирования SASTMASTER поступает задача на сканирование из топика
SCAN.SAST.SASTMASTER.{stand-type}.{project-code}.SAST-адаптер декомпозирует задачу на подзадачи для разных инструментов сканирования и передает подзадачи в TASKMANAGER.
TASKMANAGER распределяет подзадачи между инструментами сканирования (Infer, Gosec, Semgrep, GitLeaks, PTAI, Svace) через топики
TOOL_SCAN.SAST.{tool}.{stand-type}.{project-code}.При старте задачи SAST-адаптер отправляет начальный статус задачи в
SCAN_STATUS.{stand-type}.{project-code}.В процессе анализа Оркестратор получает статус состояния подзадачи и отправляет актуальный статус в топик Kafka
PO_SCAN_STATUS.{stand-type}.{project-code}для обновления статуса подзадачи в UI Личного кабинета.Инструменты сканирования выполняют анализ и возвращают результаты SAST-адаптер.
SAST-адаптер отправляет текущий статус задачи в
SCAN_STATUS.{stand-type}.{project-code}и отправляет результат в Личный кабинет.
Инструменты сканирования PTAI, Svace собраны на основе агентов, при получении задачи на сканирование агенты обращаются к внешним системам, которые выполняют анализ кода.

Дедупликация результатов сканирования#
Для предотвращения создания дублирующихся записей в результатах сканирования, в SASTMASTER реализован механизм дедупликации результатов сканирования от разных инструментов в рамках одного запуска:
После завершения сканирования в каждом инструменте сканирования (Infer, Gosec, Semgrep, GitLeaks, PTAI, Svace) формируется список найденных уязвимостей.
Инструменты сканирования передают результаты сканирования в SAST-адаптер.
В SAST-адаптере формируется список уязвимостей для дедупликации одинаковых уязвимостей от разных инструментов в рамках текущего сканирования.
Для выполнения дедупликации через сервис «Модуль вычисления normalizedFindingKey» у каждой найденной уязвимости формируется normalizedFindingKey.
Выполняется дедупликация.
После завершения дедупликации результат сохраняется в Личном кабинете.
Использование SASTMASTER#
Проблематика#
SASTMASTER предназначен для автоматизации процесса статического анализа исходного кода и решает следующие проблемы:
Сложность ручной настройки и сопровождения процесса анализа.
Необходимость интеграции с различными системами и инструментами.
Автоматизация проверки и обработки результатов анализа.
Предусловия#
Для выполнения сценария необходимо быть авторизованным пользователем в текущей организации.
Последовательность выполнения#
Описание запуска процесса сканирования:
Пользователь запускает Jenkins job для сборки дистрибутива сканируемого программного продукта, Jenkins job сборки вызывает REST Open API Оркестратора.
Оркестратор вызывает модуль сканирования SASTMASTER.
Пользователь переходит в UI ASOC для просмотра результатов сканирования.
Описание API SASTMASTER приведено в разделе Программные интерфейсы.
Выполнение разметки найденных уязвимостей#
Подробный сценарий разметки уязвимостей приведен в разделе Разметка уязвимостей найденных модулями сканирования ASOC.
Статусы разметки уязвимостей#
Статус |
Значение |
Описание |
|---|---|---|
|
Не влияет на безопасность |
Указанная уязвимость присутствует в базе, но текущая версия ПО или компонент не подвержена этой уязвимости |
|
Актуальная уязвимость |
Уязвимость может быть использована для атаки. Уязвимость требует приоритетного устранения |
|
Вне контекста проверки |
Уязвимость обнаружена, но относится к компоненту, который не входит в текущую зону анализа |
|
Уязвимость опровергнута |
Инструмент сообщил об уязвимости, но на самом деле ее нет. Ошибка анализа, требует ручной проверки и закрытия |
ВАЖНО! Для статуса
not affected, необходимо выбрать категорию обоснования в выпадающем списке.
Конфигурация состояний уязвимости#
В платформе реализована гибкая и расширяемая система классификации результатов анализа.
Доступно расширение и изменение состояний верификации посредством добавления новых состояний без изменения схемы базы
данных, путем изменения конфигурационного файла application.yaml компонента Личный кабинет (asoc-personal-office).
Пример конфигурационного YAML-файла:
states:
TODO:
label: "ToDo"
transitions:
- IN_REVIEW
permissions:
- VULNERABILITY_ANALYSIS
IN_REVIEW:
label: "In review"
transitions:
- APPROVED
- RETURNED
permissions:
- VULNERABILITY_ANALYSIS
RETURNED:
label: "Returned"
transitions:
- IN_REVIEW
permissions:
- VULNERABILITY_ANALYSIS
APPROVED:
label: "Approved"
transitions:
- REOPENED
permissions:
- TRIAGE_VULNERABILITY
REOPENED:
label: "Reopened"
transitions:
- IN_REVIEW
permissions:
- VULNERABILITY_ANALYSIS
TO_RECONSIDER:
label: "To reconsider"
transitions:
- APPROVED
permissions:
- VULNERABILITY_ANALYSIS
.