
Когда разработчик использует генератор кода на базе искусственного интеллекта, он ожидает получить рабочий фрагмент программы, который можно быстро внедрить в проект. Однако современные языковые модели часто предлагают подключить к проекту сторонние библиотеки, которых на самом деле не существует. Это не просто ошибка — это новая угроза для всей цепочки поставок программного обеспечения, сообщает Arstechnica.
Исследования показали: если дать 16 популярным LLM задачу сгенерировать код, почти в каждом втором случае они предложат использовать несуществующий пакет. За этим стоит простая логика — искусственный интеллект «воображает» названия библиотек, которых не было в репозиториях до этого момента. В одном эксперименте из 576 тысяч сгенерированных примеров кода 440 тысяч зависимостей оказались вымышленными.
Опасность в том, что злоумышленник может зарегистрировать пакет с таким же именем, какое «придумал» ИИ. Если кто-то без проверки установит этот пакет, в систему попадет вредоносное ПО. Так работает атака, которую называют dependency confusion или slopsquatting. Раньше хакеры пытались ловить опечатки в названиях библиотек (typosquatting), теперь же достаточно просто следить за тем, какие имена придумывает искусственный интеллект, и вовремя их занять.

Особенность этой угрозы — массовость. Если ИИ часто генерирует одни и те же несуществующие имена, злоумышленнику не нужно гадать. Он просто регистрирует такие пакеты в популярных репозиториях, и дальше ждет, пока кто-то из разработчиков, доверившись совету ИИ, не скачает его вредоносный код. В одном из экспериментов тестовый «фейковый» пакет скачали более 30 тысяч раз за три месяца.
Проблема усугубляется тем, что многие языки программирования, например, Python и JavaScript, активно используют централизованные репозитории и внешние зависимости. Разработчики привыкли доверять рекомендациям инструментов и не всегда проверяют, существует ли библиотека на самом деле. Это открывает широкие возможности для атак на самую основу современного ПО.

Чтобы защититься, эксперты советуют всегда проверять названия новых зависимостей, не полагаться только на автоматические рекомендации и использовать инструменты для анализа безопасности цепочки поставок. Скорость разработки выросла, но вместе с ней выросли и риски — теперь внимательность и критическое мышление становятся неотъемлемой частью работы программиста.
Но не все согласны с опасностью, которые несут ИИ для кода. Например, глава Open AI призвал учиться использованию ИИ вместо программирования, подробности в статье.