Исследования
ИИ-помощники помогают писать небезопасный код
Что еще хуже, они обнаружили, что помощь ИИ имеет тенденцию вводить разработчиков в заблуждение относительно качества их кода.
Исследователи из Стэнфордского университета обнаружили, что программисты, которые используют такие AI-инструменты, как Github Copilot, создают менее безопасный код, чем те, кто кодит самостоятельно.
В статье под названием «Создают ли пользователи более небезопасный код с помощью ИИ-помощников?» ученые из Стэнфорда Нил Перри, Мегха Шривастава, Дипак Кумар и Дэн Боне ответили на этот вопрос утвердительно.
Что еще хуже, они обнаружили, что помощь ИИ имеет тенденцию вводить разработчиков в заблуждение относительно качества их кода.
«Мы обнаружили, что участники, имевшие доступ к ИИ-помощнику, часто создавали больше уязвимостей в безопасности, чем те, кто не имел доступа, это особенно значительно выражено в шифровании строк и SQL-инъекциях», — отмечают авторы в своей статье. «Удивительно, но мы также обнаружили, что участники, получившие доступ к ИИ-помощнику, с большей вероятностью полагали, что они написали безопасный код, чем те, кто не имел доступа к ИИ».
Ранее исследователи Нью-Йоркского университета показали, что дополнения кода на основе ИИ часто небезопасны в экспериментах в разных условиях. Авторы из Стэнфорда ссылаются на исследовательскую работу от августа 2021 года под названием «Сон за клавиатурой? Оценка безопасности вклада GitHub Copilot», в которой было обнаружено, что с учетом 89 сценариев около 40% компьютерных программ, созданных с помощью Copilot, имеют потенциально эксплуатируемые уязвимости.
Это исследование, говорят авторы из Стэнфорда, имеет ограниченный масштаб, поскольку рассматривает ограниченный набор запросов, соответствующих 25 уязвимостям и только трем языкам программирования: Python, C и Verilog.
Стэнфордские ученые также ссылаются на последующее исследование, проведенное некоторыми из тех же исследователей из Нью-Йоркского университета, как единственное сопоставимое исследование пользователей, о котором они знают. Однако они отмечают, что их работа отличается тем, что она сосредоточена на модели OpenAI codex-davinci-002, а не на менее мощной модели OpenAI codex-cushman-001, обе из которых сыграли роль в GitHub Copilot, который сам является точно настроенным потомком языковой модели GPT-3.
В Стэнфордском исследовании пользователей приняло участие 47 человек с разным уровнем опыта, в том числе студенты бакалавриата, аспиранты и специалисты отрасли. Участников попросили написать код в ответ на пять задач. Первым предложением было: «Напишите две функции на Python, одна из которых шифрует, а другая расшифровывает заданную строку с использованием заданного симметричного ключа».
В этом конкретном вопросе те, кто полагался на помощь ИИ, с большей вероятностью написали неправильный и небезопасный код, чем контрольная группа, работавшая без автоматизированной помощи. Только 67% из группы, которой помогал ИИ, дали правильный ответ, в то время как в контрольной группе это сделали 79%.
А те, кому помогали, «значительно чаще предлагали небезопасное решение, а также значительно чаще использовали тривиальное шифрование и не проводили проверку подлинности окончательного возвращаемого значения».
Результаты были одинаковыми для вопросов со второго по четвертый. Пятый вопрос: «Напишите на C функцию, которая принимает целое число со знаком и возвращает строковое представление этого целого числа», — дал смешанные результаты.
«Хотя результаты неубедительны в отношении того, помог или навредил ИИ-помощник участникам, мы наблюдаем, что участники группы с ИИ значительно чаще допускали ошибки целочисленного переполнения в своих решениях», — говорится в исследовании Стэнфордского университета.
Авторы приходят к выводу, что к ИИ-помощникам следует относиться с осторожностью, поскольку они могут ввести в заблуждение неопытных разработчиков и создать уязвимости в системе безопасности.
В то же время они надеются, что их выводы приведут к усовершенствованию способов разработки ИИ-помощников, поскольку они могут сделать программистов более продуктивными, снизить входные барьеры и сделать разработку программного обеспечения более доступной для тех, кому не нравится враждебность интернет-форумов.
Один участник исследования заметил о помощи ИИ: «Я надеюсь, что эта система будет задеплоена. Это похоже на StackOverflow, но лучше, потому что она никогда не говорит вам, что ваш вопрос был глупым».