Український розробник Павло Снєда зібрав топ-п’ять помилок у безпеці, які, за його спостереженнями, регулярно трапляються в коді новачків, написаному за допомогою ШІ.

Про це розробник розповів на LinkedIn, спираючись на свій досвід перевірки вайбкод-проєктів, написаних на NestJS.
«Всі зараз вайбкодять з AI, я не те щоб хейтер AI, но коли я роблю ревʼю такого кода, безпека майже відсутня», — написав розробник. Ось які помилки він бачить найчастіше.
1. Незахищена валідація
Програма має перевіряти, які саме дані їй дозволено отримувати від користувача. Якщо перевірка введених даних налаштована неправильно, сервер може прийняти від користувача не лише дозволену інформацію, а й зайві дані. Наприклад, система може мати стандартні властивості: користувача: ім’я, пароль, e-mail, а також значення isAdmin. Тож коли валідація є незахищеною, користувач може змінити це значення на isAdmin=true, а система може це пропустити та підвищити його права до адміністратора.
2. Система перевіряє, хто користувач, але не що йому дозволено
Система перевіряє, що людина увійшла у свій акаунт, але може не перевірити, чи має вона право бачити конкретні дані. Наприклад, якщо номер замовлення можна змінити в адресному рядку або запиті, користувач може замінити його на номер чужого замовлення. Якщо сервер не перевіряє, кому воно належить, він може показати чужі дані.
3. Частину сайту захистили, а про іншу забули.
Розробник може закрити доступ до більшості сторінок або функцій, але забути про одну з них. Снєда радить закривати все за замовчуванням і окремо відкривати лише те, що справді має бути публічним.
4. Сервіс може випадково показати користувачу паролі, токени чи інші зайві дані.
Наприклад, застосунку треба показати ім’я, аватар і дату реєстрації користувача, але разом із ними сервер надсилає весь запис із бази даних. У ньому можуть бути службові або чутливі дані — хеш пароля, токени чи інша інформація, яку користувач не повинен бачити. Тому назовні варто передавати лише ті поля, які справді потрібні.
5. Недотримання базових правил кібергігієни
Снєда також звертає увагу на базові налаштування безпеки перед запуском продукту. Наприклад, якщо кількість спроб входу не обмежена, пароль можна перебирати без обмежень, що полегшує злам акаунтів. А надто докладні повідомлення про помилки можуть показати сторонній людині назви таблиць та інші внутрішні деталі системи.
У коментарях розробники запропонували й кілька способів підстрахувати ШІ-код. Наприклад, Олена Кузнєцова радить проганяти результат через LLM із запитом на security review. Олексій Вихристюк пропонує використовувати для вайбкодингу low-code платформи, навівши як приклад Oracle APEX та APEXlang. А Андрій Зільник запропонував додавати до правил для ШІ-помічника OWASP Top 10 — перелік найкритичніших ризиків для вебзастосунків.
Ще один із коментаторів, Назарій Муська, звернув увагу на файли .env, у яких розробники часто зберігають паролі, токени та API-ключі. Якщо такий файл випадково завантажити у відкритий репозиторій, ці дані зможуть побачити сторонні.
Раніше dev.ua писав про дослідження, де перевірялася безпека тисяч додатків, створених за допомогою вайбкодингу, де виявилося, що близько 40% досліджених застосунків розкривали конфіденційні дані. Зокрема, медичну та фінансову інформацію, а також контакти клієнтів та історії їхніх розмов із чатботами.

«Швидкість, яку ви можете отримати порівняно з самостійним програмуванням, просто божевільна». 3 поради з вайб-кодингу від провідних інженерів-програмістів

«Ці спеціалісти — як супергерої-двірники у світі програмування». В IT з’являється нова професія — vibe core cleaner: хто це і чи багато їх є

Читайте головні IT-новини країни в нашому Telegram
