Александр Руин

Консультант по проектированию AI‑систем

Александр Руин — консультант по проектированию систем. Помогаю спроектировать архитектуру, оценить риски и выстроить прозрачный процесс — от выбора технологий до сопровождения. Рутину берут на себя AI‑исполнители. Направления: автоматизация, интеграции, AI‑продукты.

90% кода от ИИ содержит уязвимости: как проверить код после вайбкодинга

В 2025 году совместное исследование CMU, Columbia University и Johns Hopkins University показало: 90% кода, сгенерированного AI-помощниками, содержит потенциальные уязвимости безопасности. Это не теоретические предупреждения — это измеримые проблемы в реальном коде.

Это не значит, что AI-код нельзя использовать. Это значит, что его нельзя использовать без проверки.

Что именно нашли исследователи

Типы уязвимостей

SQL-инъекции (CWE-89) AI генерирует код, который подставляет пользовательский ввод напрямую в SQL-запросы:

# AI сгенерировал:
query = f"SELECT * FROM users WHERE name = '{user_input}'"

# Должно быть:
cursor.execute("SELECT * FROM users WHERE name = %s", (user_input,))

XSS — Cross-Site Scripting (CWE-79) AI вставляет пользовательский контент в HTML без экранирования:

// AI сгенерировал:
element.innerHTML = userComment;

// Должно быть:
element.textContent = userComment;

Захардкоженные секреты (CWE-798) AI копирует паттерны из обучающих данных, включая API-ключи:

// AI сгенерировал:
const API_KEY = "sk-proj-abc123...";

// Должно быть:
const API_KEY = process.env.API_KEY;

Отсутствие проверки авторизации (CWE-862) AI создаёт endpoint по аналогии с другими, но забывает проверку прав:

// AI сгенерировал:
app.delete('/api/users/:id', async (req, res) => {
  await db.users.delete(req.params.id);
  res.json({ success: true });
});

// Должно быть:
app.delete('/api/users/:id', authMiddleware, async (req, res) => {
  if (req.user.role !== 'admin') return res.status(403).json({ error: 'Forbidden' });
  await db.users.delete(req.params.id);
  res.json({ success: true });
});

Path Traversal (CWE-22) AI обрабатывает файловые пути без валидации:

# AI сгенерировал:
filepath = os.path.join(UPLOAD_DIR, filename)

# filename может быть "../../etc/passwd"
# Должно быть:
filepath = os.path.join(UPLOAD_DIR, os.path.basename(filename))

Почему AI генерирует уязвимый код

  1. Обучающие данные. AI учился на GitHub — а там огромное количество уязвимого кода. Самый частый паттерн != самый безопасный.

  2. Оптимизация на "работает". AI оптимизирован на генерацию кода, который выполняется. Безопасность — отдельное требование, которое нужно запрашивать явно.

  3. Нет контекста угроз. AI не знает вашу модель угроз. Он не знает, что этот endpoint доступен из интернета, а тот — только из внутренней сети.

  4. Copy-paste паттерны. AI видел тысячи примеров innerHTML = data и считает это нормальным паттерном.

Чеклист проверки AI-кода

Критические проверки (делать всегда)

  • [ ] Пользовательский ввод — всё ли экранируется/валидируется перед использованием?
  • [ ] SQL-запросы — используются ли параметризованные запросы?
  • [ ] Секреты — нет ли API-ключей, паролей, токенов в коде?
  • [ ] Авторизация — каждый endpoint проверяет права?
  • [ ] Файловые операции — пути валидируются?
  • [ ] HTTPS — все внешние запросы через HTTPS?

Важные проверки (делать перед релизом)

  • [ ] Rate limiting — API защищён от brute-force?
  • [ ] CORS — настроен правильно (не *)?
  • [ ] Логирование — не пишутся ли секреты в логи?
  • [ ] Зависимости — нет ли deprecated или уязвимых пакетов?
  • [ ] Обработка ошибок — stack trace не утекает пользователю?
  • [ ] Session management — токены хранятся безопасно?

Проверки бизнес-логики (делать на каждый PR)

  • [ ] Соответствие ТЗ — код делает то, что просили?
  • [ ] Крайние случаи — пустой ввод, null, отрицательные числа?
  • [ ] Параллельные запросы — нет ли race conditions?
  • [ ] Откат — что происходит при ошибке на середине операции?

Инструменты проверки

Автоматические (ловят 30-50% проблем)

