Исследователи UTSA недавно завершили одно из самых всеобъемлющих исследований на сегодняшний день, посвященных рискам использования моделей ИИ для разработки программного обеспечения. В новой статье они демонстрируют, как определенный тип ошибки может представлять серьезную угрозу для программистов, использующих ИИ для написания кода.
Джо Спраклен, докторант UTSA по информатике, возглавил исследование того, как большие языковые модели (LLM) часто генерируют небезопасный код.
Статья его команды, опубликованная на сервере препринтов arXiv, также была принята к публикации на USENIX Security Symposium 2025 — конференции по кибербезопасности и конфиденциальности.
В многоинституциональном сотрудничестве приняли участие еще три исследователя из UTSA: докторант AHM Назмус Сакиб, научный сотрудник-постдокторант Равин Виджевикрама и доцент д-р Муртуза Джадливала, директор SPriTELab (Исследовательская лаборатория безопасности, конфиденциальности, доверия и этики в области вычислений).
Дополнительными соавторами были Аниндья Майта из Университета Оклахомы (бывший научный сотрудник UTSA) и Бимал Вишванат из Политехнического университета Вирджинии.
Галлюцинации в LLM возникают, когда модель производит контент, который фактически неверен, бессмыслен или совершенно не связан с задачей ввода. Большинство текущих исследований до сих пор были сосредоточены в основном на галлюцинациях в классических задачах генерации и прогнозирования естественного языка, таких как машинный перевод, реферирование и разговорный ИИ.
Исследовательская группа сосредоточилась на феномене пакетной галлюцинации, который возникает, когда магистр права создает или рекомендует использовать стороннюю программную библиотеку, которая на самом деле не существует.
Упаковочные галлюцинации становятся интересной областью исследований потому, что нечто столь простое — одна повседневная команда — может привести к серьезным рискам безопасности.
«Для этого не требуется запутанного стечения обстоятельств или какой-то непонятной вещи», — сказал Спраклен. «Просто набрать одну команду, которую большинство людей, работающих с этими языками программирования, набирают каждый день. Это все, что нужно. Это очень прямолинейно и очень просто».
«Он также вездесущ», — добавил он. «Вы можете сделать очень мало с вашим базовым языком программирования Python. Вам потребовалось бы много времени, чтобы написать код самостоятельно, поэтому универсально полагаться на программное обеспечение с открытым исходным кодом , чтобы расширить возможности вашего языка программирования для выполнения конкретных задач».
Степень магистра права становится все более популярной среди разработчиков, которые используют модели искусственного интеллекта для помощи в сборке программ.
По данным исследования, до 97% разработчиков программного обеспечения включают генеративный ИИ в свой рабочий процесс, а 30% кода, написанного сегодня, генерируется с помощью ИИ.
Кроме того, многие популярные языки программирования, такие как PyPI для Python и npm для JavaScript, полагаются на использование централизованного репозитория пакетов. Поскольку репозитории часто имеют открытый исходный код, злоумышленники могут загружать вредоносный код, замаскированный под легитимные пакеты.
В течение многих лет злоумышленники использовали различные уловки, чтобы заставить пользователей установить их вредоносное ПО. Пакетные галлюцинации — это последняя тактика.
«Итак, допустим, я прошу ChatGPT помочь написать для меня какой-то код, и он его пишет. Теперь, допустим, в сгенерированном коде он включает ссылку на какой-то пакет, и я доверяю ему и запускаю код, но пакет не существует, это какой-то галлюцинированный пакет. Проницательный злоумышленник/хакер может увидеть это поведение (LLM) и понять, что LLM говорит людям использовать этот несуществующий пакет, этот галлюцинированный пакет», — объяснил Джадливала.
«Затем злоумышленник может просто тривиально создать новый пакет с тем же именем, что и у галлюциногенного пакета (что рекомендовано LLM), и внедрить в него какой-нибудь вредоносный код.
«Теперь, когда в следующий раз LLM порекомендует тот же пакет в сгенерированном коде, и ничего не подозревающий пользователь выполнит код, этот вредоносный пакет будет загружен и выполнен на компьютере пользователя».
Исследователи UTSA оценили частоту возникновения пакетных галлюцинаций при разных языках программирования, настройках и параметрах, изучая вероятность ошибочных рекомендаций по пакетам и выявляя основные причины.
В 30 различных тестах, проведенных исследователями UTSA, 440 445 из 2,23 миллиона образцов кода, которые они сгенерировали на Python и JavaScript с использованием моделей LLM, ссылались на галлюцинаторные пакеты.
Из протестированных исследователями LLM «модели серии GPT оказались в четыре раза менее склонны генерировать галлюцинаторные пакеты по сравнению с моделями с открытым исходным кодом, с частотой галлюцинаций 5,2% по сравнению с 21,7%», — говорится в исследовании. Исследователи обнаружили, что код Python менее подвержен галлюцинациям, чем JavaScript.
Эти атаки часто включают в себя присвоение вредоносному пакету имени, имитирующего легитимный, тактика, известная как атака с путаницей пакетов. При атаке с галлюцинацией пакетов ничего не подозревающему пользователю LLM будет рекомендован пакет в его сгенерированном коде, и, доверяя LLM, он загрузит созданный злоумышленником вредоносный пакет, что приведет к компрометации.
Коварным элементом этой уязвимости является то, что она эксплуатирует растущее доверие к LLM. По мере того, как они продолжают становиться более опытными в задачах кодирования, пользователи будут более склонны слепо доверять их выходным данным и потенциально станут жертвами этой атаки.
«Если вы много кодируете, несложно понять, как это происходит. Мы поговорили со многими людьми, и почти все сказали, что замечали, как во время кодирования у них случались галлюцинации, связанные с пакетами, но они никогда не задумывались о том, как это можно использовать во зло», — объяснил Спраклен.
«Вы оказываете большую неявную уверенность издателю пакета в том, что предоставленный им код является законным и не вредоносным. Но каждый раз, когда вы загружаете пакет, вы загружаете потенциально вредоносный код и предоставляете ему полный доступ к вашему компьютеру».
Хотя перекрестные ссылки на сгенерированные пакеты с основным списком могут помочь смягчить галлюцинации, исследователи UTSA заявили, что лучшим решением будет обратиться к основе LLM во время собственной разработки. Команда раскрыла свои выводы поставщикам моделей, включая OpenAI, DeepSeek и Mistral AI.