К основному содержимому
#AI

Is Vibe Coding Safe? Benchmarking Vulnerability of Agent-Generated Code in Real-World Tasks (Рубрика AI)

#AI #Engineering #Software #Processes #Productivity #Economics #Security

2 декабря вышло интересное исследование про безопасность vibe-coding от авторов Songwen Zhao, Danqing Wang, Kexun Zhang, Jiaxuan Luo, Zhuo Li и Lei Li. Основная группа ученых здесь связана с университетом Карнеги Меллон.

Если объяснять на пальцах суть исследования, то авторы сначала рассказывают, что vibe coding - новый подход к программированию, при котором человек-программист формулирует задачу на естественном языке, а агент на базе большой языковой модели (LLM) выполняет сложные задачи кодирования с минимальным ручным вмешательством. Но вот вопрос, а код, полученный таким способом безопасен?

Для ответа на этот вопрос авторы разработали новый бенчмарк SUSVIBES, 200 реалистичных задач по разработке фичей для существующих проектов с открытым исходным кодом. Интересно, что каждая из этих задач взята из реальной истории разработки: ранее, когда эти фичи реализовывали люди, в код по незнанию закрались уязвимости безопасности. Задачи намного сложнее единичных примеров из предыдущих бенчей безопасности - они требуют правок в среднем в ~180 строк кода, затрагивая несколько файлов в крупном репозитории (в отличие от тривиальных задач в рамках одной функции или файла). Совокупно задачи покрывают 77 различных категорий уязвимостей согласно классификации CWE.

Прогон этого бенчмарка на популярных агентских системах (SWE-Agent, OpenHands, Claude Code) с популярными LLM (Claude 4 Sonnet, Kimi K2, Gemini 2.5 Pro) показал тревожную картину. Лучшая система (агент SWE-Agent с моделью Claude 4 Sonnet от Anthropic) успешно решала 61% поставленных задач, но лишь 10,5% из этих решений оказались действительно безопасными, то есть не содержали уязвимостей.

Попытки улучшить ситуацию простыми мерами - например, снабжать агента дополнительными подсказками о возможных уязвимостях в тексте задания - не дали существенного эффекта и агенты чаще не справлялись с функциональной частью задачи, а общий успех безопасных решений почти не вырос.

В итоге, на текущем уровне развития технологий вайбкодинг ускоряет создание функционала, но скрыто приносит проблемы с безопасностью. Без существенных улучшений в архитектуре AI-агентов или обучении моделей, доверять такой код в ответственных системах нельзя. Исследование служит призывом к индустрии - заняться разработкой таких улучшений.

P.S. Мне особо понравился пайплпан сбора бенчмарка и прогона тестов:)

Пайплайн автоматизирован и основан на реальных репозиториях с известными уязвимостями. Для каждой уязвимости из истории проекта они подготовили соответствующую задачу на добавление функционала, где внедрение этой функции ранее привело к проблеме безопасности. В задачу включаются: актуальное состояние кода (репозиторий до внесения исправления уязвимости), описание требуемой новой функции (feature request) и набор тестов. Тесты разбиты на две категории - функциональные тесты, и тесты безопасности, которые ловят именно ту уязвимость, что была допущена изначально. Таким образом, заранее известно, каким требованиям должно удовлетворять безопасное решение.

На каждом таком задании испытывались агенты, что запускалиси внутри изолированного окружения (например, Docker-контейнера) с доступом к коду проекта. Получив задачу (описание новой функции), агент мог взаимодействовать с окружением: читать и редактировать файлы, компилировать и запускать проект, запускать тесты и т.п., делая это в несколько итераций, имитируя реальный процесс разработки. В конце агент выдавал patch - набор изменений к исходному коду репозитория, реализующий требуемую функциональность. Этот сгенерированный патч автоматически прогонялся через оба набора тестов. Метрики успеха были такими:

  • Func Pass - процент задач, где патч прошёл все функциональные тесты (правильно реализовал задачу).
  • Sec Pass - процент задач, где патч прошёл также все тесты безопасности (не внёс уязвимостей).

#Engineering #Software #Processes #Productivity #Economics #Security