Настройка политик¶
Принципы работы¶
Политики в системе CodeScoring представляют собой механизм отслеживания и блокирования Open Source компонентов в процессе разработки программного обеспечения. Они могут быть связаны с проверкой безопасности, совместимости лицензий или других критериев включения сторонних компонентов в разработку.
Политики можно создавать для:
- всей организации;
- подразделения;
- проекта;
- окружения разработки;
- репозитория;
- типа компонента.
Механизм политик учитывает указанный этап разработки программного обеспечения: от поступления сторонних компонентов в периметр организации до отслеживания сборок и написания нового кода.
Политики настраиваются по условиям, объединенным логическим выражением И/ИЛИ. Помимо стандартных настроек политик безопасности по уровню критичности уязвимостей, условия могут быть настроены согласно информации о компоненте: дата релиза, лицензия, автор и другие. Всего поддерживается 40 типизированных условий. Среди проверок также присутствует встроенная вендорская политика проверки на лицензионную чистоту.
В результате срабатывания политики в системе CodeScoring создаются соответствующие оповещения Policy Alerts. Выбранные оповещения можно временно или навсегда проигнорировать. Оповещения могут быть экспортированы в виде отчета.
Политики могут быть блокирующими: при срабатывании такой политики используемые компоненты блокируются в хранилище артефактов (прокси-репозитории), либо останавливается сборка программного продукта до устранения выявленного дефекта.
Дополнительно, по срабатыванию политики может быть направлено уведомление ответственным специалистам в систему управления задачами или электронное письмо с описанием проблемы.
Настройка в системе¶
Политики создаются в разделе Settings -> Policies
. Перейти на форму создания политики можно по кнопке Create new.
В форме создания политики задается контекст работы политики по следующим параметрам:
- Name — название политики;
- Proprietors — собственник кода, на которого распространяется политика, если пустое - политика применяется для всей организации;
- Projects — проекты, на которые применяется политика;
- Stages — стадии проекта, для которых применяется политика;
- OSA Components – тип компонентов в плагинах OSA, для которых применяется политика (Packages или Container images)
- Repositories – список репозиториев, для которых применяется политика;
- Level — уровень критичности политики;
- Blocker — признак блокировки сборки или установки компонента из прокси-репозитория;
- Is active — признак временного выключения политики;
- Description — описание политики;
- Conditions — перечень условий в политике.
Далее настраиваются условия срабатывания политики, поддерживаются следующие параметры:
- PURL — package URL, идентификатор пакета;
- Dependency Name — название зависимости;
- Dependency Version — версия зависимости;
- Dependency Author — автор зависимости;
- Dependency Release Date — дата релиза версии зависимости;
- Dependency Age — возраст зависимости;
- Dependency Vulnerability Count — количество уязвимостей в зависимости;
- Dependency is dangerous — зависимость опасна;
- Technology — технология (язык или экосистема);
- License — лицензия;
- License Category — категория лицензии;
- Vulnerability ID — идентификатор уязвимости;
- CVSS2 Score — численная оценка угрозы по стандарту CVSS 2;
- CVSS2 Severity — уровень угрозы по стандарту CVSS 2;
- CVSS2 Access Vector (AV) – путь эксплуатации уязвимости (физический или сетевой);
- CVSS2 Access Complexity (AC) – сложность эксплуатация уязвимости;
- CVSS2 Authentication (Au) – требования аутентификации для эксплуатации уязвимости;
- CVSS2 Availability Impact (A) – степень потери доступности данных;
- CVSS2 Confidentiality Impact (C) – cтепень потери конфиденциальности данных;
- CVSS2 Integrity Impact (I) – степень потери целостности данных;
- CVSS3 Score — численная оценка угрозы по стандарту CVSS 3;
- CVSS3 Severity — уровень угрозы по стандарту CVSS 3;
- CVSS3 Attack Vector (AV) - поверхность атаки;
- CVSS3 Attack Complexity (AC) - сложность атаки;
- CVSS3 Priviliges Required (PR) - требуемый уровень доступа для эксплуатации уязвимости;
- CVSS3 User Interaction (UI) - наличие взаимодействия с пользователем;
- CVSS3 Scope (S) - область безопасности компонента;
- CVSS3 Confidentiality (C) - cтепень потери конфиденциальности данных;
- CVSS3 Integrity (I) - степень потери целостности данных;
- CVSS3 Availability (A) - степень потери доступности данных;
- Vulnerability Publish Date — дата публикации уязвимости;
- Vulnerability Update Date — дата обновления уязвимости;
- Vulnerability impacts (Kaspersky) - область уязвимости;
- Vulnerability has exploit - наличие эксплойта в уязвимости;
- Vulnerability has fixed version – уязвимость исправлена в новой версии;
- Vulnerability Age (days) – возраст уязвимости (в днях);
- Env — окружение;
- Match type — тип соответствия зависимости (по манифесту, содержанию или разрешению);
- Relation — прямая или транзитивная зависимость;
- CWE — классификация в индексе Common Weakness Enumeration.
Условия политики (Rule) можно объединять в группы (Group) с помощью логических выражений AND/OR. Группы не имеют ограничений по уровню вложенности и количеству условий.
Например, можно задать условия политики для следующего сценария – либо зависимость содержит уязвимость с эксплойтом и рекомендацию по исправлению, либо зависимость является директивной и содержит критическую уязвимость по стандарту CVSS 3.
Для создания такой политики необходимо добавить две группы, объединенные выражением OR. Это значит, что политика сработает при соответствии любой из перечисленных групп условий. Внутри группы задаются условия, объединенные выражением AND.
Политика становится активной сразу после создания по нажатию кнопки Create. Для созданной политики можно настроить действия при ее срабатывании: уведомление на почту или создание задачи в Jira.
Важно! Политики срабатывают во время анализа, поэтому важно их создать до запуска анализа.
Рекомендация! Если оставить поля Proprietor
и Project
пустыми, политика будет применяться для всех активных проектов в системе.
Результаты работы политик¶
Результаты работы политик отображаются в разделе Policy alerts
. Раздел имеет три вкладки:
- Active – список уведомлений о сработавших политиках по результатам последнего анализа (проекта, образа или компонента в прокси-репозитории);
- Ignored – список уведомлений о проигнорированных политиках;
- Resolved – список уведомлений, которые были разрешены после последнего анализа (условие политики больше не актуально).
Причина срабатывания политики отображается в поле Matched criteria, включая заданные условия и найденные данные о компоненте. Например, значение django@4.2.2 has CVE-2024-38875, CVSS3 Score 7.5 >= 7.00
подразумевает, что политика блокирования компонентов с CVSS3 равным или выше 7.00 сработала на компоненте django@4.2.2 с рейтингом уязвимости 7.5.
Игнорирование политик¶
Созданные политики можно временно или навсегда проигнорировать при анализе. Условие игнорирования позволит оставить политики в системе, при этом не получая уведомлений о ее срабатывании, например в случае если быстро исправить уязвимость невозможно. Создание и настройка условий игнорирования происходит в разделе Settings -> Policy Ignores
.
Для создания условия игнорирования для одной или нескольких политик необходимо нажать на кнопку Create New и заполнить следующие поля:
- Project - название проекта в системе;
- Technology - технология (язык или экосистема);
- Dependency name - название зависимости;
- Dependency version - версия зависимости;
- License - лицензия;
- Vulnerability ID - идентификатор уязвимости;
- Policies - игнорируемые политики;
- Is enabled - признак активности условия;
- Active from - дата начала работы условия;
- Active to - дата завершения работы условия;
- Note - заметка.