Vibe coding: как AI ускоряет разработку, но ломает безопасность — что делать

Что происходит на практике?

Один из ваших разработчиков открыл среду разработки, ввёл запрос в AI-помощник — «сгенерировать функцию авторизации», получил готовый код и за пару минут отправил его в общий репозиторий. Такой диалог с программой-помощником, когда разработчик формулирует задачу, получает готовый фрагмент и сразу отправляет его в репозиторий, называется vibe coding.

Как меняется модель контроля?

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

  • Какие данные (исходный код, конфиги, логи, иногда даже тексты задач) уходят в модель.
  • Кто фактически написал конкретный кусок кода — человек или AI-ассистент.

Какие новые риски появляются?

  • Утечка конфиденциальных данных — если в запросе разработчик передаёт части бизнес-логики, пароли или внутренние ключи доступа, модель может их запомнить или отразить в ответе.
  • Неизвестный источник кода — сканеры видят лишь итоговый фрагмент, но не знают, откуда он пришёл. Это усложняет оценку риска уязвимостей, связанных с известными уязвимостями в зависимостях, которые модель могла добавить автоматически.
  • Небезопасные паттерны — AI-ассистент может предложить решение, которое выглядит корректным, но нарушает принципы минимальных прав доступа, использует устаревшие библиотеки или открытые порты.
  • Отсроченный отклик DevSecOps — задачи, найденные сканером, попадают в длинный список ожидания, а из-за большого объёма кода разработчики просто не успевают исправлять всё.

Как проверить безопасность AI-кода?

  • Логировать каждый запрос к AI-ассистенту (текст запроса, время, пользователь, используемая модель).
  • Маркировать AI-сгенерированный код в репозитории (например, специальный комментарий // AI-generated).
  • Запускать сканирование не только на готовом запросе на слияние, но и на «промежуточных» артефактах — скрипт, который собирает все AI-ответы и проверяет их.
  • Проводить ручной review тех фрагментов, где в запросе передавались конфиденциальные данные или бизнес-логика.
  • Ограничить контекст, передаваемый в модель: исключать логи, токены, детали инфраструктуры.

Что может пойти не так?

  • Недостаточная точность логов — если система не фиксирует полный запрос, вы не сможете отследить, какие данные ушли наружу.
  • Снижение скорости разработки — дополнительные проверки могут вернуть часть ускорения, которое обещали AI-ассистенты.
  • Сопротивление команды — разработчики могут воспринимать новые ограничения как «надоедание» и обходить их, что только ухудшит контроль.
  • Неоднородность инструментов — разные AI-ассистенты имеют свои API и политики хранения данных, что усложняет единый процесс аудита.

Примеры реальных инцидентов

Инцидент Описание Последствия Вывод
Leak-2024-01 Разработчик запросил у AI-ассистента «реализовать JWT-подпись», включив в запрос реальный секретный ключ. Ключ оказался в сгенерированном фрагменте, который попал в публичный репозиторий. Утечка ключа, необходимость отозвать и переиздать токены, штрафы за нарушение GDPR. Никогда не передавать секреты в запросах; использовать «placeholder-токены».
Vibe-Bug-2025-07 AI-ассистент добавил в проект зависимость с уязвимостью, скрытую за «dev-зависимостью». Сканер не обнаружил её, потому что зависимость была добавлена после последнего сканирования. Уязвимость эксплуатировалась в продакшене, требовалось срочное обновление. Интегрировать сканирование зависимостей в процесс генерации кода, а не только в CI.
Context-Leak-2025-11 При работе с AI-ассистентом разработчик скопировал в запрос часть конфигурационного файла с IP-адресами внутренних сервисов. Модель отразила эти IP в ответе, который был опубликован в открытом форуме. Раскрытие внутренней сетевой топологии, повышенный риск целевых атак. Ограничивать контекст запросов, использовать «песочницу» без реальных данных.

Технические детали интеграции AI-ассистентов

  • Прокси-слой для запросов — разместите небольшую службу (например, на Node.js или Go), через которую проходят все обращения к внешним AI-API. Прокси фиксирует тело запроса и ответа, а также добавляет метаданные (ID пользователя, проект, ветка).
  • Шифрование журналов — храните логи в зашифрованном хранилище. Доступ к журналам должен быть ограничен только команде безопасности.
  • Токен-редактирование — перед отправкой запроса автоматически заменяйте любые строки, соответствующие паттернам секретов, на «***». Это можно реализовать через регулярные выражения или специализированные инструменты.
  • CI-плагин для «промежуточных» артефактов — создайте шаг в pipeline, который собирает все файлы, отмеченные как // AI-generated, и прогоняет их через те же инструменты сканирования, что и обычный код.
  • Обратная связь в модель — если сканер обнаружил уязвимость в AI-сгенерированном фрагменте, автоматически отправляйте «feedback-запрос» в модель с указанием ошибки, чтобы обучить её избегать подобных паттернов в будущем.

Рекомендации по политике данных

Политика Описание Как внедрить
Zero-Secret Prompt Запрещено включать любые секреты (пароли, токены, сертификаты) в запросы к AI. Добавьте проверку в плагин среды разработки, который сканирует вводимый текст в реальном времени.
Retention-Limit Хранить запросы и ответы не более 30 дней, после чего автоматически удалять. Настройте политику TTL в системе логирования.
Audit-Trail Каждый запрос должен быть привязан к конкретной задаче/истории в системе управления задачами. Интегрируйте webhook-сообщения в систему управления задачами, где в комментариях будет ссылка на журнал.
Vendor-Transparency Требовать от поставщиков AI-моделей публичные декларации о том, как они обрабатывают и хранят пользовательские данные. Включите пункт в договоры с поставщиками, проверяйте их SLA.

Что может измениться в будущем?

  • Модели с локальным развертыванием — компании начнут использовать локальные версии AI-моделей, что уменьшит риск утечки данных за пределы корпоративного периметра, но потребует собственного процесса обновления моделей.
  • Контекст-чувствительные сканеры — новые инструменты сканирования будут учитывать, что часть кода пришла из AI, и автоматически применять более строгие правила (например, проверку на использование устаревших библиотек).
  • Регулятивные требования — в ЕС и США могут появиться законы, обязывающие фиксировать каждый запрос к генеративному ИИ и предоставлять возможность «права на забвение» для данных запросов.
  • Обучаемые политики — организации смогут «подкормить» модели своими внутренними правилами (например, «не использовать прямой доступ к базе данных без ORM»), что снизит количество небезопасных рекомендаций.

Что сделать уже на этой неделе?

Шаг Что проверить Как проверить
1 Есть ли у вас в проекте AI-ассистенты? Просмотрите настройки среды разработки и CI, найдите плагины AI-ассистентов.
2 Как фиксируются запросы к моделям? Проверьте, есть ли в системе журналирование (лог-файлы, сервис-прокси).
3 Есть ли маркировка AI-кода в репозитории? Поиск по строке // AI-generated или аналогичному маркеру.
4 Какие сканеры запускаются до слияния? Убедитесь, что инструменты сканирования включены в pre-merge pipeline и покрывают все файлы.
5 Какие данные могут попасть в запросы? Проведите интервью с разработчиками, соберите примеры запросов, оцените наличие секретов.
6 Кто отвечает за контроль AI-ассистентов? Назначьте владельца (например, руководителя DevSecOps) и зафиксируйте процесс в стандартной операционной процедуре.

Какой вывод делает руководитель информационной безопасности?

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

Источники

  • Habr: Vibe coding без иллюзий (оригинал) – https://habr.com/ru/companies/infera_security/articles/1054934/