Инструмент Что делает Цена
ESLint Security Plugin Базовые паттерны уязвимостей в JS/TS Бесплатно
Bandit SAST для Python Бесплатно
npm audit / pip audit Уязвимости в зависимостях Бесплатно
DeepSource AI SAST + автофикс $12/юзер/мес
SonarQube Комплексный статический анализ Бесплатно (self-hosted)

AI-ревью (ловят 50-70% проблем)

Инструмент Что делает Цена
CodeRabbit AI-комментарии на PR $12/юзер/мес
Copilot Review Встроенное AI-ревью $19/мес (с Copilot)

Человеческий ревью (ловит 85-95% проблем)

Инструмент Что делает Цена
Vibers Ревью по ТЗ + PR с исправлениями $1/час (промо)
PullRequest.com Экспертный ревью $50+/час
Наём сеньора Ревью в команде $50-150/час

Почему автоматических инструментов недостаточно

Автоматические инструменты ищут известные паттерны. Они найдут innerHTML = userInput потому что это в их базе правил.

Они не найдут: - Бизнес-логику, которая позволяет обнулить цену через скидку - API endpoint, доступный без авторизации, потому что AI скопировал его из внутреннего сервиса - Платёжный flow, который не проверяет 3D Secure - Конфигурацию CORS, которая слишком широкая для продакшна - Race condition в процессе оплаты, позволяющий двойное списание

Эти проблемы требуют понимания контекста — чего нет ни у одного автоматического инструмента.

Vibers: проверка AI-кода по ТЗ

Vibers — сервис код-ревью для вайбкодинг-команд:

  1. Добавьте marsiandeployer как collaborator в ваш GitHub-репозиторий
  2. Пришлите ТЗ — Google Doc, Notion, PDF
  3. Мы проверяем каждый коммит — безопасность + соответствие ТЗ + галлюцинации AI
  4. Отправляем PR с исправлениями — не отчёт, а рабочий код

Что мы проверяем

Категория Примеры
Безопасность OWASP Top 10, секреты в коде, авторизация
Галлюцинации Несуществующие API, deprecated методы, выдуманные пакеты
Соответствие ТЗ Фича делает то, что просили, ничего не пропущено
Бизнес-логика Крайние случаи, race conditions, обработка ошибок
Визуал/UI Сломанные лейауты, кривой мобайл, неправильные цвета

Цены

  • Промо: $1/час — полное ревью + PR с исправлениями
  • Стандарт: $15/час — полное ревью + аудит безопасности + приоритет

Без контрактов. Без подписок. Оплата по факту.

Как начать

Добавьте marsiandeployer в ваш GitHub → отправьте ТЗ в Telegram @onoutnoxon → первое ревью за 24 часа.

Или скажите AI-агенту: Установи скилл из https://vibers.onout.org/SKILL.md

Начать бесплатный пилот | Лендинг Vibers

О сервисе "Vibers — Код-ревью для вайбкодинг-проектов"

Сервис код-ревью с участием человека для команд, использующих дешёвых AI-разработчиков. Проверяем коммиты по вашему ТЗ, исправляем проблемы и отправляем pull request'ы.

Ключевые преимущества:

  • Оставьте дешёвых вайбкодеров ($1-5/час), но добавьте слой качества
  • Получайте PR с реальными исправлениями, а не просто баг-репорты
  • Отслеживание соответствия ТЗ — код соответствует вашим требованиям
  • Ревью безопасности ловит секреты, инъекции, проблемы OWASP
  • Вайбкодеры учатся на наших исправлениях — качество растёт со временем
  • В 10 раз дешевле, чем нанимать сеньора для код-ревью

Для кого подходит:

Основатели стартапов, использующие Upwork/Fiverr разработчиков Нетехнические CEO с вайбкодинг-проектами AI-first команды, использующие Cursor, Copilot, Claude Code Агентства, аутсорсящие дешёвым разработчикам Продакт-менеджеры, которые не читают код, но имеют ТЗ

Сценарии использования:

💡 Ревью AI-сгенерированных PR перед мержем
💡 Проверка, что вывод вайбкодера соответствует Google Doc ТЗ
💡 Аудит безопасности кода от разработчиков за $1-5/час
💡 Поиск галлюцинаций AI в вайбкодинг-фичах
💡 Контроль качества между дешёвой разработкой и продакшном

📰 Промо-статьи наших решений

Изучите детальные обзоры наших технологических решений для различных отраслей:

🚀 Работаю до результата

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