SASTMASTER#

SASTMASTER представляет собой модуль для выполнения SAST-анализа обеспечивающий интеграцию и управление инструментами статического анализа кода.

Состав SASTMASTER#

SASTMASTER включает следующие элементы:

  • SAST-адаптер - представляет собой программный адаптер ASOC, обеспечивающий интеграцию и управление инструментами статического анализа кода.

  • TASKMANAGER - декомпозирует задачу на подзадачи и распределяет между инструментами сканирования.

  • Infer, Gosec, Semgrep, GitLeaks, PTAI, Svace - инструменты сканирования.

Принцип действия SASTMASTER#

Принцип действия SASTMASTER:

  • SASTMASTER получает задачи на сканирование из очереди Kafka.

  • Декомпозирует задачи полученные из очереди Kafka.

  • Распределяет подзадачи между соответствующим инструментам сканирования.

  • Собирает результаты сканирования, сохраняет и возвращает результат анализа в Личный кабинет.

Настройка подключения SASTMASTER#

Порядок настройки подключения SASTMASTER описан в Руководстве по установке.

Сценарий работы SASTMASTER#

Описание процесса выполнения задачи на сканирование модулем SASTMASTER:

  1. В модуль сканирования SASTMASTER поступает задача на сканирование из топика SCAN.SAST.SASTMASTER.{stand-type}.{project-code}.

  2. SAST-адаптер декомпозирует задачу на подзадачи для разных инструментов сканирования и передает подзадачи в TASKMANAGER.

  3. TASKMANAGER распределяет подзадачи между инструментами сканирования (Infer, Gosec, Semgrep, GitLeaks, PTAI, Svace) через топики TOOL_SCAN.SAST.{tool}.{stand-type}.{project-code}.

  4. При старте задачи SAST-адаптер отправляет начальный статус задачи в SCAN_STATUS.{stand-type}.{project-code}.

  5. В процессе анализа Оркестратор получает статус состояния подзадачи и отправляет актуальный статус в топик Kafka PO_SCAN_STATUS.{stand-type}.{project-code} для обновления статуса подзадачи в UI Личного кабинета.

  6. Инструменты сканирования выполняют анализ и возвращают результаты SAST-адаптер.

  7. SAST-адаптер отправляет текущий статус задачи в SCAN_STATUS.{stand-type}.{project-code} и отправляет результат в Личный кабинет.

Инструменты сканирования PTAI, Svace собраны на основе агентов, при получении задачи на сканирование агенты обращаются к внешним системам, которые выполняют анализ кода.

Дедупликация результатов сканирования#

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

  1. После завершения сканирования в каждом инструменте сканирования (Infer, Gosec, Semgrep, GitLeaks, PTAI, Svace) формируется список найденных уязвимостей.

  2. Инструменты сканирования передают результаты сканирования в SAST-адаптер.

  3. В SAST-адаптере формируется список уязвимостей для дедупликации одинаковых уязвимостей от разных инструментов в рамках текущего сканирования.

  4. Для выполнения дедупликации через сервис «Модуль вычисления normalizedFindingKey» у каждой найденной уязвимости формируется normalizedFindingKey.

  5. Выполняется дедупликация.

  6. После завершения дедупликации результат сохраняется в Личном кабинете.

Использование SASTMASTER#

Проблематика#

SASTMASTER предназначен для автоматизации процесса статического анализа исходного кода и решает следующие проблемы:

  • Сложность ручной настройки и сопровождения процесса анализа.

  • Необходимость интеграции с различными системами и инструментами.

  • Автоматизация проверки и обработки результатов анализа.

Предусловия#

Для выполнения сценария необходимо быть авторизованным пользователем в текущей организации.

Последовательность выполнения#

Описание запуска процесса сканирования:

  1. Пользователь запускает Jenkins job для сборки дистрибутива сканируемого программного продукта, Jenkins job сборки вызывает REST Open API Оркестратора.

  2. Оркестратор вызывает модуль сканирования SASTMASTER.

  3. Пользователь переходит в UI ASOC для просмотра результатов сканирования.

Описание API SASTMASTER приведено в разделе Программные интерфейсы.

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

Подробный сценарий разметки уязвимостей приведен в разделе Разметка уязвимостей найденных модулями сканирования ASOC.

Статусы разметки уязвимостей#

Статус

Значение

Описание

not affected

Не влияет на безопасность

Указанная уязвимость присутствует в базе, но текущая версия ПО или компонент не подвержена этой уязвимости

exploitable

Актуальная уязвимость

Уязвимость может быть использована для атаки. Уязвимость требует приоритетного устранения

out of scope

Вне контекста проверки

Уязвимость обнаружена, но относится к компоненту, который не входит в текущую зону анализа

false positive

Уязвимость опровергнута

Инструмент сообщил об уязвимости, но на самом деле ее нет. Ошибка анализа, требует ручной проверки и закрытия

ВАЖНО! Для статуса 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