6 сентября 2026 г.
Агенту нельзя доверить починку уязвимости: чисто закрыли дыру 26% патчей
Off-by-1 Labs прогнала 6080 патчей на известных CVE: уязвимость без побочек закрыли 26,0%.
Больше половины патчей не починили дыру или добавили новую: 53,9% из 6080.
Off-by-1 Labs из 1Password взяла шесть известных CVE и посадила чинить их ChatGPT 5.5 и Opus 4.8. Уязвимость закрылась начисто у 26,0% патчей, ещё 20,1% дыру заткнули, но поведение приложения сдвинули. Свыше трети даже успешных патчей авторы пометили как хрупкие, а 49,3% оставили хотя бы один эксплуатируемый путь.
Подсказка решает больше модели. Когда агенту давали верное направление фикса, чисто выходило 65,0% патчей. Без направления вовсе получалось 50,4%, с неверным направлением — 15,2%.
Отсюда прямая рекомендация авторов: детали бага из SAST, баг-баунти-отчёта или от другого агента лучше не передавать вовсе, если в их точности нет уверенности. Неверная подсказка стоит около 50 процентных пунктов успеха, верная добавляет всего 15.
Обвязка вокруг модели вытягивает немного. Один заход дал 45,0% успеха, разведочный режим 49,9%, итеративный 53,0%. Рост от богатства контекста упирается в плато около 3 чистых патчей из 4, а доля патчей с новой уязвимостью поднимается с 4% до 5%.
Одна попытка патча стоила в среднем $2,46. С учётом провалов один чистый патч обходится в $6,74.
Отдать патч на ревью человеку дешевле не выходит. Авторы пишут: чтобы уверенно оценить корректность патча по безопасности, ревьюеру нужно построить примерно то же понимание, которого хватило бы написать патч самому. Ценность LLM-патча без проверки человеком они называют «отрицательной с большим запасом».
Прогнать на своём коде. Разброс между кодовыми базами огромный. На Exim агент выдал 75,8% чистых патчей, на репозитории Gemini CLI — 0,9%.
Инструмент замера FLAWED авторы выложили под MIT, он гоняет Claude, Codex и Gemini CLI на одних входах. Запуск: `./setup.sh`, потом `docker compose up --build`, интерфейс поднимается на 127.0.0.1:8080; нужны Docker, Python 3.11+, uv, Node 20+ и pnpm. Свою уязвимость заводят JSON-спекой по схеме `bugs.schema.json`, а готовые архивы кампаний импортируются через веб-интерфейс.
Плато по контексту уже видно: около 3 чистых патчей из 4, и выше него богатство подсказок результат не поднимает.
Первоисточник