Как стать автором
Обновить

Исследователи обнаружили, что GitHub Copilot генерирует уязвимый код

Время на прочтение 2 мин
Количество просмотров 1.5K

Исследователи компании Snyk, специализирующейся на безопасности, рассказали, что ИИ-помощник GitHub Copilot генерирует уязвимый код, если в проекте уже есть такой. Это связанно с тем, что нейросеть просто анализирует кодовую базу, но не понимает, как она работает.

Компания Snyk провела эксперимент, чтобы доказать способность GitHub Copilot генерировать уязвимый код на основе такого же в проекте. На первом этапе исследователи попросили ИИ-помощника сгенерировать SQL-запрос и получили следующий результат:

// create query to match input with the description or product name
var query = em.createQuery("SELECT p FROM Product p WHERE LOWER(p.description) like  OR lower(p.productName) like :input", Product.class);

Отмечается, что это качественный и безопасный запрос с именованными параметрами, что делает невозможным использование инъекций. После этого в соседнем файле проекта самостоятельно написали уязвимый SQL-запрос и снова попросили нейросеть написать код. Во второй раз GitHub Copilot сгенерировал следующий фрагмент:

// create query to match input with the description or product name
String query = "Select * from Product where lower(description) like '%" + lowerInput + "%' OR lower(product_name) like '%" + lowerInput + "%'";

Для контекста нейросеть использовала уязвимый код и на его основе сгенерировала ещё одну ошибку. После этого в коде проекта появилось два потенциально опасных запроса вместо одного. Исследователи отметили, что если проектом занимаются неопытные разработчики, то количество уязвимостей в кодовой может увеличиваться значительно быстрее.

Специалисты Snyk отмечают следующие факторы, усугубляющие использование GitHub Copilot:

  • Закрепление плохого подхода. Начинающие разработчики, использующие ИИ-помощников, не замечают своих ошибок и начинают думать, что если код сгенерировала нейросеть, то он верный.

  • Отсутствие проверок. Ассистенты не могут проверять безопасность предложенных фрагментов, а разработчики редко пересматривают их. Это увеличивает количество уязвимостей в проекте.

  • Устаревшие шаблоны. GitHub Copilot может предлагать фрагменты, которые в сообществе уже признаны ошибочными и содержащими ошибки.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+1
Комментарии 8
Комментарии Комментарии 8

Другие новости

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн