Большие языковые модели (LLM) при генерации программного кода нередко предлагают использовать сторонние библиотеки, которых в действительности не существует, что открывает злоумышленникам путь к атакам через подмену зависимостей. Об этом сообщает ArsTechnica.
Согласно исследованию, в среднем в каждом втором примере кода, сгенерированном 16 популярными LLM, содержатся ссылки на фиктивные пакеты. В одном из экспериментов было проанализировано более 576 тыс. фрагментов — 440 тыс. зависимостей оказались вымышленными. Причина в том, что обученные на больших объемах текста модели "придумывают" названия библиотек, основываясь на шаблонах, а не на существующих данных из репозиториев.
Такая ошибка может быть использована для проведения атак типа dependency confusion или slopsquatting. Достаточно зарегистрировать пакет с тем же именем, которое "выдумал" ИИ. Если разработчик без проверки установит такой пакет, в его систему может попасть вредоносный код. Уже зафиксированы случаи, когда созданные в рамках исследования тестовые пакеты скачивались десятки тысяч раз.
Особую уязвимость демонстрируют Python и JavaScript, где централизованные репозитории и сторонние зависимости являются нормой. Разработчики часто полагаются на рекомендации ИИ-инструментов, не проверяя вручную существование библиотек.
Эксперты призывают внедрять инструменты мониторинга и анализа безопасности цепочки поставок, а также пересмотреть практику доверия сгенерированных кодов.