Управление уязвимостями
Одна запись на каждую проблему, разбор с указанием причины, история изменений и закрытие по доказательствам.
Уязвимости, найденные AI-сканированиями, собираются в одном списке. Дубли в нём уже убраны, а у каждой записи есть доказательства, которых разработчику хватит для исправления. На странице Уязвимости их разбирают, назначают ответственных и доводят до закрытия.
Жизненный цикл уязвимости
- 01Сбор
Уязвимости из AI Native SAST, анализа достижимости зависимостей, AI DAST и AI Pentest, а также из тех классических сканеров, результаты которых команда решила сохранять, приводятся к единому виду. Каждая запись привязывается к продукту, цели, сканеру и запуску.
- 02Объединение
Если одну и ту же проблему нашли разные сканеры или разные запуски, в списке остаётся одна запись. Если уязвимость появилась снова, открывается прежняя запись, а не создаётся новая.
- 03Проверка
У каждой записи есть результат проверки: вердикт об эксплуатируемости, оценка риска, уверенность, обоснование и ссылки на известные случаи эксплуатации, а где применимо — схема прохождения данных по коду.
- 04Доказательство
Эксплойт можно сгенерировать, отредактировать и запустить в изолированном контейнере. Подробнее — на следующей странице.
- 05Устранение
Разбор с указанием причины, ответственный и срок. Каждый шаг сохраняется в истории уязвимости.
- 06Отчётность
Поиск, фильтры и выгрузка в PDF-отчёт, XLSX, JSON или ServiceNow.
Секреты, найденные в репозиториях, сюда не попадают: они собраны на странице Учётные данные.
Что считается одной уязвимостью
Это зависит от типа сканирования. По этому признаку ScanSuite убирает дубли внутри сканирования и узнаёт уязвимость, которая вернулась в следующем запуске:
| Тип сканирования | Признак |
|---|---|
| Статическое | Класс уязвимости + файл в пределах репозитория |
| Зависимости | CVE + компонент + версия компонента |
| Динамическое | Тип уязвимости + путь URL + параметр |
| Инфраструктурное | CVE + узел + версия сервера |
AI SAST выбирает класс по недостающей защите, а не по последствиям. Но модели всё равно путают соседние классы одного дефекта: path traversal и чтение произвольного файла, code injection и удалённое выполнение кода. Поэтому две такие уязвимости в одном файле остаются одной записью, если у них совпадает ещё и параметр, процитированный код или название.
Поэтому счётчикам на панели можно верить. Проблема, о которой сообщили три сканера, — это одна запись, а уязвимость, вернувшаяся после исправления, открывает прежнюю запись, а не появляется как новая.
Панель
Вверху страницы — сводка: сколько продуктов и репозиториев просканировано, сколько всего уязвимостей и сколько из них открыто, сколько выполнено сканирований. Ниже — разбивка по критичности и изменения с последнего сканирования.

- Топ-10 наиболее уязвимых целей и 10 основных классов уязвимостей упорядочены по риску: открытая уязвимость уровня Critical весит 40, High — 10, Medium — 3, Low — 1. Рядом с каждым пунктом указано число уязвимостей, а щелчок по нему фильтрует список. Уязвимости в статусах Resolved, False Positive и Risk Accepted не учитываются, а в режиме всех продуктов уязвимость, общая для двух продуктов, считается один раз.
- Топ-10 целей по расходу токенов LLM показывает, на какие цели AI-сканирования потратили больше всего: в токенах, а если для моделей заданы цены, то и в деньгах.
- Если выбран продукт, строка Последнее сканирование показывает итог его последнего сканирования: сколько уязвимостей оказались новыми, подтверждёнными, открытыми повторно и закрытыми автоматически. Щелчок по дате открывает страницу сканирования.
Работа с уязвимостью
В каждой записи есть поля, нужные для разбора:
| Поле | Назначение |
|---|---|
| Название, CVE, Критичность, CVSS | Что это и насколько опасно. |
| Цель, Сканер, ID сканирования, Продукт | Откуда взялась уязвимость. Для уязвимости в репозитории указаны файл и строка со ссылкой на них. |
| Статус | Open, In Progress, Risk Accepted, False Positive, Resolved. |
| Ответственный, Срок устранения | Кто исправляет и к какому сроку. |
| Теги, Ссылки | Собственная классификация и внешние ссылки. |
| Описание, Доказательства, Решение | Подробности для разработчика. |
| Заметки по обработке | Журнал решений по этой уязвимости. |
Метки в строке показывают, что происходило с уязвимостью:
- открыто снова — уязвимость обнаружена снова после исправления;
- подтверждено — закрыта, потому что сканер доказал, что дефекта больше нет;
- межфайловый поиск — найдена при трассировке запроса через несколько файлов. Уязвимость, которую нашёл только межфайловый поиск, закрывается автоматически лишь в запуске «Проверка исправлений», где её выбрали явно;
- число вида ×3 рядом с датой в столбце «Последнее подтверждение» — сколько сканирований сообщили об уязвимости;
- N пропущено — сколько сканирований проверили её файл и не нашли её. Это ещё не доказательство исправления.
Ссылка рядом с уязвимостью в репозитории открывает файл на нужной строке в том коммите, который анализировало сканирование. Формат ссылки зависит от сервиса Git, выбранного на странице Команды (вкладка Сканирование, карточка Доступ к репозиториям), поэтому для GitHub, GitLab и Bitbucket Server ссылки строятся по правилам каждого сервиса.
Щелчок по строке открывает подробности уязвимости и её историю. Чтобы проверить логику вывода, нажмите на метку в столбце Валидация: там схема прохождения данных по коду с пояснением к каждому шагу, обоснование достижимости, уровень уверенности и оценка риска. Выводу модели, который нельзя проверить, доверять нельзя.

