Вайб-кодинг: чеклист по безопасности

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

О распространенных проблемах приложений, написанных с помощью ИИ, можно прочитать в этой статье.

Чеклист ниже сосредоточен на практических проверках, которые можно применять независимо от языка программирования или фреймворка.

Аутентификация и контроль доступа

Сбои аутентификации остаются одной из самых распространенных и трудных проблем в приложениях, созданных ИИ.

Основные вещи, которые следует сделать:

  • Обеспечить аутентификацию перед выполнением любой конфиденциальной логики приложения.
  • Проверить поведение аутентификации при выполнении, а не только в сгенерированном коде.
  • Убедиться, что неаутентифицированные запросы не могут напрямую достигать конечных точек сервера.
  • Проверить наличие открытых или забытых конечных точек (endpoints), обходящих потоки входа.

Авторизация и доступ к данным

Логика авторизации особенно уязвима к галлюцинациям.

Чтобы предотвратить несанкционированный доступ и раскрытие данных, необходимо:

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

Раскрытие конечных точек и API

Следует выполнить следующие действия:

  • Провести инвентаризацию всех активных конечных точек и API.
  • Определить недокументированные, устаревшие или сгенерированные промптами конечные точки.
  • Тестировать API независимо от логики UI.
  • Убедиться, что удаленные функции пользовательского интерфейса не оставляют активных конечных точек.

Риски инъекций и выполнения кода

Обработка входящих пользовательских данных является точкой риска в любой программе.

Чтобы минимизировать риски, нужно:

  • Тестировать приложение на наличие SQL-инъекции и неправильное использование ORM (object-relational mapping, объектно-реляционная проекция).
  • Проверить защиту от инъекций команд ОС.
  • Определить пути, которые могут привести к удаленному выполнению кода.
  • Проверить качество проверки входных данных.

Секреты и конфиденциальные данные

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

Сторонние зависимости

Инструменты ИИ часто используют библиотеки, не объясняя, почему они были выбраны. Чтобы минимизировать риск от этих внешних зависимостей, необходимо:

  • Определить все библиотеки и фреймворки, добавленные с помощью ИИ.
  • Проверить зависимости на наличие известных уязвимостей (с помощью инструментов SCA, как от Mend.io).

Безопасность транспортировки и конфигурации

Чтобы минимизировать операционные риски, следует:

  • Применить HTTPS для всех компонентов программы.
  • Проверить заголовки безопасности.
  • Убедиться, что никакие настройки дебага или разработки не раскрываются.
  • Удостовериться, что конфигурации, специфичные для среды, применяются правильно.

Проверка кода и поведения во время выполнения

Неожиданные входящие данные и ошибки часто выявляют самые серьезные проблемы, особенно для приложения, сгенерированного ИИ. Поэтому кроме сканирования исходного кода при разработке, следует также не забывать о тестировании во время выполнения.

Что рекомендуется сделать: регулярно использовать SAST, например от Mend.io, и DAST, например Invicti (на основе Acunetix и Netsparker).

Если вы хотите бесплатно протестировать данные решения, оставьте ваши контактные данные ниже и мы к вам обратимся:

Запрос на бесплатное тестирование Invicti / Mend.io

Подписаться на новости