Vibe coding и безопасность: как контролировать ИИ в разработке

Vibe coding: как ИИ меняет разработку и ломает привычный DevSecOps

Vibe coding: как ИИ меняет разработку и ломает привычный DevSecOps

Vibe coding ускоряет разработку через промпты к LLM, но размывает контроль: данные уходят в модели, уязвимости тиражируются, при этом DevSecOps не успевает за скоростью изменений. Разбираем, где ломается защита и как выстроить архитектуру контроля в эпоху ИИ.

 

 

 

 

 

 

  1. 1. Введение
  2. 2. Где ломается привычная модель безопасности
  3. 3. Основные риски
    1. 3.1. Утечки секретов, чувствительной информации через ИИ
    2. 3.2. Массовое тиражирование уязвимостей
    3. 3.3. Разрыв между скоростью генерации и скоростью контроля
    4. 3.4. «Образ» компании в облаке
    5. 3.5. ИИ-агенты и удобство «на максимуме» с риском потерять всё
  4. 4. Как вернуть контроль: архитектурный взгляд
    1. 4.1. Эшелон 1. Контроль взаимодействий с ИИ
    2. 4.2. Эшелон 2. Проверка ИИ-сгенерированного кода
    3. 4.3. Эшелон 3. Наблюдаемость и аудит
    4. 4.4. Эшелон 4 (если применимо). Защита ИИ агентов
  5. 5. Выводы

Введение

За последний год мы всё чаще сталкиваемся с запросами от заказчиков о том, как контролировать vibe coding. Команды разработки уже активно используют искусственный интеллект (ИИ, или AI от англ. Artificial Intelligence), но часто формально процесс нигде не описан и никак не контролируется, а даже если и контролируется, то вопрос безопасности остаётся за пределами текущего перечня задач. Почти все начинают с автогенерации тестов или рефакторинга, но через пару месяцев ИИ уже участвует в написании бизнес-логики, а разработчик не столько пишет код, сколько ведёт диалог с моделью и быстро принимает её решения, не анализируя и не проверяя вовсе.

Главная троица «автопилотов»: GitHub Copilot, Claude Code и Cursor, который очень популярен в России, так как встраивается в среду разработки (IDE, integrated development environment) на основе Visual Studio Code.

Vibe coding — это постоянный диалог разработчика с ИИ, генерация кода «на лету», быстрые итерации без формального дизайна, перенос части инженерных решений в ИИ. Подход ускоряет разработку в десятки раз, но с точки зрения информационной безопасности в этот момент организация теряет контроль над двумя вещами: куда уходят данные и откуда и какого качества генерируется код. И именно здесь классический DevSecOps перестаёт эффективно справляться.

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

В этой статье разберёмся:

  • что именно ломается в классическом DevSecOps, когда команда переходит на vibe coding;
  • какие риски появляются сверх привычного набора уязвимостей;
  • как выстроить архитектуру контроля так, чтобы не запрещать ИИ, а держать его в рамках допустимого риска.

Рост скорости разработки и удобство ИИ-инструментов создают ощущение полного контроля. Но за этим ускорением скрываются изменения, которые незаметно подрывают привычные подходы к обеспечению безопасности.

Где ломается привычная модель безопасности

DevSecOps изначально строился вокруг довольно простого предположения: код создаётся внутри контролируемой среды, его можно проверить до релиза, объём найденных уязвимостей можно обработать вручную. С применением ИИ это уже не совсем так.

Под vibe coding будем понимать не просто «автодополнение умнее, чем в IDE (integrated development environment)», а режим, где разработчик ведёт постоянный диалог с моделью прямо в IDE, модель генерирует код «на лету», дописывает функции, тесты, конфиги, миграции, при этом часть инженерных решений принимает уже не человек. В такой концепции роль разработчика смещается от «пишу код» к «управляю контекстом и быстро принимаю/отклоняю предложения ИИ».

