Перейти к содержанию

Сессии разбора уязвимостей

Сессия разбора — способ разобрать обнаружения анализаторов не по одной, а по срезу (снэпшоту): инженер ИБ проходит по списку уязвимостей снэпшота и ставит каждой классификацию, второй сотрудник проверяет разметку, и только утверждённые классификации попадают в проект.

До завершения проверки разметка остаётся черновиком: на странице «Безопасность» обнаруженные уязвимости продолжают показываться неклассифицированными.

Права доступа

Действие Требуемое право
Создание сессии, разметка, отправка на проверку Разбор уязвимостей (TRIAGE_VULNERABILITY_SESSION)
Проверка разметки, утверждение и отклонение Проверка разбора уязвимостей (APPROVE_VULNERABILITY_SESSION)
Отмена сессии, находящейся на проверке Администратор проекта

Оба права доступны с уровня «Разработчик» и выше.

Открыть сессию на чтение может её автор, назначенный проверяющий и любой обладатель права проверки разбора. Анонимному пользователю сессии Разметки недоступны.

Перейти к разметке уязвимостей можно по пути Проект → БезопасностьРазметка. Раздел содержит две вкладки:

  • Мои сессии — сессии, где вы автор;
  • Сессии на проверке — общий список отправленных сессий проекта. Вкладка видна только с правом проверки разбора.

На обеих вкладках доступны фильтры «Статус» и «Ветка», а также поиск по имени сессии.

Жизненный цикл

Статус Что означает Что доступно
Новая Сессия создана, идёт разметка Разметка, «Закончить сессию», «Распустить сессию»
На проверке Отправлена, ждёт проверяющего или уже закреплена за ним Просмотр автору; проверка — проверяющему; отмена — администратору проекта
Отклонена Часть позиций вернулась автору на доработку Повторная разметка вернувшегося, повторная отправка, переназначение инженера
Утверждена Разметка принята, классификация применена Только просмотр
Распущена Сессия отменена автором до отправки Не отображается ни в одном списке

Переходы: Новая → На проверке → Утверждена либо → Отклонена → На проверке (повторный цикл проверки). Отклонить можно только из статуса «Новая».

Создание сессии

Кнопка Начать новую сессию открывает окно «Создать сессию»:

  1. Ветка или тег — выбирается на соответствующей вкладке;
  2. Snapshot — срез результатов анализа по выбранной ветке или тегу;
  3. Тип отчёта — SAST, DAST или SCA.

В списке типов отчёта предлагаются только те, по которым в снэпшоте осталась хотя бы одна свободная уязвимость — то есть без решения по классификации и не занятая другой сессией. Тип, для которого разбирать нечего, дал бы пустую очередь, поэтому он не показывается и не принимается.

Имя сессии задавать не нужно: оно формируется из названия снэпшота. Дополнительно сессия получает локальный порядковый номер в проекте, он показывается как #N.

Сессия фиксируется на сочетании «снэпшот + тип отчёта + автор». Пока предыдущая не утверждена и не распущена, создать вторую такую же нельзя — интерфейс сообщит, что сессия уже открыта, отправлена на проверку либо вернулась на доработку.

Разметка

Экран разметки подписан «Этап 1: Классификация ложного срабатывания» и состоит из списка уязвимостей слева и карточки текущей уязвимости справа.

Очередь. В неё попадают обнаружения выбранного снэпшота и выбранного типа отчёта, по которым в проекте ещё нет решения по классификации. Порядок — по важности: высокая, средняя, низкая, потенциальная.

Занятые уязвимости. Уязвимости, взятые в работу другой сессией, из списка не убираются, но уходят в его конец и помечаются как «Заблокировано». При попытке открыть такую уязвимость выводится сообщение: уязвимость классифицируется другим пользователем, редактирование недоступно. Так видно, почему в снэпшоте 500 уязвимостей, а разобрать доступно 480.

Классификация. На карточке доступны две кнопки:

  • Подтвержденная угроза — уязвимость реальна;
  • Ложное срабатывание — анализатор ошибся.

Классификацию можно менять без ограничений, пока сессия не отправлена на проверку. Счётчик на карточке сессии показывает «Проверено: N» — сколько уязвимостей уже получили классификацию.

Блокировка уязвимостей. Открытая уязвимость закрепляется за сессией, чтобы её не разбирал одновременно кто-то другой. Когда вы открываете следующую карточку, предыдущая освобождается автоматически, если классификация по ней так и не поставлена. Размеченные уязвимости остаются закреплёнными до конца проверки.

Завершение разметки. Кнопка Закончить сессию отправляет сессию на проверку; интерфейс предупреждает, что после завершения она уйдёт на проверку. Показанные, но не размеченные уязвимости возвращаются в общий срез. Отправить сессию, в которой нет ни одной размеченной позиции, нельзя.

Проверяющий при отправке не выбирается: сессия попадает в общий пул и закрепляется за тем, кто откроет её первым.

Роспуск. Кнопка Распустить сессию доступна только до первой отправки (со страницы "Мои сессии"). Сессия переходит в статус «Распущена», все её блокировки снимаются, классификация остается неприменённой. Распустить сессию может её автор или обладатель права проверки разбора — иначе брошенная сессия удерживала бы уязвимости, и они не достались бы никому. После того как сессия хотя бы раз побывала на проверке, роспуск закрыт всем: такая сессия разблокируется отменой, а не роспуском.

