3,583 papers
arXiv:2606.23130 79 22 июня 2026 г. FREE

Вайб-кодинг и безопасность: три системных сбоя AI и как их компенсировать промптом

КЛЮЧЕВАЯ СУТЬ
Обнаружено: у AI-инструментов для вайб-кодинга три системных сбоя. Он забывает про безопасность по ходу работы. Оптимизирует каждый кусок отдельно — не видит целого. Не знает специфики вашей архитектуры. Это не баги конкретных моделей — паттерн воспроизводится во всех популярных инструментах. Метод позволяет закрыть большинство уязвимостей в AI-написанном коде прямо в чате — без дополнительных инструментов. Фишка: два добавления к любому промпту — требование production-ready кода и просьба проверить себя по чеклисту — работают лучше, чем сложные агентные системы с автоматическим аудитом безопасности.
Адаптировать под запрос

TL;DR

Каждое второе задеплоенное приложение, созданное через Claude Code или Lovable, содержит критические уязвимости — не потому что AI плохой программист, а потому что у него есть три системных сбоя: он забывает про безопасность по мере написания кода, оптимизирует каждый кусок локально не думая о целом, и не знает специфики вашей архитектуры. Это не баги конкретных моделей — это паттерны, воспроизводящиеся во всех популярных инструментах.

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

Хорошая новость: лёгкие техники промптинга оказались эффективнее сложных агентных систем. Два добавления к промпту — просьба писать "в продакшн" и просьба проверить себя — дают максимальное снижение уязвимостей. Это работает прямо в чате, без дополнительных инструментов.


🔬

Схема метода

Это не пошаговый алгоритм — это два инструмента, которые добавляются к любому промпту вайб-кодинга:

ИНСТРУМЕНТ 1 — "Production request"
Добавь в начало промпта: требование production-ready кода
→ AI переключает режим с "работает на моей машине" на "работает в реальном мире"

ИНСТРУМЕНТ 2 — "Self-check request"  
Добавь в конец промпта: попроси AI проверить своё решение на безопасность
→ AI находит часть собственных дыр до того как ты запустил код

ОБА ИНСТРУМЕНТА в одном промпте → максимальный эффект

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


🚀

Пример применения

Задача: Ты делаешь через Claude Code простой сервис — например, форму записи клиентов для своей студии / агентства / магазина. Нужна авторизация, приём данных от пользователей, сохранение в базу.

Промпт:

Создай production-ready веб-приложение для записи клиентов студии растяжки.

Функционал:
- Форма записи: имя, телефон, выбор времени из слотов
- Админ-панель для просмотра записей (только для владельца)
- Уведомление на email при новой записи

Требования к качеству:
- Код должен быть готов к реальному деплою, не демо-версия
- Все входящие данные от пользователей — валидируй и очищай
- Авторизация в админ-панели — настоящая, не заглушка
- Секреты (API ключи, пароли) — только в переменных окружения, не в коде
- После того как напишешь — сделай самопроверку: пройдись по OWASP Top 10 
  и проверь своё решение на каждый пункт. Исправь найденные проблемы.

Результат:

AI сгенерирует приложение, потом явно выполнит самопроверку по пунктам — ты увидишь список: "Проверил инъекции — ОК, проверил авторизацию — нашёл проблему, исправил вот так..." Финальный код будет существенно безопаснее, чем тот же запрос без этих двух добавлений. Заглушечная логика в авторизации и открытые API-ключи — два самых частых дефекта — будут устранены с высокой вероятностью.


🧠

Почему это работает

Три сбоя, которые объясняют всё. AI-агент при вайб-кодинге работает в длинном диалоге. К моменту написания авторизации он "забыл" требования безопасности из начала сессии (memory defect). Каждый отдельный модуль он делает правильно, но не видит как они взаимодействуют — auth-модуль "работает", но в связке с другими создаёт дыру (objective defect). Наконец, AI не знает специфики твоего деплоя и стека — пишет шаблонный код без учёта реальной архитектуры (knowledge defect).

Self-check работает потому что AI умеет критиковать лучше, чем создавать. Написать безопасный код с нуля — сложно: нужно держать в голове всё сразу. Найти проблему в готовом коде — проще: один фокус, конкретный объект. Self-check переключает модель из режима "генерирую" в режим "проверяю" — другая задача, другое качество внимания.

Production request меняет контекст поколения. LLM генерирует текст исходя из контекста промпта. "Напиши приложение" → модель активирует паттерны демо-кода и туториалов. "Напиши production-ready приложение" → модель активирует паттерны рабочего, задеплоенного кода с обработкой ошибок и проверками. Это не команда — это настройка контекста, из которого берутся паттерны.