Типичная эволюция процесса выглядит так:

  1. Команда начинает с генерации тестов и рефакторинга.
  2. Через пару месяцев ИИ активно участвует в написании бизнес-логики и инфраструктурного кода.
  3. Ещё чуть позже у ассистента появляются «ручки» в CI/CD (continuous integration/continuous delivery) и облаке — через агентные сценарии и интеграции.

Скорость разработки действительно растёт. Но как только ИИ-диалог становится основным каналом принятия решений, привычная модель безопасности трещит по швам.

В классической концепции DevSecOps до релиза есть время и ресурсы прогнать код через SAST/DAST/SCA (static application security testing / dynamic application security testing / software composition analysis) и ручной review, а объём изменений и частота релизов позволяют AppSec-команде успевать за выпуском новых версий. Vibe coding эти допущения фактически разрушает.

Реальный рабочий процесс сегодня часто выглядит так:

  1. Разработчик даёт модели большой контекст (часть проекта, конфиги, куски кода или API).
  2. Модель генерирует блок кода/конфигурации/скрипт миграции.
  3. Разработчик слегка адаптирует результат.
  4. Патч уходит в репозиторий и в CI/CD (continuous integration/continuous delivery).

Формально у нас есть pull request, тесты проходят, SAST что-то посмотрел, ревью «по диагонали» состоялось. Фактически часть разработки произошла вне контролируемых процессов, происхождение решений и кода размылось (человек, модель, смешанный вариант), метрики качества и безопасности перестают быть показателями реального риска.

Поэтому контроль теперь должен появляться не только «на уровне репозитория», но и в 2 дополнительных точках:

  1. В момент взаимодействия с моделью — какие данные мы ей отдаём, какие сценарии ей вообще разрешены, насколько безопасный код она генерирует.
  2. В момент использования результата работы модели — что именно она сгенерировала и как это попадает в ваш пайплайн.

Когда процессы разработки меняются, вместе с ними трансформируется и профиль угроз. Риски перестают быть точечными и начинают проявляться системно, затрагивая сразу несколько уровней инфраструктуры.

Основные риски

Эти риски не являются теоретическими: они уже проявляются в реальных инцидентах. Рассмотрим ключевые сценарии, которые возникают при использовании AI в разработке.

Утечки секретов, чувствительной информации через ИИ

Большинство ассистентов расширяют контекст: им нужен не только фрагмент вокруг нужного куска кода, но и соседние файлы, конфиги, иногда рабочие заметки. Если там лежат токены доступа, API-ключи, пароли, персональные данные пользователей, коммерческая тайна, алгоритмы расчёта, внутренние модели рисков — всё это уходит на сторону провайдера модели (или в ваш внутренний ИИ-кластер), логируется, может использоваться в дообучении или стать объектом компрометации.

Для 152-ФЗ это не «неловкость», а реальный инцидент, т. к. данные ушли третьей стороне с нарушением условий обработки. А в случае с паролями доступа произошла отправка данных для управления вашей инфраструктурой, и ни одна система это не отследила.

Что с этим делать:

  • Ставить решения класса LLM/AI Firewall, которые контролируют все взаимодействия с ИИ-моделями, через которые проходят все запросы к внешним и внутренним моделям.
  • Контролировать на уровне кода и передаваемых данных отсутствие секретов, персональных данных и другой чувствительной информации в коде и промптах.

INFERA AI.Firewall и INFERA AI.SafeCode позволяют командам разработки использовать ИИ-модели и ИИ-кодинг, включая vibe coding, под полным контролем безопасности.

INFERA AI.SafeCode обнаруживает инъекции команд ОС, секреты в коде, отсутствие защиты от XSS, SQL-инъекций, командных инъекций, некорректную обработку входных данных, раскрытие чувствительной и конфиденциальной информации и многое другое.

На примере работы продемонстрируем анализ кода и уязвимость, которая была обнаружена и раскрывает чувствительную информацию.

 

Рисунок 1. Обнаружение секретов, встроенных в код, с помощью ИИ-анализатора