Проверка

На вкладке Сессии на проверке видны все отправленные сессии проекта — и ожидающие проверки, и отклонённые, и утверждённые.

Взятие в работу. Сессия закрепляется за проверяющим при первом открытии. Перехват невозможен: занятую сессию другой сотрудник не заберёт. По умолчанию автор может проверить и собственную сессию; это поведение отключается настройкой проекта (см. ниже) — тогда в списке появляется подсказка «Нельзя проверять собственную сессию».

Решения по позициям. По каждой размеченной уязвимости доступны кнопки Принять и Отклонить. Решения копятся черновиком: до завершения проверки в классификацию проекта не уходит ничего, и решение можно изменить.

Завершение. Кнопка Закончить проверку применяет результат одной операцией:

  • принятая классификация записывается в классификацию проекта;
  • отклонённые классификации в разметке возвращаются автору с пометкой, что проверяющий их отклонил;
  • позиции без решения также возвращаются автору;
  • блокировки снимаются с применённых уязвимостей.

Итог зависит от того, вернулось ли хоть что-то. Вернулось — сессия получает статус «Отклонена» и уходит на доработку. Не вернулось ничего — статус «Утверждена» и все блокировки сессии снимаются.

Требования решить 100 % позиций нет: непроверенные позиции переносятся на повторный цикл проверки.

Отмена сессии. Кнопка Отменить (окно «Отмена сессии») сбрасывает сессию разметки целиком: все позиции возвращаются автору, черновики сессий разметки отменяются. Действие доступно только администратору проекта — это аварийный механизм, который разблокирует сессию, если закреплённый за ней проверяющий недоступен. Блокировки уязвимостей при отмене не снимаются: обнаружения возвращаются автору вместе с закреплёнными за ними уязвимостями.

Переназначение инженера. У отклонённой сессии кнопка Переназначить инженера передаёт её другому сотруднику для повторной разметки. Доступна закреплённому проверяющему и администратору проекта. Новый инженер обязан иметь право разбора уязвимостей, иначе сессию не удастся ни открыть, ни распустить. После переназначения прежний автор теряет доступ к сессии немедленно.

Это единственный выход из ситуации, когда автор отправленной сессии больше не работает над задачей: распустить такую сессию нельзя, а уязвимости она удерживает.

Повторная проверка

У отклонённой сессии автор видит только то, что вернулось с проверки: отклонённые позиции и позиции, по которым решения не было. Уже принятые уязвимости на повторную проверку не попадают — они применены и повторной разметке не подлежат. Добрать в отклонённую сессию новые уязвимости из снэпшота нельзя.

После повторной разметки сессия отправляется той же кнопкой Закончить сессию и снова попадает в общий пул: за отклонившим её проверяющим она не закрепляется.

Что попадает в классификацию проекта

Классификация — это итоговое решение по уязвимости в проекте, одно на обнаружение. Она фиксирует классификацию, сессию-источник, автора разметки, а также кто и когда утвердил решение.

  • Запись создаётся только при завершении проверки и только для принятых позиций.
  • Повторно решение не переписывается: если по уязвимости классификация уже есть, новая запись не создаётся.
  • После записи решения уязвимость исчезает из очередей всех сессий разбора — разбирать её больше не нужно.
  • Для уязвимости с классификацией «Подтвержденная угроза» дополнительно инициализируется отслеживание в LTS-ветках проекта.

Обсуждения

Внутри сессии доступны три ленты дискуссий:

Лента Где показывается Кто может писать
Общие дискуссии сессии На экране сессии и на экране её завершения Автор и проверяющий
Дискуссии уязвимости в этой сессии На странице уязвимости Автор и проверяющий
Дискуссии уязвимости из других контекстов На странице уязвимости, только чтение

Читать дискуссии может любой допущенный к сессии, писать — только её участники: автор и проверяющий. Обсуждение можно пометить решённым; новая реплика снова делает его нерешённым. Свою реплику удаляет её автор, чужую — обладатель права удаления обсуждений. В утверждённой и распущенной сессии ленты доступны только на чтение.

Счётчик обсуждений показывается в строке каждой уязвимости и на карточке сессии.

Настройка проекта

Настройки проекта → Безопасность → ASOC: проверка сессий.

Флажок «Запрет на проверку собственных сессий» определяет, может ли инженер проверять сессию разбора, которую создал сам. По умолчанию выключен — самопроверка разрешена.

Запрет касается только взятия свободной сессии: если проверяющий уже закрепился за сессией, он доводит начатую проверку до конца.

Важно. В проекте, где правом проверки разбора обладает один человек, включённый запрет означает, что его собственные сессии не будут завершены никогда, а закреплённые за ними уязвимости останутся заблокированными. Включайте настройку, только если проверяющих в проекте несколько.

Ограничения

  • Распущенные сессии не показываются ни в одном списке и ни под каким фильтром.
  • Пока сессия не завершена, поставленные в ней классификации не влияют на страницу «Безопасность»: уязвимости продолжают считаться неразобранными.
  • Изменить тип отчёта или снэпшот у созданной сессии нельзя — нужно распустить её и создать новую.