Search
Write a publication
Pull to refresh

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

Reading time2 min
Views6.7K

Исследователи компании 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 может предлагать фрагменты, которые в сообществе уже признаны неверными и содержащими ошибки.

Tags:
Hubs:
Total votes 5: ↑3 and ↓2+3
Comments16

Other news