Вайбкодинг дозволяє командам створювати додатки з високою швидкістю, але безпека може не встигати за цим. Цей чекліст допомагає командам захистити застосунки, створені штучним інтелектом.
Про поширені проблеми додатків, написаних за допомогою ШІ, можна почитати у цій статті.
Наведений нижче чекліст зосереджений на практичних перевірках, які можна застосовувати незалежно від мови програмування чи фреймворку.
Автентифікація та контроль доступу
Збої автентифікації залишаються однією з найпоширеніших та найважчих для розв’язання проблем у застосунках, створених ШІ.
Основні речі, які слід зробити:
- Забезпечити автентифікацію перед виконанням будь-якої конфіденційної логіки застосунку.
- Перевірити поведінку автентифікації під час виконання, а не лише у згенерованому коді.
- Переконатися, що неавтентифіковані запити не можуть безпосередньо досягати кінцевих точок сервера.
- Перевірити наявність відкритих або забутих кінцевих точок (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).
Якщо ви хочете безкоштовно протестувати ці рішення, то залиште ваші контактні дані нижче і ми до вас звернемося:
Запит на безкоштовне тестування Invicti / Mend.io
Залиште свої контактні дані, і ми зв’яжемося з вами







