Ризики коду, згенерованого ШІ: контрольний список перед запуском

Модель генерує код, який виглядає правдоподібно й часто працює. Саме тому його вади легко проґавити.
Безпека
Згенерований код може пропускати перевірку даних, формувати запити до бази так, що вони вразливі до ін’єкцій, зберігати паролі без належного хешування або надавати надто широкі права. Модель навчалася на величезній кількості коду, зокрема й поганої якості, і не завжди відрізняє приклад із посібника від продакшн-рішення.
Секрети в репозиторії
Ключі API та паролі, вставлені «на хвилинку» у файл, можуть потрапити в історію репозиторію. Зберігайте їх у змінних середовища, додайте конфігураційні файли до ігнорованих і перевіряйте історію, перш ніж публікувати проєкт.
Залежності, яких не існує
Моделі можуть вигадувати назви пакетів. Якщо хтось зареєструє таку назву й помістить у пакет шкідливий код, встановлення «запропонованого» пакета стане вектором атаки. Перш ніж додавати невідому бібліотеку, перевірте, хто її підтримує, відколи вона існує й скільки людей нею користується.
Приватність даних
Вставляючи в інструмент фрагменти коду, журнали чи дані клієнтів, ви надсилаєте їх зовнішньому постачальнику послуг. Перевірте його правила обробки даних і не вставляйте нічого, що вам не можна передавати назовні.
Ліцензії
Згенерований фрагмент може нагадувати код, на який поширюється конкретна ліцензія. Правові питання навколо коду, створеного ШІ, ще з’ясовуються й різняться між юрисдикціями, тож у комерційних проєктах варто проконсультуватися з юристом.
Технічний борг
Найдорожчий побічний наслідок — код, якого ніхто в команді не розуміє. Через півроку, коли його потрібно буде змінити, виявиться, що невідомо, чому він робить те, що робить.
Контрольний список перед запуском
- Чи розумію я, що робить кожна частина коду, який запускаю?
- Чи перевіряються всі дані від користувача?
- Чи немає в репозиторії ключів, паролів чи персональних даних?
- Чи кожна додана залежність існує й підтримується?
- Чи є тести, що перевіряють найважливіші сценарії?
- Чи переглянув зміни хтось інший?