Уязвимость, найденную без сканирования, можно завести вручную в блоке Добавить / изменить уязвимость: например, из отчёта о пентесте, по программе bug bounty или после code review. Сначала выберите продукт.
Разбор
В каждой строке есть меню Разбор. Чтобы применить действие сразу к нескольким уязвимостям, отметьте их и нажмите Разобрать выбранные: N.

| Действие | Что делает |
|---|---|
| Взять в работу | Переводит уязвимость в статус In Progress. |
| Открыть повторно | Возвращает уязвимость в статус Open. |
| Ложное срабатывание… | Фиксирует, почему это ложное срабатывание. Причина обязательна. |
| Принять риск… | Фиксирует, почему риск принят. Причина обязательна. |
| Отметить исправленной… | Фиксирует, как уязвимость исправили. Причина обязательна. |
| Назначить… | Назначает ответственного и срок. |
Для уязвимости в репозитории пункт Ложное срабатывание… дополнительно предлагает Больше не сообщать об этом классе здесь — в этом файле, в этой папке или во всём репозитории. ScanSuite создаёт правило подавления, и следующие сканирования больше не сообщают об этом классе в указанном месте; см. Собственные правила.

Сроки устранения
Новая уязвимость сразу получает срок устранения по правилам команды. По умолчанию это 7 дней для Critical, 30 — для High, 90 — для Medium и 180 — для Low. Для Info срок не назначается. Сроки задаются на странице Команды, на вкладке Сканирование, в карточке Сроки устранения; значение 0 отключает срок для этого уровня критичности. Менять их могут администраторы и операторы команды.
- Назначенный срок не меняется: следующее сканирование его не сдвигает, а новые настройки сроков не затрагивают уже обнаруженные уязвимости.
- Срок отдельной уязвимости меняется через Назначить….
- Просроченные уязвимости учитываются на страницах продуктов.
История уязвимости
Откройте уязвимость и посмотрите её Историю: когда её обнаружили, какие сканирования её подтвердили, какие проверили её файл и не нашли её, когда её закрыли по данным сканера, когда открыли снова, кто и почему менял статус, когда её объединили с другой уязвимостью и когда сработало правило подавления. Каждая запись ведёт на сканирование, которое к ней привело.

Уязвимости одного сканирования
На странице сканирования нажмите на одно из чисел — новые, подтверждённые, открытые повторно, закрытые автоматически — или на Показать уязвимости: откроется этот список, отфильтрованный по сканированию. Фильтр отображается над списком, ✕ сбрасывает его. См. Страница сканирования.
Уязвимости одного узла
На странице Активы вкладка Уязвимости в карточке узла показывает уязвимости на нём; Открыть в разделе «Уязвимости» открывает этот список, отфильтрованный по узлу. Фильтр Актив отображается над списком с именем узла, которое ведёт обратно к нему на странице «Активы»; ✕ сбрасывает фильтр. Уязвимость относится к узлу, если её цель указывает на один из узлов продукта.
Поиск, фильтры и экспорт
- Полнотекстовый поиск по CVE, названиям и целям.
- Фильтры по продукту, критичности и статусу, а также по классу из панели топ-10.
- Экспорт: Отчёт по уязвимостям (PDF) для руководителей — по уязвимостям, которые показывают текущие фильтры. Если выбран продукт, доступны ещё XLSX — весь перечень в виде таблицы, JSON — те же строки для другого инструмента и XLSX для ServiceNow — файл, готовый к загрузке в ServiceNow. См. Повторные сканирования и проверка исправлений и Отчёты и экспорт.
Удаление уязвимостей
- Чтобы удалить уязвимости, отметьте их и нажмите Удалить выбранные: N.
- Очистить удаляет все уязвимости выбранного продукта или только одного из его репозиториев. Уязвимости, сканирований которых уже нет в истории, по репозиторию очистить нельзя.
Для обоих действий нужно право изменять уязвимости. Оно есть у администраторов и операторов команды.
Уязвимости AI-сканирований ведутся только здесь. Большинство классических сканеров выгружает результаты только в отчёты и в DefectDojo, поэтому для них рекомендуется DefectDojo. Здесь всегда сохраняются уязвимости Nessus и ваших собственных правил, а уязвимости Semgrep, KICS, Trivy, Nuclei, ZAP, Wapiti, SSLyze, Dastardly, Acunetix и OpenVAS — если на вкладке Сканирование в настройках команды включён параметр Сохранять уязвимости сканеров. Уязвимости ниже порога Минимальная критичность для сохранения остаются только в отчётах. См. Работа с результатами сканирования.
Для разбора, редактирования, удаления и генерации эксплойта нужно право изменять уязвимости, для запуска эксплойта — отдельное право, а для «Больше не сообщать об этом классе здесь» — право настраивать сканирования. См. Команды и роли.
Проверено: 2026-09-30