Обнаружение секретов, встроенных в код, с помощью ИИ-анализатора

 

INFERA AI.Firewall в реальном времени анализирует все запросы и выявляет секреты в коде, отправляемом на анализ в ИИ-модель.

 

Рисунок 2. Маскирование и защита секретов при передаче данных в LLM через AI Firewall

Маскирование и защита секретов при передаче данных в LLM через AI Firewall

 

Массовое тиражирование уязвимостей

LLM не придумывает код с нуля, она воспроизводит паттерны из обучающих данных. Но вместе с лучшими практиками модель приносит небезопасные обработчики ввода, устаревшие или заведомо слабые криптографические решения, «удобные», но уязвимые конфигурации с широкими правами и многое другое.

Разработчик часто воспринимает ответ модели как «разумное дефолтное решение», особенно если оно совпадает с его ощущением «как обычно делают». В результате:

  • один небезопасный паттерн из обучающих данных начинает масштабироваться в десятки сервисов;
  • типовые ошибки (SQL injection, XSS, SSRF — server-side request forgery) получают новую волну распространения;
  • инфраструктурные ошибки множатся быстрее, чем их успевают искать.

И главное во всём этом — их количество пропорционально создаваемому коду, а скорость его создания выросла в разы.

Что с этим делать: обнаруживать уязвимости в коде в реальном времени и автоматически либо подсвечивать их разработчику, либо отправлять на автоматическое исправление.

 

Рисунок 3. Выявление уязвимостей в ИИ-сгенерированном коде (SQL-инъекции, XSS и др.) в среде разработки

Выявление уязвимостей в ИИ-сгенерированном коде (SQL-инъекции, XSS и др.) в среде разработки

 

Разрыв между скоростью генерации и скоростью контроля

ИИ делает то, для чего его наняли: радикально ускоряет генерацию кода и конфигураций. Всё остальное — тесты, ревью, SAST, AppSec-практики — растут куда медленнее.

В итоге мы получаем взрывной рост количества изменений, AppSec-команда не успевает, и часть проверок становится формальностью.

Публичные инциденты устроены одинаково: ассистент сгенерировал «удобный» скрипт или конфиг, разработчик проверил только реализацию функций, тесты «зелёные», а в проде внезапно открытая база или другая уязвимость.

Что с этим делать:

  • Внедрять подход shift left (смещение контроля на ранние этапы разработки) и сдвигать часть контроля «ближе к началу разработки». Именно такой подход рекомендован в ГОСТ Р 56939—2024 «Защита информации. Разработка безопасного программного обеспечения».
  • Интегрировать проверки в ранние стадии разработки (до тяжёлых прогонов).
  • Перестроить приоритизацию: изменения с высокой долей ИИ-генерации должны автоматически попадать в зону повышенного внимания AppSec-команды (для этого рекомендуется этот код помечать).

Однако риски не ограничиваются отдельными уязвимостями или утечками. На уровне всей организации формируется более глубокая и долгосрочная угроза, связанная с накоплением данных.

«Образ» компании в облаке

То, что не так важно для бизнеса, но стратегически важно для государства. Если проанализировать весь собранный код в облаке, можно понять, чем занимается компания, получить доступ к её знаниям и ресурсам. Иными словами, сформировать «цифровой двойник» предприятия без вашего ведома. И с каждым запросом он будет всё более точным. Вопрос о том, как и кем будут использованы эти данные, особенно в контексте объектов КИИ, является достаточно серьёзным.

Что с этим делать: использовать локальные модели либо разрабатывать сначала весь код вне защищаемого контура, а потом проверять его и использовать.

ИИ-агенты и удобство «на максимуме» с риском потерять всё

Следующий шаг после классического vibe coding — агентные сценарии: ассистент не только пишет код, но и запускает команды, модифицирует инфраструктуру, запускает пайплайны, ходит в тикет-системы и читает почту.

Если такому агенту выдали «удобные» права, а контроль действий слабый, то риск эскалации и случайных или злонамеренных операций становится очень реален.

