Аудит безопасности проекта после разработки с помощью ИИ

Аудит безопасности программного проекта после разработки с помощью ИИ
Проект проверяют несколькими методами: анализируют код, зависимости, секреты, конфигурацию и поведение работающего приложения.

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

Коротко: не публикуйте проект сразу после того, как он начал работать. Зафиксируйте версию, создайте тестовую среду, удалите секреты, проверьте зависимости, права доступа и входные данные, затем проведите ручной анализ критичных сценариев и динамическое тестирование.

Почему работающий проект может быть небезопасным

ИИ способен быстро собрать интерфейс, API и инфраструктурные файлы, но корректный результат запроса не подтверждает безопасность. В коде могут остаться избыточные права, скрытые административные маршруты, небезопасные значения по умолчанию, устаревшие библиотеки или проверки, которые выполняются только в браузере.

Особенно опасна ситуация, когда команда не понимает сгенерированный код и не может объяснить, какие компоненты обрабатывают данные, где находятся границы доверия и почему пользователь получает определённые полномочия.

Что зафиксировать перед аудитом

  1. Версию исходного кода. Сохраните репозиторий, ветку, идентификатор коммита и историю изменений.
  2. Сборку и окружение. Зафиксируйте контейнеры, версии среды выполнения, переменные и инфраструктурные конфигурации без раскрытия секретов.
  3. Состав зависимостей. Подготовьте lock-файлы и перечень прямых и транзитивных компонентов.
  4. Описание архитектуры. Отметьте внешние сервисы, базы данных, очереди, хранилища и точки входа.
  5. Сценарии пользователей. Перечислите роли, права и критичные операции с данными или денежными средствами.
  6. Историю использования ИИ. Если это допустимо политиками организации, сохраните задания, принятые изменения и результаты код-ревью.

1. Проверьте секреты и конфиденциальные данные

В репозитории не должны находиться действующие пароли, токены, приватные ключи, строки подключения и резервные копии баз. Проверить нужно не только текущие файлы, но и историю Git, артефакты сборки, журналы CI/CD и примеры конфигураций.

Если секрет уже попал в репозиторий или AI-контекст, одного удаления строки недостаточно. Ключ следует отозвать или заменить, оценить журналы использования и определить, какие системы были доступны с его помощью.

2. Исследуйте зависимости и цепочку поставки

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

  • зафиксируйте версии через lock-файлы;
  • удалите неиспользуемые библиотеки;
  • проверьте установочные и post-install сценарии;
  • не допускайте автоматического обновления критичных компонентов без тестов;
  • сформируйте перечень программных компонентов, если это требуется процессом разработки.

3. Проверьте аутентификацию и права доступа

Самая частая логическая ошибка заключается не во входе в систему, а в доступе пользователя к чужому объекту. Сервер должен проверять полномочия для каждого запроса, даже если интерфейс скрывает кнопку или раздел.

Отдельно тестируют восстановление пароля, завершение сеансов, смену роли, административные функции, прямое обращение к API, загрузку файлов и доступ по последовательным идентификаторам.

4. Проверьте все входные данные

Недоверенными считаются параметры URL, формы, заголовки, файлы, JSON, данные вебхуков и ответы внешних сервисов. Необходимо проверить инъекции, межсайтовое выполнение сценариев, обход путей, небезопасную десериализацию, запросы к внутренним адресам и ограничения размера файлов.

Фильтрация только в интерфейсе не защищает API. Валидация, авторизация и ограничения должны работать на серверной стороне.

5. Разберите бизнес-логику вручную

Автоматический сканер может найти опасную функцию, но часто не понимает смысл процесса. Вручную проверяют изменение цены, повторное использование купона, обход согласования, отрицательное количество, повтор платежа, смену владельца объекта и выполнение операции в неправильной последовательности.

6. Проверьте инфраструктуру и производственную конфигурацию

  • отключите режим отладки и подробные сообщения об ошибках;
  • закройте тестовые панели, документацию API и служебные маршруты;
  • ограничьте сетевой доступ к базам, очередям и панелям управления;
  • установите безопасные заголовки и правила CORS;
  • разделите права приложения, сборочного контура и администратора;
  • настройте резервное копирование, журналирование и контроль изменений.

7. Проведите несколько видов проверки

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

ПроверкаЧто помогает обнаружить
Ручное код-ревьюОшибки логики, неверные границы доверия, лишние полномочия
Статический анализОпасные конструкции и потоки недоверенных данных
Анализ зависимостейИзвестные уязвимости и рискованные компоненты
Поиск секретовКлючи, токены и пароли в файлах и истории
Динамическое тестированиеПроблемы работающего API, сессий, заголовков и конфигурации
Тесты бизнес-логикиОбход правил, повтор операций и неверную последовательность действий

Что должно остаться после аудита

Результат проверки должен быть воспроизводимым. В отчёте указывают исследованную версию, среду, методы, найденные недостатки, подтверждающие материалы, уровень риска и рекомендации. После исправлений проводится повторная проверка именно тех сценариев, в которых были обнаружены проблемы.

Важно: отметка автоматического сканера не доказывает наличие уязвимости, а отсутствие предупреждений не подтверждает безопасность проекта. Каждый вывод нужно проверять с учётом архитектуры и фактического поведения системы.

Минимальный чек-лист перед запуском

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

Рекомендация проверять сгенерированный код на достоверность и безопасность также содержится в профиле рисков генеративного ИИ NIST. Для исследования проекта могут потребоваться аудит информационной безопасности, экспертиза программного обеспечения и исследование исходного кода и истории Git.

Проект разработан с применением ИИ?
Проверим код, зависимости, конфигурацию и критичные сценарии до запуска или передачи заказчику.
Заказать проверку
Вернуться к списку