Дослідження впливу AI-асистентів, подібних до GitHub Copilot, на безпеку коду

Група дослідників зі Стенфордського університету вивчила вплив використання інтелектуальних помічників під час написання коду на появу у коді вразливостей. Розглядалися рішення на базі платформи машинного навчання OpenAI Codex, такі як GitHub Copilot, що дозволяють формувати складні блоки коду, аж до готових функцій. Побоювання пов'язані з тим, що так як для тренування моделі машинного навчання використаний реальний код з публічних репозиторіїв GitHub, у тому числі містить уразливості, синтезований код може повторювати помилки і пропонувати код, в якому присутні вразливості, а також не враховувати необхідність виконання додаткових перевірок при обробці зовнішніх даних

До проведення дослідження було залучено 47 добровольців, які мають різний досвід у програмуванні — від студентів до професіоналів із десятирічним досвідом. Учасники були поділені на дві групи – експериментальна (33 особи) та контрольна (14 осіб). Обидві групи мали доступ до будь-яких бібліотек та інтернет-ресурсів, у тому числі могли використовувати готові приклади зі Stack Overflow. Експериментальній групі було надано можливість використання AI-асистента.

Кожному учаснику було дано 5 завдань, пов'язаних із написанням коду, в якому потенційно легко припуститися помилок, що призводять до вразливостей. Наприклад, були завдання щодо написання функцій шифрування та розшифровки, використання цифрових підписів, обробки даних, що беруть участь у формуванні файлових шляхів або SQL-запитів, маніпуляції з великими числами в коді мовою Сі, обробці введення, що відображається на веб-сторінках. Для розгляду впливу мов програмування на безпеку коду, що отримується при використанні асистентів AI, завдання охоплювали мови Python, Сі та JavaScript.

У результаті було виявлено, що учасники, які використовували інтелектуальний асистент AI на базі моделі codex-davinci-002, підготували значно менш безпечний код, ніж учасники, які не користувалися асистентом AI. Загалом лише 67% учасників групи, що використовувала AI-асистент, змогли надати коректний та безпечний код, тоді як в іншій групі цей показник становив 79%.

При цьому показники самооцінки були зворотними — учасники, які користувалися AI-асистентом, вважали, що їх код буде безпечнішим, ніж у учасників з іншої групи. Крім того, було відзначено, що учасники, які менше довіряли AI-асистенту і більше витрачали часу на розбір підказок, що видаються, і вносили в них зміни, допустили менше вразливостей у коді.

Наприклад, код, скопійований з криптографічних бібліотек, містив більш безпечні значення параметрів за замовчуванням, ніж код, запропонований AI-асистентом. Також при використанні AI-асистента фіксувався вибір менш надійних алгоритмів шифрування та відсутність перевірок справжності значень, що повертаються. У завданні, пов'язаному з маніпуляцією числами мовою Сі, в коді, написаному з використанням AI-асистента, було допущено більше помилок, що призводять до цілісного переповнення.

Додатково можна відзначити схоже дослідження групи з Нью-Йоркського університету, проведене у листопаді із залученням 58 студентів, яким було запропоновано реалізувати мовою Сі структуру для обробки списку покупок. Отримані результати показали незначний вплив AI-асистента на безпеку коду - користувачі, які застосовували AI-асистент, в середньому припустилися приблизно на 10% більше помилок, пов'язаних із безпекою.

Дослідження впливу AI-асистентів, подібних до GitHub Copilot, на безпеку коду


Джерело: opennet.ru

Додати коментар або відгук