Разработка

Ломайте код и план до релиза четырьмя проходами

Adversarial-ревью кода или плана: попытка 'сломать' решение, найти уязвимости, race conditions, edge-кейсы. Используйте как дополнение к обычному ревью для критичных компонентов.

Как агент работает

Первый проход смотрит на решение глазами злонамеренного пользователя: SQL-инъекции в каждом поле ввода, XSS в каждом выводе, IDOR через подмену идентификатора в запросе, обход авторизации и доступ к чужим ресурсам, подделка межсайтовых запросов, загрузка исполняемого файла под видом картинки и тысяча запросов в секунду в обход rate limiting.

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

Третий проход подаёт данные на краю допустимого: пустая строка, null и undefined, максимально длинная строка вроде десяти мегабайт текста в поле имени, отрицательные числа там, где ожидаются положительные, Unicode с эмодзи, RTL-текстом и zero-width символами, даты 29 февраля, 2099 год и epoch 0, коллекции из нуля, одного и миллиона элементов.

Четвёртый проход выключает инфраструктуру по одному узлу: база данных недоступна, Redis упал, внешний API отвечает пятисотой, сеть теряется в середине запроса, кончился диск, кончилась память, DNS не резолвится, истёк сертификат. Проверяется не наличие обработчика, а поведение системы в этот момент — что видит пользователь и в каком состоянии остаются данные.

Это дополнение к обычному ревью, а не замена ему: обычное проверяет, что код делает задуманное, а adversarial-проход пытается его сломать, поэтому его имеет смысл тратить на критичные компоненты — оплату, авторизацию, интеграции. На вход годится и код, и pull request, и ещё не реализованный план решения, а разбор плана обходится дешевле всего.

Примеры задач

«Сломать» код перед релизом

Агент атакует решение как злонамеренный пользователь: инъекции в поля ввода, XSS в выводе, подмена ID в запросах, обход авторизации, загрузка исполняемых файлов.

Гонки и параллельность

Двойной клик на оплату, две вкладки с одной формой, read-modify-write без блокировки — сценарии, в которых код ломается только под нагрузкой.

Граничные условия и сбои инфраструктуры

Пустые строки и null, 10 МБ текста в поле имени, 29 февраля, эмодзи и RTL — плюс поведение при падении БД, Redis и внешних API.

Вопросы и ответы

Чем это отличается от обычного код-ревью?

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

Что подать на вход?

Код, pull request или план/архитектуру решения. Ревью плана до написания кода дешевле всего — уязвимости находятся до того, как их реализовали.

В каком виде приходит результат?

Список найденных проблем, каждая — со сценарием эксплуатации, оценкой серьёзности и предложением фикса. Не «код в целом ок», а конкретные точки отказа.

Системный промпт

Четыре прохода

Проход 1: Злонамеренный пользователь

Что если пользователь СПЕЦИАЛЬНО пытается сломать систему?

  • SQL-инъекции в каждом поле ввода
  • XSS в каждом выводе
  • IDOR: подмена ID в запросах
  • Rate limiting: 1000 запросов в секунду
  • Файлы: загрузка .exe вместо .jpg
  • Авторизация: доступ к чужим ресурсам
  • CSRF: подделка межсайтовых запросов

Проход 2: Race conditions

Что если два процесса делают одно и то же одновременно?

  • Двойной клик на кнопку оплаты
  • Два tab'а с одной формой
  • Параллельные запросы к одному ресурсу
  • Read-modify-write без блокировки
  • Кеш обновляется во время чтения

Проход 3: Граничные условия

Что если данные на краю допустимого?

  • Пустая строка, null, undefined
  • Максимально длинная строка (10MB текста в поле имени)
  • Отрицательные числа где ожидаются положительные
  • Unicode: эмодзи, RTL-текст, zero-width символы
  • Дата: 29 февраля, 2099 год, epoch 0
  • Список: 0 элементов, 1 элемент, 1 000 000 элементов

Проход 4: Инфраструктурные сбои

Что если инфраструктура подводит?

  • БД недоступна
  • Redis упал
  • Внешний API возвращает 500
  • Сеть потеряна в середине запроса
  • Диск заполнен
  • Память закончилась
  • DNS не резолвится
  • Сертификат истёк

Похожие навыки

Ревью Pull RequestЭкспертное ревью PR: выявляет баги, уязвимости безопасности, проблемы производительности и дизайна. Структурированный отчёт с уровнями серьёзности, предложениями по коду, чек-листом безопасности и оценкой тестирования. Python, JS/TS, Go, Rust, SQL и другие языки.Аудит качества кодаГлубокий аудит кодовой базы: механический анализ + экспертная оценка архитектуры, элегантности, типобезопасности и тестового покрытия. Выдаёт числовой балл и приоритизированный план улучшений.QA-отчёт (без исправлений)QA-тестирование в режиме только отчёта -- находит баги, документирует, но ничего не исправляет. Используйте когда нужен отчёт о состоянии качества без вмешательства в код.QA-тестированиеПолный цикл QA: тестирование как пользователь, поиск багов, документирование с доказательствами, оценка здоровья. Используйте для проверки качества приложения, страницы или фичи.Автоматический пайплайн ревьюАвтоматический пайплайн: CEO-ревью, затем дизайн-ревью, затем инженерное ревью -- последовательно. Используйте когда нужно провести комплексную проверку плана или проекта со всех сторон.Бенчмарк производительностиАнализ производительности: время загрузки, Core Web Vitals, размер бандла, время ответа API. Используйте для поиска и устранения проблем с производительностью.
Категория
Разработка
Платформа
Сам Решу

Попробуйте этот навык

Зарегистрируйтесь и используйте навык «Adversarial-ревью» бесплатно.