Вайб-кодинг позволяет командам создавать приложения с высокой скоростью, но безопасность может не успевать за этим. Этот чеклист помогает командам защитить программы, созданные искусственным интеллектом.
О распространенных проблемах приложений, написанных с помощью ИИ, можно прочитать в этой статье.
Чеклист ниже сосредоточен на практических проверках, которые можно применять независимо от языка программирования или фреймворка.
Аутентификация и контроль доступа
Сбои аутентификации остаются одной из самых распространенных и трудных проблем в приложениях, созданных ИИ.
Основные вещи, которые следует сделать:
- Обеспечить аутентификацию перед выполнением любой конфиденциальной логики приложения.
- Проверить поведение аутентификации при выполнении, а не только в сгенерированном коде.
- Убедиться, что неаутентифицированные запросы не могут напрямую достигать конечных точек сервера.
- Проверить наличие открытых или забытых конечных точек (endpoints), обходящих потоки входа.
Авторизация и доступ к данным
Логика авторизации особенно уязвима к галлюцинациям.
Чтобы предотвратить несанкционированный доступ и раскрытие данных, необходимо:
- Проверить контроль доступа на основе ролей для каждой конечной точки.
- Протестировать приложение на наличие нарушенной авторизации на уровне объектов (BOLA).
- Убедиться, что пользователи не могут получить доступ к запрещенным данным.
- Проверить авторизацию в API и внутренних службах.
Раскрытие конечных точек и API
Следует выполнить следующие действия:
- Провести инвентаризацию всех активных конечных точек и API.
- Определить недокументированные, устаревшие или сгенерированные промптами конечные точки.
- Тестировать API независимо от логики UI.
- Убедиться, что удаленные функции пользовательского интерфейса не оставляют активных конечных точек.
Риски инъекций и выполнения кода
Обработка входящих пользовательских данных является точкой риска в любой программе.
Чтобы минимизировать риски, нужно:
- Тестировать приложение на наличие SQL-инъекции и неправильное использование ORM (object-relational mapping, объектно-реляционная проекция).
- Проверить защиту от инъекций команд ОС.
- Определить пути, которые могут привести к удаленному выполнению кода.
- Проверить качество проверки входных данных.
Секреты и конфиденциальные данные
Повторное использование и утечка секретов является повторяющейся и системной проблемой в коде, сгенерированном ИИ. Чтобы избежать этого, нужно:
- Проверить код на наличие распространенных секретов, определенных исследованием Invicti.
- Сканировать на наличие раскрытых ключей API, токенов и учетных данных.
- Удостовериться, что секреты никогда не возвращаются в ответах приложений.
- Убедиться, что ключи на стороне сервера не могут добраться до фронтенда.
- Проверить сторонние интеграции на наличие непреднамеренной утечки данных.
Сторонние зависимости
Инструменты ИИ часто используют библиотеки, не объясняя, почему они были выбраны. Чтобы минимизировать риск от этих внешних зависимостей, необходимо:
- Определить все библиотеки и фреймворки, добавленные с помощью ИИ.
- Проверить зависимости на наличие известных уязвимостей (с помощью инструментов SCA, как от Mend.io).
Безопасность транспортировки и конфигурации
Чтобы минимизировать операционные риски, следует:
- Применить HTTPS для всех компонентов программы.
- Проверить заголовки безопасности.
- Убедиться, что никакие настройки дебага или разработки не раскрываются.
- Удостовериться, что конфигурации, специфичные для среды, применяются правильно.
Проверка кода и поведения во время выполнения
Неожиданные входящие данные и ошибки часто выявляют самые серьезные проблемы, особенно для приложения, сгенерированного ИИ. Поэтому кроме сканирования исходного кода при разработке, следует также не забывать о тестировании во время выполнения.
Что рекомендуется сделать: регулярно использовать SAST, например от Mend.io, и DAST, например Invicti (на основе Acunetix и Netsparker).
Если вы хотите бесплатно протестировать данные решения, оставьте ваши контактные данные ниже и мы к вам обратимся:







