Достижимость зависимостей
Четыре фильтра, после которых в отчёте по зависимостям остаются только уязвимости, реально достижимые из вашего кода.
Сканер зависимостей сообщает обо всех уязвимостях из ваших lock-файлов. Большинство из них не стоят внимания: уязвимая функция в проекте не вызывается или уязвимость не касается установленной версии. Анализ достижимости оставляет те, которыми действительно стоит заняться.
Анализ включается опцией Проверять достижимость уязвимостей у сканера Анализ зависимостей (SCA) на странице «Статический анализ кода». Он запускается после сканирования Trivy, которое по-прежнему формирует обычную таблицу Trivy.
Четыре фильтра: от дешёвого к дорогому
| Фильтр | Во что обходится |
|---|---|
| 1. Критичность | Дальше проходят только уязвимости critical и high. Фильтр работает по уже имеющимся данным и ничего не стоит. |
| 2. Известная эксплуатация | CVE должна быть отмечена как эксплуатируемая в локальной базе эксплуатируемых уязвимостей. Запрос к базе, без обращения к модели. |
| 3. Применимость | Затрагивает ли уязвимость этот компонент в установленной версии? Один вызов модели на уязвимость. Слабые совпадения отсеиваются ещё до самого дорогого этапа. |
| 4. Достижимость | Доходит ли ваш код до уязвимого места? Полный цикл работы агента на каждую оставшуюся уязвимость. |
Уязвимости, которые уже есть в разделе управления уязвимостями, и уязвимости, уже признанные недостижимыми в той же ревизии кода, повторно не проверяются.
Журнал сканирования показывает, сколько уязвимостей отсеял каждый фильтр. Отсеянные первыми тремя фильтрами остаются в таблице Trivy. А те, что агент признал недостижимыми, из неё удаляются, чтобы таблица и AI-отчёт не расходились.
CVE с готовым эксплойтом в пакете, который ваш код ни разу не вызывает, всё равно недостижима. Данные об эксплуатации подсказывают, какую часть компонента искать, но вердикт выносится не по ним.
Фильтр по эксплуатации
Второй фильтр ищет каждую CVE в базе эксплуатируемых уязвимостей — тех же данных, по которым заполняется столбец Exploit в обычной таблице Trivy. CVE проходит фильтр, если там она отмечена как эксплуатируемая.
Ссылки на источники об эксплуатации попадают в доказательства уязвимости: в HTML-отчёте это кликабельные ссылки, в выгрузке XLSX — текст, по ссылке на строку.
Если база недоступна, этап прерывается. Проверять подряд все уязвимости high и critical платформа не будет: на это ушла бы непредсказуемая часть бюджета на ИИ. Причину сбоя ScanSuite записывает в журнал сканирования.
Как работает агент достижимости
Агент изучает репозиторий с помощью инструментов. Помимо общих средств навигации по коду, у него есть два инструмента специально для зависимостей:
| Инструмент | Назначение |
|---|---|
| find_manifests | Находит манифесты и lock-файлы, чтобы агент мог отличить прямую зависимость от транзитивной. |
| find_package_usage | Ищет в вашем коде импорты пакета во всех возможных написаниях: имя в реестре, scoped-спецификатор npm, артефакт Maven, вариант с подчёркиванием и известные расхождения — например, PyYAML импортируется как yaml. Каталоги вложенных зависимостей и сборки пропускает. |
Вердикт принимается, только если агент прочитал исходные файлы, в обосновании указаны компонент, уязвимая функциональность, путь вызова или точное место, где цепочка обрывается, и приведены доказательства вида файл:строка.
Что вы получаете
Достижимые уязвимости попадают в AI-отчёт сканирования рядом с уязвимостями AI Native SAST. Для каждой указаны критичность и пакет, а в доказательствах — установленная версия и версия с исправлением, где объявлена зависимость и ссылки на источники об эксплуатации. В рекомендации указано, до какой версии обновиться, а в последнем столбце стоит вердикт Reachable:

Для каждой достижимой уязвимости строится диаграмма Mermaid: точка входа, место подключения компонента и уязвимая функция. Диаграмма встроена прямо в HTML-отчёт. Отчёт сохраняется в форматах HTML, XLSX и JSON, а уязвимости попадают в раздел управления уязвимостями с типом сканирования dependency.
Результаты анализа зависимостей в DefectDojo не выгружаются — ни с проверкой достижимости, ни без неё.
Стоимость
Каждая уязвимость, прошедшая первые два фильтра, стоит минимум одного вызова модели, а дошедшая до конца — полного цикла работы агента и ещё одного вызова на диаграмму. Сканирование пакетов ОС легко выдаёт сотни CVE, поэтому фильтры и выстроены именно в таком порядке.
Если сканирование выдаёт массу уязвимостей высокой критичности в пакетах ОС, а вас интересуют только зависимости самого приложения, дешевле сузить область сканирования, чем ослаблять фильтры. Как учитывается расход токенов, описано в разделе Поставщики ИИ и стоимость.
Проверено: 2026-09-30