Сессии разбора уязвимостей
Сессия разбора — способ разобрать обнаружения анализаторов не по одной, а по срезу (снэпшоту): инженер ИБ проходит по списку уязвимостей снэпшота и ставит каждой классификацию, второй сотрудник проверяет разметку, и только утверждённые классификации попадают в проект.
До завершения проверки разметка остаётся черновиком: на странице «Безопасность» обнаруженные уязвимости продолжают показываться неклассифицированными.
Права доступа
| Действие | Требуемое право |
|---|---|
| Создание сессии, разметка, отправка на проверку | Разбор уязвимостей (TRIAGE_VULNERABILITY_SESSION) |
| Проверка разметки, утверждение и отклонение | Проверка разбора уязвимостей (APPROVE_VULNERABILITY_SESSION) |
| Отмена сессии, находящейся на проверке | Администратор проекта |
Оба права доступны с уровня «Разработчик» и выше.
Открыть сессию на чтение может её автор, назначенный проверяющий и любой обладатель права проверки разбора. Анонимному пользователю сессии Разметки недоступны.
Перейти к разметке уязвимостей можно по пути Проект → Безопасность → Разметка. Раздел содержит две вкладки:
- Мои сессии — сессии, где вы автор;
- Сессии на проверке — общий список отправленных сессий проекта. Вкладка видна только с правом проверки разбора.
На обеих вкладках доступны фильтры «Статус» и «Ветка», а также поиск по имени сессии.
Жизненный цикл
| Статус | Что означает | Что доступно |
|---|---|---|
| Новая | Сессия создана, идёт разметка | Разметка, «Закончить сессию», «Распустить сессию» |
| На проверке | Отправлена, ждёт проверяющего или уже закреплена за ним | Просмотр автору; проверка — проверяющему; отмена — администратору проекта |
| Отклонена | Часть позиций вернулась автору на доработку | Повторная разметка вернувшегося, повторная отправка, переназначение инженера |
| Утверждена | Разметка принята, классификация применена | Только просмотр |
| Распущена | Сессия отменена автором до отправки | Не отображается ни в одном списке |
Переходы: Новая → На проверке → Утверждена либо → Отклонена → На проверке (повторный цикл проверки). Отклонить можно только из статуса «Новая».
Создание сессии
Кнопка Начать новую сессию открывает окно «Создать сессию»:
- Ветка или тег — выбирается на соответствующей вкладке;
- Snapshot — срез результатов анализа по выбранной ветке или тегу;
- Тип отчёта — SAST, DAST или SCA.
В списке типов отчёта предлагаются только те, по которым в снэпшоте осталась хотя бы одна свободная уязвимость — то есть без решения по классификации и не занятая другой сессией. Тип, для которого разбирать нечего, дал бы пустую очередь, поэтому он не показывается и не принимается.
Имя сессии задавать не нужно: оно формируется из названия снэпшота. Дополнительно сессия получает локальный порядковый номер в проекте, он показывается как #N.
Сессия фиксируется на сочетании «снэпшот + тип отчёта + автор». Пока предыдущая не утверждена и не распущена, создать вторую такую же нельзя — интерфейс сообщит, что сессия уже открыта, отправлена на проверку либо вернулась на доработку.
Разметка
Экран разметки подписан «Этап 1: Классификация ложного срабатывания» и состоит из списка уязвимостей слева и карточки текущей уязвимости справа.
Очередь. В неё попадают обнаружения выбранного снэпшота и выбранного типа отчёта, по которым в проекте ещё нет решения по классификации. Порядок — по важности: высокая, средняя, низкая, потенциальная.
Занятые уязвимости. Уязвимости, взятые в работу другой сессией, из списка не убираются, но уходят в его конец и помечаются как «Заблокировано». При попытке открыть такую уязвимость выводится сообщение: уязвимость классифицируется другим пользователем, редактирование недоступно. Так видно, почему в снэпшоте 500 уязвимостей, а разобрать доступно 480.
Классификация. На карточке доступны две кнопки:
- Подтвержденная угроза — уязвимость реальна;
- Ложное срабатывание — анализатор ошибся.
Классификацию можно менять без ограничений, пока сессия не отправлена на проверку. Счётчик на карточке сессии показывает «Проверено: N» — сколько уязвимостей уже получили классификацию.
Блокировка уязвимостей. Открытая уязвимость закрепляется за сессией, чтобы её не разбирал одновременно кто-то другой. Когда вы открываете следующую карточку, предыдущая освобождается автоматически, если классификация по ней так и не поставлена. Размеченные уязвимости остаются закреплёнными до конца проверки.
Завершение разметки. Кнопка Закончить сессию отправляет сессию на проверку; интерфейс предупреждает, что после завершения она уйдёт на проверку. Показанные, но не размеченные уязвимости возвращаются в общий срез. Отправить сессию, в которой нет ни одной размеченной позиции, нельзя.
Проверяющий при отправке не выбирается: сессия попадает в общий пул и закрепляется за тем, кто откроет её первым.
Роспуск. Кнопка Распустить сессию доступна только до первой отправки (со страницы "Мои сессии"). Сессия переходит в статус «Распущена», все её блокировки снимаются, классификация остается неприменённой. Распустить сессию может её автор или обладатель права проверки разбора — иначе брошенная сессия удерживала бы уязвимости, и они не достались бы никому. После того как сессия хотя бы раз побывала на проверке, роспуск закрыт всем: такая сессия разблокируется отменой, а не роспуском.
Проверка
На вкладке Сессии на проверке видны все отправленные сессии проекта — и ожидающие проверки, и отклонённые, и утверждённые.
Взятие в работу. Сессия закрепляется за проверяющим при первом открытии. Перехват невозможен: занятую сессию другой сотрудник не заберёт. По умолчанию автор может проверить и собственную сессию; это поведение отключается настройкой проекта (см. ниже) — тогда в списке появляется подсказка «Нельзя проверять собственную сессию».
Решения по позициям. По каждой размеченной уязвимости доступны кнопки Принять и Отклонить. Решения копятся черновиком: до завершения проверки в классификацию проекта не уходит ничего, и решение можно изменить.
Завершение. Кнопка Закончить проверку применяет результат одной операцией:
- принятая классификация записывается в классификацию проекта;
- отклонённые классификации в разметке возвращаются автору с пометкой, что проверяющий их отклонил;
- позиции без решения также возвращаются автору;
- блокировки снимаются с применённых уязвимостей.
Итог зависит от того, вернулось ли хоть что-то. Вернулось — сессия получает статус «Отклонена» и уходит на доработку. Не вернулось ничего — статус «Утверждена» и все блокировки сессии снимаются.
Требования решить 100 % позиций нет: непроверенные позиции переносятся на повторный цикл проверки.
Отмена сессии. Кнопка Отменить (окно «Отмена сессии») сбрасывает сессию разметки целиком: все позиции возвращаются автору, черновики сессий разметки отменяются. Действие доступно только администратору проекта — это аварийный механизм, который разблокирует сессию, если закреплённый за ней проверяющий недоступен. Блокировки уязвимостей при отмене не снимаются: обнаружения возвращаются автору вместе с закреплёнными за ними уязвимостями.
Переназначение инженера. У отклонённой сессии кнопка Переназначить инженера передаёт её другому сотруднику для повторной разметки. Доступна закреплённому проверяющему и администратору проекта. Новый инженер обязан иметь право разбора уязвимостей, иначе сессию не удастся ни открыть, ни распустить. После переназначения прежний автор теряет доступ к сессии немедленно.
Это единственный выход из ситуации, когда автор отправленной сессии больше не работает над задачей: распустить такую сессию нельзя, а уязвимости она удерживает.
Повторная проверка
У отклонённой сессии автор видит только то, что вернулось с проверки: отклонённые позиции и позиции, по которым решения не было. Уже принятые уязвимости на повторную проверку не попадают — они применены и повторной разметке не подлежат. Добрать в отклонённую сессию новые уязвимости из снэпшота нельзя.
После повторной разметки сессия отправляется той же кнопкой Закончить сессию и снова попадает в общий пул: за отклонившим её проверяющим она не закрепляется.
Что попадает в классификацию проекта
Классификация — это итоговое решение по уязвимости в проекте, одно на обнаружение. Она фиксирует классификацию, сессию-источник, автора разметки, а также кто и когда утвердил решение.
- Запись создаётся только при завершении проверки и только для принятых позиций.
- Повторно решение не переписывается: если по уязвимости классификация уже есть, новая запись не создаётся.
- После записи решения уязвимость исчезает из очередей всех сессий разбора — разбирать её больше не нужно.
- Для уязвимости с классификацией «Подтвержденная угроза» дополнительно инициализируется отслеживание в LTS-ветках проекта.
Обсуждения
Внутри сессии доступны три ленты дискуссий:
| Лента | Где показывается | Кто может писать |
|---|---|---|
| Общие дискуссии сессии | На экране сессии и на экране её завершения | Автор и проверяющий |
| Дискуссии уязвимости в этой сессии | На странице уязвимости | Автор и проверяющий |
| Дискуссии уязвимости из других контекстов | На странице уязвимости, только чтение | — |
Читать дискуссии может любой допущенный к сессии, писать — только её участники: автор и проверяющий. Обсуждение можно пометить решённым; новая реплика снова делает его нерешённым. Свою реплику удаляет её автор, чужую — обладатель права удаления обсуждений. В утверждённой и распущенной сессии ленты доступны только на чтение.
Счётчик обсуждений показывается в строке каждой уязвимости и на карточке сессии.
Настройка проекта
Настройки проекта → Безопасность → ASOC: проверка сессий.
Флажок «Запрет на проверку собственных сессий» определяет, может ли инженер проверять сессию разбора, которую создал сам. По умолчанию выключен — самопроверка разрешена.
Запрет касается только взятия свободной сессии: если проверяющий уже закрепился за сессией, он доводит начатую проверку до конца.
Важно. В проекте, где правом проверки разбора обладает один человек, включённый запрет означает, что его собственные сессии не будут завершены никогда, а закреплённые за ними уязвимости останутся заблокированными. Включайте настройку, только если проверяющих в проекте несколько.
Ограничения
- Распущенные сессии не показываются ни в одном списке и ни под каким фильтром.
- Пока сессия не завершена, поставленные в ней классификации не влияют на страницу «Безопасность»: уязвимости продолжают считаться неразобранными.
- Изменить тип отчёта или снэпшот у созданной сессии нельзя — нужно распустить её и создать новую.