Рычаги управления: - Замени "OWASP Top 10" на конкретный список — если знаешь свои риски (например, "проверь SQL-инъекции и открытые ключи"), AI проверит точнее - Добавь конкретные угрозы — "у меня финтех-приложение, особое внимание на авторизацию и логирование" — знание defect компенсируется явной постановкой - Попроси промежуточные self-check — для больших приложений проси проверку после каждого модуля, не только в конце (борьба с memory defect) - Укажи деплой-среду — Railway, Vercel, Supabase — AI учтёт специфику платформы


📋

Шаблон промпта

Создай production-ready {описание приложения}.

Функционал:
- {функция 1}
- {функция 2}
- {функция 3}

Обязательные требования к безопасности:
- Все данные от пользователей — валидировать и очищать перед использованием
- Авторизация — настоящая реализация, без заглушек и пропуска всех запросов
- Секреты и API-ключи — только через переменные окружения (.env), не хардкодить
- Входящие запросы к базе данных — защищены от инъекций

После написания кода — выполни самопроверку:
Пройдись по этому списку и проверь своё решение:
1. Сломанная авторизация — есть ли незащищённые маршруты?
2. Инъекции — все ли запросы к БД через параметры, не конкатенацию?
3. Открытые секреты — нет ли API-ключей в коде или фронтенде?
4. Незафильтрованный ввод — все ли данные от пользователей проверяются?
5. Заглушечная логика — нет ли мест где auth "всегда пропускает"?

Для каждого пункта: статус (ОК / нашёл проблему) и что сделал.

Что подставлять: - {описание приложения} — "форма записи + админка", "лендинг с CRM", "API для мобильного приложения" - {функция N} — конкретные фичи, которые нужны - Список проверок можно сократить до самых важных для вашего типа приложения


🚀 Быстрый старт — вставь в чат:

Вот шаблон для безопасного вайб-кодинга. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит какой функционал нужен и какой стек/платформа — потому что от этого зависит что именно проверять в self-check. Она возьмёт структуру шаблона и заполнит под твой контекст.


⚠️

Ограничения

⚠️ Не устраняет всё: Self-check снижает количество уязвимостей, но не до нуля. Knowledge defect — нехватка знаний о специфике вашего деплоя — промптом компенсируется частично. Критические системы всё равно нужен человек с security-экспертизой.

⚠️ Memory defect в длинных сессиях: Чем длиннее диалог с AI-агентом, тем больше он "забывает" про требования безопасности из начала. Self-check в конце помогает, но в многочасовых сессиях лучше делать промежуточные проверки.

⚠️ Уязвимости архитектурного уровня: Часть дыр возникает не в коде, а в решениях о структуре приложения — как компоненты взаимодействуют друг с другом. Промпт-инструкции не всегда достигают этого уровня. Это самая сложно устранимая категория.

⚠️ Отсутствие гарантий деплоя: Исследование показало — даже приложения с "улучшенными промптами" деплоятся без полноценного аудита. Self-check это шаг вперёд, не финальная проверка.


🔍

Как исследовали

Исследователи собрали 10 517 реальных открытых вайб-кодинг-приложений с GitHub — находили их по "отпечаткам" агентов (Claude Code оставляет папку .claude/, Lovable — метатег в HTML). Из них 1 170 были реально задеплоены и доступны из интернета. Выборку 200 приложений прогнали через четыре независимых AI-аудитора (Claude + GPT в двух разных конфигурациях), потом два эксперта вручную верифицировали каждую находку — проверяли, можно ли уязвимость реально эксплуатировать. Итог: 1 471 подтверждённая уязвимость в 200 приложениях.

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

Интересная деталь: 94% всех вайб-кодинг приложений — это веб-приложения. Игры — второе место с долей 1.2%. Типичное вайб-кодинг приложение: 8 351 строка кода, 101 файл, разработка за 9.8 дней. "Ворваться и выдать" — стиль разработки, при котором security review не предусмотрен по природе процесса.


📄

Оригинал из исследования (опционально)

Авторы не публикуют точный текст "production + self-check" промпта в статье — они описывают условие эксперимента. Из описания следует что тестировались запросы двух типов:

[Production request condition]
Generate a production-ready application that follows security best practices, 
including proper authentication, input validation, and secure handling of 
credentials.

[Self-check request condition]  
After generating the application, review your implementation against the 
OWASP Top 10 security risks and fix any identified vulnerabilities.

Контекст: Исследователи тестировали эти условия как отдельные и в комбинации — комбинация дала максимальный эффект.


💡

Адаптации и экстраполяции

1. Адаптация контекста — те же принципы для любого сложного AI-задания (не только код)

Три системных сбоя (память, локальная оптимизация, нехватка знаний) работают не только в вайб-кодинге. Они воспроизводятся в любой длинной сессии с AI — написание большого документа, разработка стратегии, создание системы промптов.

💡 Адаптация для бизнес-документов:

Напиши [документ] в том виде, в котором его можно сразу отдать [аудитории].

После написания — проверь себя:
1. Нет ли утверждений без обоснования?
2. Нет ли противоречий между разными частями?
3. Закрыты ли очевидные возражения аудитории?
4. Нет ли мест где логика "висит в воздухе"?

Для каждого пункта: статус и что исправил.

2. Адаптация техники: промежуточные self-check против memory defect

🔧 Техника: self-check после каждого модуля → борьба с забыванием

Memory defect — AI забывает требования по мере роста диалога. Решение: не ждать финального self-check, просить его после каждого крупного блока.

[После написания auth-модуля]
Стоп. Перед тем как двигаться дальше — проверь этот модуль:
авторизация настоящая или заглушка? Есть ли незащищённые маршруты?
Исправь, подтверди — продолжим.

Это разбивает длинную сессию на проверяемые отрезки. Каждый модуль — своя точка контроля.


3. Экстраполяция: компенсация трёх дефектов через структуру промпта

Понимание трёх root causes даёт систему для любой задачи:

[Против memory defect] 
В конце каждого раздела — сводка принятых решений и почему.

[Против objective defect]
После завершения — проверь: нет ли конфликтов между частями?

[Против knowledge defect]
Контекст задачи: {специфика вашей ситуации, которую AI не знает по умолчанию}

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


🔗

Ресурсы

Understanding the (In)Security of Vibe-Coded Applications

Junquan Deng (Independent Researcher) · Zhiyu Fan (Microsoft, UK) · Ruijie Meng (CISPA Helmholtz Center for Information Security, Germany)

Датасеты упомянутые в работе: VIBEAPPS (10 517 приложений), VIBEVULNS (1 471 уязвимость)

Инструменты вайб-кодинга из исследования: Claude Code (Anthropic), Lovable

OWASP Top 10 — стандарт классификации веб-уязвимостей: owasp.org/www-project-top-ten


📋 Дайджест исследования

Ключевая суть

Обнаружено: у AI-инструментов для вайб-кодинга три системных сбоя. Он забывает про безопасность по ходу работы. Оптимизирует каждый кусок отдельно — не видит целого. Не знает специфики вашей архитектуры. Это не баги конкретных моделей — паттерн воспроизводится во всех популярных инструментах. Метод позволяет закрыть большинство уязвимостей в AI-написанном коде прямо в чате — без дополнительных инструментов. Фишка: два добавления к любому промпту — требование production-ready кода и просьба проверить себя по чеклисту — работают лучше, чем сложные агентные системы с автоматическим аудитом безопасности.

Принцип работы

Три сбоя — два ответа. AI работает в длинном диалоге. К моменту написания авторизации он уже не держит в голове требования безопасности из начала сессии. Каждый модуль делает правильно — но не видит как они стыкуются. Дыра возникает на стыке, не внутри блока. И не знает вашего конкретного стека и деплоя. Production request переключает контекст: 'напиши приложение' — AI тянет паттерны туториалов, 'напиши production-ready приложение' — паттерны рабочего задеплоенного кода с проверками. Self-check переключает режим с 'генерирую' на 'проверяю'. AI критикует лучше, чем создаёт — один фокус, конкретный объект, другое качество внимания.

Почему работает

При генерации кода AI держит в голове слишком много сразу: функционал, синтаксис, структуру — безопасность уходит на периферию. Self-check сужает задачу до одного вопроса: 'вот готовый код, найди проблему'. Это принципиально другая нагрузка. Два сбоя из трёх — забывает требования и не видит целое — напрямую компенсируются этими добавлениями. Вайб-кодинг порождает уникальные дыры, которых нет в обычном коде: авторизация-заглушка, которая пропускает всех, секреты прямо во фронтенде, незафильтрованный ввод — именно они исчезают первыми после self-check.

Когда применять

Любой вайб-кодинг с публичным доступом: формы с данными пользователей, админ-панели, программные интерфейсы (API), приложения с авторизацией. Особенно важно при использовании Claude Code, Lovable или аналогов для задеплоенных продуктов — не прототипов на пять минут. НЕ заменяет полноценный аудит безопасности для финтех, медтех и систем с критическими данными — снижает риски, не устраняет полностью.

Мини-рецепт

1. Добавь в начало промпта: слова 'production-ready' или 'готов к реальному деплою'. Никаких длинных объяснений. Одна фраза меняет контекст генерации.

2. Добавь в конец промпта: явную просьбу проверить себя по чеклисту безопасности. Минимальный набор для старта:
После написания кода — проверь: нет ли незащищённых маршрутов, все ли запросы к базе данных через параметры (не склейку строк), нет ли API-ключей в коде или фронтенде, есть ли проверка всех данных от пользователей, нет ли мест где авторизация 'всегда пропускает'. По каждому пункту: статус и что сделал.

3. Уточни стек и деплой-среду: укажи платформу — Railway, Vercel, Supabase. Это компенсирует третий сбой — нехватку знаний о специфике вашей архитектуры. AI учтёт особенности платформы в proверке.

4. Для больших приложений — промежуточные проверки: не только в конце сессии, но после каждого модуля. Чем длиннее диалог, тем сильнее memory defect — просьба проверить себя 'сейчас' работает лучше, чем 'в конце'.

Примеры

[ПЛОХО] : Создай веб-приложение для записи клиентов с формой и админ-панелью
[ХОРОШО] : Создай production-ready веб-приложение для записи клиентов студии. Функционал: форма записи (имя, телефон, выбор времени из слотов), админ-панель для просмотра записей, уведомление на email при новой записи. Деплой на Railway + Supabase. Все данные от пользователей — валидировать. Авторизация в админке — настоящая, без заглушек. Секреты — только в переменных окружения. После написания — проверь по пунктам: незащищённые маршруты, инъекции в запросах к базе данных, открытые ключи, незафильтрованный ввод, заглушечная логика авторизации. По каждому: статус и что исправил. AI напишет код, потом явно пройдётся по каждому пункту: 'Проверил авторизацию — нашёл проблему, вот исправление'. Финальный код будет существенно безопаснее. Два самых частых дефекта — авторизация-заглушка и открытые ключи — будут устранены с высокой вероятностью.
Источник: Understanding the (In)Security of Vibe-Coded Applications
ArXiv ID: 2606.23130 | Сгенерировано: 2026-06-28 20:44

Проблемы LLM

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

Методы

МетодСуть
Самопроверка в конце промптаДобавь в конец любого запроса: "После того как сделаешь — проверь своё решение по этому списку: \[перечислить 3-5 критериев\]. Для каждого пункта напиши: ОК или что нашёл и исправил." Почему работает: создавать и проверять — разные задачи. При создании модель держит много задач сразу. При проверке — один фокус, конкретный объект. Качество внимания выше. Когда применять: любой выход который можно проверить по списку критериев — код, текст, план, анализ. Когда не помогает: если критерии размытые ("проверь что всё хорошо") — конкретизируй список
Ярлык режима в начале промптаДобавь в начало запроса слово-ярлык нужного режима. Для кода: "production-ready". Для текста: "профессиональный материал для публикации". Для анализа: "готовый отчёт для клиента". Почему работает: модель генерирует из контекста. "Напиши приложение" активирует паттерны учебных демо. "Напиши production-ready приложение" активирует паттерны рабочего, задеплоенного кода. Это не команда — это переключение набора паттернов, из которых модель берёт решения

Тезисы

ТезисКомментарий
Модели легче найти ошибку в готовом тексте чем не допустить её при созданииПри генерации модель решает много задач сразу: структура, логика, стиль, требования. Внимание размазано. При проверке задача одна: найти проблему в конкретном тексте. Это проще. Поэтому просьба "проверь себя" даёт лучший результат чем просьба "сразу напиши без ошибок". Применяй: не проси "с первого раза без ошибок" — проси "сделай, потом проверь по списку"
📖 Простыми словами

Understanding the (In)Security of Vibe-Coded Applications

arXiv: 2606.23130

Вайб-кодинг — это когда ты накидываешь промпты в Claude Code или Lovable, а на выходе получаешь готовое приложение, которое вроде как работает. Но внутри там часто полная труха. Проблема не в том, что нейронка «глупая», а в самой механике того, как LLM пишет код. Она работает как сверхбыстрый имитатор, который собирает картинку из кусочков пазла, не понимая, что за картинка должна получиться в итоге. В итоге каждое второе приложение, собранное «на вайбе», светит дырами в безопасности прямо из коробки.

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

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

Представь, что ты просишь Claude собрать форму записи для клиентов с авторизацией и базой. Ты радуешься, что всё заработало за пять минут, но под капотом AI мог забыть про валидацию данных или оставить открытый доступ к API, потому что в тот момент он был занят красивыми кнопочками. Этот принцип универсален: неважно, пишешь ты сложный бэкенд или простенький лендинг, паттерны ошибок одинаковы. AI-агенты всегда будут жертвовать безопасностью ради того, чтобы показать тебе быстрый результат и получить твой «лайк».

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

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с