Исследование показало, что код, сгенерированный AI, в 1,7 раза чаще имеет серьёзные проблемы и в 2,74 раза более подвержен уязвимостям безопасности, чем код, написанный человеком. Если вы что-то создавали с помощью Cursor, Claude Code или GitHub Copilot, ваш проект, вероятно, содержит хотя бы одну из пяти самых распространённых брешей в безопасности. Вот какие они и как их найти.
- 45% кода, сгенерированного AI, содержит хотя бы одну уязвимость безопасности
- 1,7 раза чаще имеет серьёзные проблемы по сравнению с кодом, написанным человеком
- 2,74 раза более подвержен уязвимостям безопасности конкретно
- Самые распространённые: Hardcoded API ключи, отсутствие валидации входных данных, отсутствие row-level security
- Время на аудит: 2-3 часа для типичного vibe-coded проекта
- Последняя проверка: Апрель 2026
Почему AI код уязвим
Инструменты AI-кодирования оптимизируют для «это работает?» а не «это безопасно?» Когда вы просите Cursor «добавить аутентификацию пользователей», он генерирует код, который аутентифицирует пользователей. Он автоматически не добавляет rate limiting, input sanitization, CSRF protection или secure session management — потому что вы не просили об этом.
AI пишет ровно то, что вы описываете. Безопасность требует описания вещей, о которых вы естественно не думаете — граничные случаи, вредоносные входные данные, неавторизованные схемы доступа. Если этого нет в вашем промпте, этого нет в вашем коде.
5 самых распространённых уязвимостей
1. API ключи hardcoded в frontend коде. AI часто размещает API ключи прямо в клиентском JavaScript или React компонентах. Любой может открыть browser DevTools и их увидеть. Решение: Переместите все ключи в переменные окружения (файлы .env) и обращайтесь к ним только со стороны сервера. Время: 15 минут.
2. Отсутствие Row-Level Security на базах данных. Если вы используете Supabase (распространено в vibe coding), код, сгенерированный AI, часто дает каждому аутентифицированному пользователю доступ к данным каждого другого пользователя. Решение: Включите Row Level Security и добавьте per-user политики. Время: 30 минут.
3. Отсутствие server-side валидации входных данных. Формы принимают что угодно — скрипты, переразмеренные данные, попытки SQL injection. AI добавляет client-side валидацию (которую пользователи могут обойти), но пропускает server-side валидацию. Решение: Добавьте Zod схемы или похожую валидацию на каждый API endpoint. Время: 30 минут на endpoint.
4. Отсутствие Rate Limiting. Любой может обращаться к вашему API 1000 раз в секунду. Никакого throttling, никакой защиты от abuse. Решение: Добавьте rate limiting через Upstash Redis или похожее. Время: 20 минут.
5. Незащищённые маршруты. Страницы dashboard, админ-панели и endpoints с данными пользователя загружаются без проверки, авторизован ли пользователь. Решение: Добавьте authentication middleware на каждый защищённый маршрут. Время: 15 минут.
Нашли ценность в этом? Мы публикуем гайды безопасности для AI-built проектов еженедельно. Присоединитесь к читателям, которые создают безопасно →
Как провести аудит вашего проекта
Пройдитесь по этому чек-листу для любого проекта, созданного с AI coding tools:
Поищите в своей кодовой базе hardcoded ключи. Запустите: grep -r "sk-" . && grep -r "api_key" . && grep -r "secret" . в директории вашего проекта. Любые совпадения в frontend файлах — критические уязвимости.
Проверьте каждый API endpoint на валидацию входных данных. Откройте каждый API route файл. Если он прямо использует req.body без валидации, он уязвим.
Проверьте безопасность базы данных. Если используете Supabase, проверьте вкладку Authentication → Policies. Если там нет RLS политик, каждый пользователь может видеть данные каждого другого пользователя.
Протестируйте аутентификацию на каждой странице. Откройте браузер в режиме инкогнито (не авторизованы) и перейдите на каждую страницу вашего приложения. Если какая-либо страница dashboard или страница для конкретного пользователя загружается, тот маршрут незащищён.
Проверьте rate limiting. Попытайтесь обратиться к API endpoint 100 раз подряд, используя простой скрипт. Если все 100 запросов прошли успешно, у вас нет rate limiting.
Для полного чек-листа безопасности, смотрите наш полный гайд по защите vibe-coded приложений. Для самых распространённых ошибок и их решений, читайте 5 ошибок безопасности, которые делает каждый vibe coder.
Смена мышления
AI пишет код, который работает. Вам нужно убедиться, что код безопасен. Это два разных навыка. Каждый промпт инструменту AI-кодирования должен включать требования безопасности наряду с функциональными требованиями. «Добавьте аутентификацию пользователей с rate limiting, валидацией входных данных и защищёнными маршрутами» дает драматически более безопасный код, чем просто «добавьте аутентификацию пользователей».
Наш Prompt Optimizer может помочь вам автоматически добавить эти спецификации безопасности в любой coding prompt.
Это то, что мы делаем каждую неделю. Один глубокий разбор AI инструментов, workflows и честные мнения — без hype, без воды. Присоединитесь к нам →
Раскрытие информации: Некоторые ссылки в этой статье — партнёрские ссылки. Мы рекомендуем только инструменты, которые личное тестировали и регулярно используем. Смотрите нашу полную политику раскрытия информации.