
Проект, созданный с помощью ИИ, следует проверять так же строго, как код любого внешнего подрядчика. До запуска необходимо исследовать архитектуру, авторизацию, обработку данных, зависимости, секреты, API, инфраструктуру и бизнес-логику, а найденные проблемы подтвердить воспроизводимыми тестами.
Почему работающий проект может быть небезопасным
ИИ способен быстро собрать интерфейс, API и инфраструктурные файлы, но корректный результат запроса не подтверждает безопасность. В коде могут остаться избыточные права, скрытые административные маршруты, небезопасные значения по умолчанию, устаревшие библиотеки или проверки, которые выполняются только в браузере.
Особенно опасна ситуация, когда команда не понимает сгенерированный код и не может объяснить, какие компоненты обрабатывают данные, где находятся границы доверия и почему пользователь получает определённые полномочия.
Что зафиксировать перед аудитом
- Версию исходного кода. Сохраните репозиторий, ветку, идентификатор коммита и историю изменений.
- Сборку и окружение. Зафиксируйте контейнеры, версии среды выполнения, переменные и инфраструктурные конфигурации без раскрытия секретов.
- Состав зависимостей. Подготовьте lock-файлы и перечень прямых и транзитивных компонентов.
- Описание архитектуры. Отметьте внешние сервисы, базы данных, очереди, хранилища и точки входа.
- Сценарии пользователей. Перечислите роли, права и критичные операции с данными или денежными средствами.
- Историю использования ИИ. Если это допустимо политиками организации, сохраните задания, принятые изменения и результаты код-ревью.
1. Проверьте секреты и конфиденциальные данные
В репозитории не должны находиться действующие пароли, токены, приватные ключи, строки подключения и резервные копии баз. Проверить нужно не только текущие файлы, но и историю Git, артефакты сборки, журналы CI/CD и примеры конфигураций.
Если секрет уже попал в репозиторий или AI-контекст, одного удаления строки недостаточно. Ключ следует отозвать или заменить, оценить журналы использования и определить, какие системы были доступны с его помощью.
2. Исследуйте зависимости и цепочку поставки
Сгенерированный код может подключать лишние, устаревшие или неправильно выбранные пакеты. Для каждой зависимости важно установить источник, версию, лицензию, известные уязвимости и необходимость её присутствия в проекте.
- зафиксируйте версии через lock-файлы;
- удалите неиспользуемые библиотеки;
- проверьте установочные и post-install сценарии;
- не допускайте автоматического обновления критичных компонентов без тестов;
- сформируйте перечень программных компонентов, если это требуется процессом разработки.
3. Проверьте аутентификацию и права доступа
Самая частая логическая ошибка заключается не во входе в систему, а в доступе пользователя к чужому объекту. Сервер должен проверять полномочия для каждого запроса, даже если интерфейс скрывает кнопку или раздел.
Отдельно тестируют восстановление пароля, завершение сеансов, смену роли, административные функции, прямое обращение к API, загрузку файлов и доступ по последовательным идентификаторам.
4. Проверьте все входные данные
Недоверенными считаются параметры URL, формы, заголовки, файлы, JSON, данные вебхуков и ответы внешних сервисов. Необходимо проверить инъекции, межсайтовое выполнение сценариев, обход путей, небезопасную десериализацию, запросы к внутренним адресам и ограничения размера файлов.
Фильтрация только в интерфейсе не защищает API. Валидация, авторизация и ограничения должны работать на серверной стороне.
5. Разберите бизнес-логику вручную
Автоматический сканер может найти опасную функцию, но часто не понимает смысл процесса. Вручную проверяют изменение цены, повторное использование купона, обход согласования, отрицательное количество, повтор платежа, смену владельца объекта и выполнение операции в неправильной последовательности.
6. Проверьте инфраструктуру и производственную конфигурацию
- отключите режим отладки и подробные сообщения об ошибках;
- закройте тестовые панели, документацию API и служебные маршруты;
- ограничьте сетевой доступ к базам, очередям и панелям управления;
- установите безопасные заголовки и правила CORS;
- разделите права приложения, сборочного контура и администратора;
- настройте резервное копирование, журналирование и контроль изменений.
7. Проведите несколько видов проверки
Один инструмент не покрывает весь проект. Базовый аудит сочетает ручное код-ревью, статический анализ, проверку зависимостей и секретов, динамическое тестирование работающего приложения и анализ конфигурации. Для критичных функций добавляют тесты бизнес-логики и моделирование угроз.
| Проверка | Что помогает обнаружить |
|---|---|
| Ручное код-ревью | Ошибки логики, неверные границы доверия, лишние полномочия |
| Статический анализ | Опасные конструкции и потоки недоверенных данных |
| Анализ зависимостей | Известные уязвимости и рискованные компоненты |
| Поиск секретов | Ключи, токены и пароли в файлах и истории |
| Динамическое тестирование | Проблемы работающего API, сессий, заголовков и конфигурации |
| Тесты бизнес-логики | Обход правил, повтор операций и неверную последовательность действий |
Что должно остаться после аудита
Результат проверки должен быть воспроизводимым. В отчёте указывают исследованную версию, среду, методы, найденные недостатки, подтверждающие материалы, уровень риска и рекомендации. После исправлений проводится повторная проверка именно тех сценариев, в которых были обнаружены проблемы.
Минимальный чек-лист перед запуском
- в проекте и истории нет действующих секретов;
- все зависимости зафиксированы и проверены;
- права доступа контролируются сервером;
- критичные API протестированы отдельно от интерфейса;
- режим отладки и тестовые маршруты отключены;
- логи не содержат пароли, токены и персональные данные;
- резервное копирование и восстановление проверены;
- внешние сервисы и передаваемые им данные учтены;
- найденные проблемы исправлены и протестированы повторно;
- за эксплуатацию и обновления назначен ответственный.
Рекомендация проверять сгенерированный код на достоверность и безопасность также содержится в профиле рисков генеративного ИИ NIST. Для исследования проекта могут потребоваться аудит информационной безопасности, экспертиза программного обеспечения и исследование исходного кода и истории Git.
Проверим код, зависимости, конфигурацию и критичные сценарии до запуска или передачи заказчику.