Если такому незащищённому агенту прислать письмо с промпт-инъекцией, он будет дальше делать то, что ему укажет злоумышленник, но внутри компании и с самыми широкими правами.

Что с этим делать:

  • запускать агентов в изолированном окружении, контролировать права;
  • с помощью AI Firewall контролировать поток общения агента с LLM для исключения промпт-инъекций и эксплуатации других уязвимостей;
  • проверять навыки (skills) агентов;
  • логировать и мониторить действия агентов как действия привилегированных пользователей с возможностью быстрого отключения.

Очевидно, что точечные меры здесь не работают. Требуется системный подход, который учитывает новые точки контроля и распределяет ответственность между уровнями архитектуры.

Как вернуть контроль: архитектурный взгляд

Такой подход предполагает многоуровневую модель защиты, где контроль встроен в ключевые этапы работы с AI.

Эшелон 1. Контроль взаимодействий с ИИ

Этот слой чаще всего отсутствует, так как решения класса AI Firewall на рынке появились недавно, и крупные enterprise-компании только сейчас начинают активно пилотировать и внедрять такие системы.

Что важно:

  • все обращения к моделям (внутренним и внешним) идут через единую точку контроля;
  • на этом уровне применяется политика: какие типы данных можно отправлять, какие сценарии запрещены, какие модели доступны;
  • включается контроль утечек данных и секретов для промптов пользователей и ответов модели;
  • контролируются атаки на LLM, что особенно важно при применении агентов;
  • логируются факты использования ИИ для последующего аудита.
  • На практике это выглядит как proxy или gateway для LLM-моделей.

 

Рисунок 4. Архитектура LLM Gateway (AI Firewall) для контроля взаимодействий с ИИ-моделями

Архитектура LLM Gateway (AI Firewall) для контроля взаимодействий с ИИ-моделями

 

Эшелон 2. Проверка ИИ-сгенерированного кода

Данный этап ближе к привычному AppSec, но с нюансами: ИИ-код нужно проверять строже, важно отдельно отслеживать его происхождение и не только «найти проблему», но и блокировать её попадание в pipeline. Иначе всё снова сведётся к рекомендациям, которые никто не успевает исправлять.

Для сгенерированного кода необходимо ввести дополнительные правила:

  • контролировать уязвимости сгенерированного ИИ-кода с помощью специальных инструментов;
  • помечать ИИ-фрагменты в репозитории (через метаданные, теги, комментарии).

Важно, чтобы система умела не только находить проблемы, но и блокировать их путь в прод, иначе всё сведётся к бесконечному списку рекомендаций, которые «как-нибудь потом разберём». Конечно, всё должно быть сведено в автоматический CI/CD (continuous integration/continuous delivery).

Эшелон 3. Наблюдаемость и аудит

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

Эшелон 4 (если применимо). Защита ИИ агентов

Этап контроля за агентами. Для понимания руководства — это как идеальный сотрудник, который внезапно может решить работать на конкурента и не боится ответственности.

На этом слое необходимо:

  • контролировать агентов, ограничивать их возможности «рабочими обязанностями»;
  • защищать агентов от внешних посягательств;
  • фиксировать всё, что они делают.

Нужно вводить политики использования ИИ, контролировать модели, отслеживать взаимодействия и измерять риски, т. к. ИИ перестаёт быть «инструментом разработчика» и становится частью поверхности атаки (attack surface).

Выводы

Запретить ИИ уже не получится — придётся либо контролируемо внедрять его, либо отстать от конкурентов. Контроля только на уровне DevSecOps недостаточно, нужен отдельный слой управления и контроля ИИ-взаимодействиями.

Vibe coding — это не временный тренд, а новая нормальность разработки. Проблема в том, что он развивается быстрее, чем практики безопасности. Если ничего не менять, организация постепенно потеряет контроль над данными, кодом и всей инфраструктурой.

Полезные ссылки: