Исследование: ИИ-генераторы кода часто ссылаются на несуществующие библиотеки, открывая двери киберпреступникам
Код, созданный искусственным интеллектом, регулярно содержит ссылки на несуществующие сторонние библиотеки, что открывает возможности для атак на цепочку поставок программного обеспечения. К такому выводу пришли исследователи из Университета Техаса в Сан-Антонио, чья работа будет представлена на симпозиуме USENIX Security Symposium. Учёные проанализировали 576 тыс. образцов кода, сгенерированных 16 популярными языковыми моделями, включая OpenAI и открытые решения. В 19,7% случаев зависимости (сторонние компоненты, необходимые для работы кода) оказались «галлюцинациями» — пакетами, которых не существует в публичных репозиториях. Особую опасность такие ошибки представляют из-за повторяемости: 43% «галлюцинированных» названий появлялись в более чем 10 запросах, а 58% — повторялись хотя бы раз в 10 итерациях. Это позволяет злоумышленникам предсказуемо создавать вредоносные пакеты с такими именами и внедрять их в легитимные программы. Как объяснил ведущий автор исследования Джозеф Спраклен, если разработчик установит поддельную зависимость, то код злоумышленника выполнится на его системе, что может привести к утечке данных или установке бэкдоров. Иллюстрация: Leonardo Наиболее уязвимыми оказались открытые модели, такие как CodeLlama и DeepSeek, — они «галлюцинировали» в 22% случаев против 5% у коммерческих аналогов. Учёные связывают это с размером моделей: коммерческие решения, такие как ChatGPT, имеют в 10 раз больше параметров, что улучшает точность. При этом в рамках открытых моделей разница в размере не влияла на частоту ошибок, что указывает на роль других факторов: обучающих данных, тонкой настройки и механизмов безопасности. Язык программирования также имел значение: JavaScript-код содержал 21% несуществующих зависимостей против 16% у Python. Исследователи предполагают, что причина — в 10-кратном превосходстве экосистемы JavaScript по числу пакетов и сложности неймспейсов, что затрудняет точное воспроизведение названий. Проблема усугубляет риски «подмены зависимостей» — атак, при которых злоумышленник публикует вредоносный пакет с именем, совпадающим с легитимным, но более новой версией. В 2021 году подобная техника использовалась против Apple, Microsoft и Tesla. С ростом популярности ИИ-генераторов кода, по прогнозам Microsoft CTO Кевина Скотта, к 2030 году 95% программ может создаваться с их помощью, что увеличит масштаб угрозы. «Галлюцинации в LLM — это не случайные ошибки, а системная уязвимость, — подчеркнул Спраклен. — Разработчикам критически важно проверять каждую зависимость, даже если её предложил ИИ». Исследователи призвали сообщество усилить механизмы верификации кода и разработать инструменты для автоматического обнаружения «галлюцинированных» пакетов, чтобы снизить риски для всей экосистемы разработки.

Код, созданный искусственным интеллектом, регулярно содержит ссылки на несуществующие сторонние библиотеки, что открывает возможности для атак на цепочку поставок программного обеспечения. К такому выводу пришли исследователи из Университета Техаса в Сан-Антонио, чья работа будет представлена на симпозиуме USENIX Security Symposium. Учёные проанализировали 576 тыс. образцов кода, сгенерированных 16 популярными языковыми моделями, включая OpenAI и открытые решения. В 19,7% случаев зависимости (сторонние компоненты, необходимые для работы кода) оказались «галлюцинациями» — пакетами, которых не существует в публичных репозиториях.
Особую опасность такие ошибки представляют из-за повторяемости: 43% «галлюцинированных» названий появлялись в более чем 10 запросах, а 58% — повторялись хотя бы раз в 10 итерациях. Это позволяет злоумышленникам предсказуемо создавать вредоносные пакеты с такими именами и внедрять их в легитимные программы. Как объяснил ведущий автор исследования Джозеф Спраклен, если разработчик установит поддельную зависимость, то код злоумышленника выполнится на его системе, что может привести к утечке данных или установке бэкдоров.
Наиболее уязвимыми оказались открытые модели, такие как CodeLlama и DeepSeek, — они «галлюцинировали» в 22% случаев против 5% у коммерческих аналогов. Учёные связывают это с размером моделей: коммерческие решения, такие как ChatGPT, имеют в 10 раз больше параметров, что улучшает точность. При этом в рамках открытых моделей разница в размере не влияла на частоту ошибок, что указывает на роль других факторов: обучающих данных, тонкой настройки и механизмов безопасности.
Язык программирования также имел значение: JavaScript-код содержал 21% несуществующих зависимостей против 16% у Python. Исследователи предполагают, что причина — в 10-кратном превосходстве экосистемы JavaScript по числу пакетов и сложности неймспейсов, что затрудняет точное воспроизведение названий.
Проблема усугубляет риски «подмены зависимостей» — атак, при которых злоумышленник публикует вредоносный пакет с именем, совпадающим с легитимным, но более новой версией. В 2021 году подобная техника использовалась против Apple, Microsoft и Tesla. С ростом популярности ИИ-генераторов кода, по прогнозам Microsoft CTO Кевина Скотта, к 2030 году 95% программ может создаваться с их помощью, что увеличит масштаб угрозы.
«Галлюцинации в LLM — это не случайные ошибки, а системная уязвимость, — подчеркнул Спраклен. — Разработчикам критически важно проверять каждую зависимость, даже если её предложил ИИ». Исследователи призвали сообщество усилить механизмы верификации кода и разработать инструменты для автоматического обнаружения «галлюцинированных» пакетов, чтобы снизить риски для всей экосистемы разработки.