Могут ли ИИ-агенты устранять уязвимости в зависимостях, не ломая сборку? Само исправление редко представляет собой загадку. За шесть месяцев 2026 года платформа Snyk Open Source зафиксировала 459 миллионов случаев обнаружения уязвимостей примерно в 300 000 организациях. У 94% этих уязвимостей была известная исправленная версия, однако решены они были лишь примерно в 10% случаев.
Это происходит потому, что самое сложное — выполнить обновление безопасно: большинство уязвимых пакетов импортируются транзитивно, примерно четверть исправлений требуют перехода на мажорную версию, а даже минорные релизы и патчи, которые по идее должны быть обратную совместимость, часто содержат ломающие изменения (breaking changes).
VulnBump, новое исследование, опубликованное нами в Snyk, подвергает ИИ-агенты испытанию на 307 реальных обновлениях уязвимых зависимостей. Обновление засчитывается как успешное (PASS) только в том случае, если уязвимости исчезли, а проект по-прежнему устанавливается, собирается и проходит тесты.
Что нового: насколько нам известно, VulnBump — это первый бенчмарк для ИИ-агентов, построенный вокруг обновлений, ориентированных на безопасность: каждая задача начинается с реальных уязвимостей, которые Snyk обнаружил в настоящем проекте в рамках шести менеджеров пакетов. Предыдущие бенчмарки обновлений проверяют только наличие сбоев, но не то, исчезла ли уязвимость.
Итак, могут ли ИИ-агенты устранять уязвимости в зависимостях, не ломая сборку? В основном да, но одна лишь модель этого не решает. На той же модели, Claude Sonnet 5.5, агент Evo Remediation Agent от Snyk успешно справился с 90,2% обновлений. Claude Code от Anthropic показал результат в 77,5% при использовании рекомендованных Snyk обновления и сканирования (Claude Code + сканирование Snyk) и 59,6% без каких-либо данных от Snyk (автономный Claude Code). Разница составляет более 30 процентных пунктов. Для сравнения: простое обновление через менеджер пакетов (базовый вариант без ИИ, который применяет только рекомендованную Snyk версию) показал результат в 46,9%.
Ключевые результаты VulnBump
Поддержание работоспособности сборки не было самой сложной задачей: все три агента справлялись с этим примерно в 93% случаев. А вот удаление уязвимости — да. В 70 из 124 случаев неудач автономный Claude Code заявлял об устранении уязвимостей, которые повторное сканирование все равно находило.
Наши результаты перекликаются с VulnBench — нашим июньским бенчмарком проверки безопасности с помощью ИИ, который показал, что Claude и Snyk Code пропускают разные уязвимости, и привел к выводу, что вместе они работают лучше всего. VulnBump тестирует другую задачу — обновление уязвимых зависимостей с открытым исходным кодом — и указывает в том же направлении: с рекомендованными Snyk версией и сканированием доля успешных прохождений (PASS) у Claude Code выросла на 17,9 пункта. Evo Remediation Agent демонстрирует, насколько далеко может продвинуться специализированный агент: на 12,7 пункта лучше, чем Claude Code с тем же сканированием Snyk. VulnBump также продолжает результаты исправления уязвимостей, которыми мы делились в мае, но теперь с более новой моделью и шестью менеджерами пакетов.
Как мы создавали VulnBump
Мы начали с реальных проектов, сопоставленных с продакшеном. Мы собрали 767 проектов-кандидатов с GitHub, включая популярные опенсорсные проекты и репозитории, фиксирующие версии с известными уязвимостями. Каждый из них должен был устанавливаться, собираться и успешно проходить более 85% тестов до внесения каких-либо изменений, а Snyk должен был обнаружить хотя бы одну уязвимость. Из 99 подошедших проектов мы выбрали 43, которые соответствуют производственным данным Snyk по экосистеме, степени тяжести уязвимостей, прямым и транзитивным зависимостям, а также масштабу изменения версий.
Сравнение набора данных VulnBump с производственными данными Snyk Open Source
Мы превратили каждое рекомендованное обновление в задачу. Каждая задача требует от агента применить одно обновление, рекомендованное Snyk: один пакет переводится в версию, в которой устранены его уязвимости. Каждая задача начинается со свежей копии проекта и оценивается индивидуально. 43 репозитория дают 307 задач, охватывающих 2 066 уязвимостей, которые можно исправить, в Maven, Gradle, npm, Yarn, pip и Poetry — шести менеджерах пакетов, на которые приходится около 92% находок в продакшене.
Мы добавили верификатор, который не доверял агенту. Когда агент заканчивал работу, мы копировали его изменения в чистый контейнер и проверяли их с нуля. В этом случае попытка засчитывалась как успешная (PASS), только если она преодолевала все четыре барьера:
- Зависимости устанавливаются с помощью команды, которую запускал бы CI.
Зависимости устанавливаются с помощью команды, которую запускал бы CI.
- Новое сканирование Snyk подтверждает, что уязвимости исчезли.
Новое сканирование Snyk подтверждает, что уязвимости исчезли.
- Проект собирается.
Проект собирается.
- Каждый тест, который проходил ранее, по-прежнему проходит успешно.
Каждый тест, который проходил ранее, по-прежнему проходит успешно.
Конвейер VulnBump
Протестированные нами обвязки (harnesses). Все три агента работали на базе Claude Sonnet 5.5 с лимитом в 110 шагов (turns) на одно обновление в одинаковых контейнерах для каждого языка:
- Evo Remediation Agent — это движок автоматического устранения уязвимостей от Snyk. Он использует аналитику Snyk и может самостоятельно запускать сканирование, сборку и тесты, а также исправлять ошибки перед завершением работы. Мы запускали его в режиме автоподтверждения, поэтому он применял каждое исправление, включая обновления, которые Snyk классифицирует как потенциально способные сломать сборку.
Evo Remediation Agent — это движок автоматического устранения уязвимостей от Snyk. Он использует аналитику Snyk и может самостоятельно запускать сканирование, сборку и тесты, а также исправлять ошибки перед завершением работы. Мы запускали его в режиме автоподтверждения, поэтому он применял каждое исправление, включая обновления, которые Snyk классифицирует как потенциально способные сломать сборку.
- Claude Code со сканированием Snyk — это универсальный кодинг-агент от Anthropic, которому предоставлены рекомендации Snyk по обновлению: пакет для обновления, целевая версия для перехода и уязвимости, которые она устраняет. Он также может самостоятельно запустить сканирование Snyk Open Source для проверки своей работы.
Claude Code со сканированием Snyk — это универсальный кодинг-агент от Anthropic, которому предоставлены рекомендации Snyk по обновлению: пакет для обновления, целевая версия для перехода и уязвимости, которые она устраняет. Он также может самостоятельно запустить сканирование Snyk Open Source для проверки своей работы.
- Автономный Claude Code (Claude Code unaided) получает ту же задачу без целевой версии и какого-либо доступа к Snyk. Он должен самостоятельно определить, какая версия устраняет уязвимости — например, путем поиска по базам данных уязвимостей в интернете.
Автономный Claude Code (Claude Code unaided) получает ту же задачу без целевой версии и какого-либо доступа к Snyk. Он должен самостоятельно определить, какая версия устраняет уязвимости — например, путем поиска по базам данных уязвимостей в интернете.
- Обновление через менеджер пакетов — это базовый вариант без агента: он применяет рекомендованную Snyk версию с помощью собственного менеджера пакетов проекта и ничего больше не меняет.
Обновление через менеджер пакетов — это базовый вариант без агента: он применяет рекомендованную Snyk версию с помощью собственного менеджера пакетов проекта и ничего больше не меняет.
Информация о том, как выбирались репозитории, точные промпты и инструменты, доступные каждому агенту, а также меры контроля утечек — все это содержится в research paper: VulnBump: A Benchmark for Fixing Vulnerable Dependencies in Real Projects While Keeping the Build and Tests Green вместе с ограничениями: мы тестировали одну модель, запускали каждое обновление один раз и использовали Snyk Open Source в качестве судьи, что может играть только против автономного Claude Code, поскольку два других агента работают на основе тех же данных Snyk. Мы также не накладывали штрафы за новые уязвимости, которые могло затянуть обновление.
Результат 1: Та же модель, три разных исхода
Evo Remediation Agent успешно прошел все проверки для 90,2% обновлений (и устранил 95,9% из 2 066 экземпляров уязвимостей). Это на 12,7 пункта больше, чем у Claude Code со сканированием Snyk (примерно одно дополнительное работающее исправление на каждые восемь обновлений) и на 30,6 больше, чем у автономного Claude Code.
И рейтинг зависит не только от нескольких крупных репозиториев: в среднем по репозиториям показатели успешности (PASS) составили 93,1% для Evo Remediation Agent, 80,1% для Claude Code + Snyk scan, 68,0% для Claude Code без сторонней помощи и 51,3% для простого обновления пакетного менеджера.
Результат 2: Агентам необходимо знать, какая версия действительно безопасна
На той же модели предоставление Claude Code данных сканирования Snyk и рекомендованного обновления повысило показатель успешности на 17,9 процентных пункта — с 59,6% до 77,5%.
Самая очевидная разница заключается в выборе версии. Без сторонней помощи Claude Code остановился на версии, которую Snyk все еще помечает как уязвимую 64 раза. С результатами сканирования Snyk это число сократилось до 13. Базы данных уязвимостей не всегда сходятся во мнениях о том, какая именно версия устраняет уязвимость, поэтому версия, кажущаяся безопасной в одном источнике, может по-прежнему вызывать предупреждения в другом.
Рекомендации Snyk важнее всего для транзитивных уязвимостей в пакетах, которые проект не объявляет напрямую. Если учитывать только те обновления, которые прошли все проверки, этот показатель более чем удвоил долю исправлений Claude Code — с 28% до 59%.
Результат 3: Советы Snyk сами по себе решают примерно половину задач, а затем агенты разделяются на остальные
Обновление пакетного менеджера делит 307 обновлений пополам: в 144 случаях успешного прохождения достаточно рекомендованной Snyk версии, и агент может лишь сохранить или упустить простое исправление. Остальные 163 требуют большего, чем просто обновление версии, например адаптации кода к критическим изменениям (breaking changes) или разрешения конфликтов зависимостей.
Агенты на 144 обновлениях, решенных благодаря рекомендациям Snyk, и на остальных 163
С рекомендациями Snyk агенты редко ломают то, что исправляет обновление, в то время как Claude Code без сторонней помощи допустил регресс в 20 из 144 случаев, причем в 15 из них — выбрав версию, которую Snyk по-прежнему считает уязвимой. Реальная разница становится очевидной на сложной половине: для остальных 163 обновлений Evo Remediation Agent показал 82,2% успешных попыток, Claude Code + Snyk scan — 61,3%, а Claude Code в одиночку — 36,2%.
Результат 4: Зеленая сборка может скрывать неустраненную уязвимость
Самый простой способ сохранить сборку рабочей — оставить уязвимость на месте, и именно здесь чаще всего терсел неудачу Claude Code. Повторное сканирование стало первой непройденной проверкой в 107 из 124 неудачных попыток Claude Code без помощи, в 48 из 69 неудач Claude Code + Snyk scan и лишь в 9 из 30 неудач Evo Remediation Agent.
Первая не пройденная проверка для каждой неудачной попытки
Неудачи Evo Remediation Agent видны наглядно (и это неплохо). 21 из его 30 сбоев привел к поломке сборки или тестов, в основном при крупных обновлениях, которых другие агенты часто избегали. Громкий сбой гораздо безопаснее тихого: когда какое-то обновление действительно идет не так, собственные сборка и тесты проекта явно показывают это, позволяя разработчику увидеть проблему и в конечном итоге отреагировать на нее.
Результат 5: Знания целевой версии недостаточно
Сканирование Snyk помогает Claude Code продвинуться далеко вперед, но для правильного обновления требуется нечто большее: при идентичных результатах сканирования и целях Evo Remediation Agent успешно выполнил на 39 обновлений больше, чем Claude Code с результатами сканирования Snyk, причем 23 из них пришлись на мажорные (major) обновления.
Evo Remediation Agent объединяет аналитику Snyk с циклом, в котором он собирает, тестирует и дорабатывает проект до завершения работы. Хотя наша установка не позволяет изолировать компонент, обеспечивающий разницу, она наглядно показывает, насколько сильно окружение модели может влиять на результат. Это согласуется с DepBench, где изменение только лишь обвязки (harness) привело к изменению результатов на величину до 16,3 процентных пункта.
Результат 6: Мажорные обновления и транзитивные зависимости остаются самыми сложными задачами
Все агенты по-прежнему испытывают трудности с крупными миграциями фреймворков: 23 обновления, в основном миграции Spring, Spring Boot и Dropwizard, оказались не по зубам всем трем агентам.
Показатели успешности упали с 96% до 81% для Evo Remediation Agent, с 88% до 61% для Claude Code + Snyk scan и с 70% до 42% для Claude Code без сторонней помощи при сравнении мажорных обновлений с немажорными. Мажорные обновления также требуют изменения кода: около половины успешных мажорных обновлений Evo Remediation Agent потребовали правки исходного кода приложения по сравнению с 5% для немажорных обновлений.
Обновления, прошедшие все проверки, по масштабу изменения версии
Транзитивные уязвимости, когда уязвимый пакет не заявлен в манифесте, составляют 70% исправляемых случаев и даются труднее для каждого протестированного фреймворка. Если считать только исправления из попыток, прошедших все проверки, Evo Remediation Agent исправил 73% транзитивных случаев, Claude Code + Snyk scan — 59%, а Claude Code без помощи — 28% (против 91%, 71% и 62% для прямых зависимостей соответственно).
Показатель успешности по типу зависимостей (прямые и транзитивные)
Как VulnBump соотносятся с VulnBench?
VulnBench оценивает, как ИИ-агенты кодинга находят уязвимости в написанном вами коде: насколько стабильно они обнаруживают одни и те же проблемы при повторных запусках и насколько их находки близки к детерминированному базовому уровню SAST. VulnBump тестирует способность агентов исправлять уязвимости в коде, от которого вы зависите: обновлять уязвимые 오픈сорсные зависимости, не ломая при этом сборку или тесты.
Если сопоставить результаты обоих тестов, они указывают на одно и то же: модели привносят навыки рассуждения, которых просто нет у детерминированных инструментов. Сами по себе они выдают разные результаты при разных запусках и часто останавливаются на полпути к исправлению. Обобщая опыт работы с платформой, можно сказать проще: генератор не может быть валидатором.
Что это значит для команд, передающих задачи безопасности агентам?
- Оценивайте исправление по доказательствам, которые агент не создавал сам: Отчет агента о собственном исправлении — это всего лишь заявление, тогда как повторное сканирование, сборка и запуск тестов становятся доказательствами. Если агент исправляет ваш бэклог, требуйте от него прохождения тех же проверок.
Оценивайте исправление по доказательствам, которые агент не создавал сам: Отчет агента о собственном исправлении — это всего лишь заявление, тогда как повторное сканирование, сборка и запуск тестов становятся доказательствами. Если агент исправляет ваш бэклог, требуйте от него прохождения тех же проверок.
- Оценивайте уязвимость и сборку в комплексе: Каждое из этих условий по отдельности скрывает сбой. Проверки только на отсутствие поломок упускают исправления, которые так и не были сделаны, а проверки только на отсутствие уязвимостей пропускают исправление, которое сломало проект.
Оценивайте уязвимость и сборку в комплексе: Каждое из этих условий по отдельности скрывает сбой. Проверки только на отсутствие поломок упускают исправления, которые так и не были сделаны, а проверки только на отсутствие уязвимостей пропускают исправление, которое сломало проект.
- Предоставьте агенту данные о безопасности: Данные сканирования Snyk и рекомендованное обновление принесли агенту общего назначения 17,9 процентных пункта на той же модели.
Предоставьте агенту данные о безопасности: Данные сканирования Snyk и рекомендованное обновление принесли агенту общего назначения 17,9 процентных пункта на той же модели.
Evo Remediation Agent — это агентский движок устранения уязвимостей от Snyk, доступный через интерфейс командной строки (CLI) Snyk и в виде облачного сервиса. Это один из агентов в составе платформы Evo Agentic AppSec, которая запускается сегодня.
Проверьте своего агента с помощью VulnBump
Инструментарий VulnBump и все 43 тестовых сценария находятся в открытом доступе на github.com/snyk-labs/snyk-vulnbump.
Полная методология, анализ сбоев и ограничения приведены в научной статье. Если вы сами разрабатываете агент для устранения уязвимостей, прогоните его через VulnBump и расскажите нам о результатах.
разработали Габия Пасиунайте, Райан Макморроу, Брайан Кларк, Лиран Тал и Люк Ту.
ИССЛЕДОВАНИЕ












