
Что произошло
Бар Ланьядо (Bar Lanyado) из Lasso Security исследовал, как часто модели GPT-3.5, GPT-4, Gemini и Cohere рекомендуют несуществующие пакеты, на почти 48 тыс. вопросов по пяти языкам программирования. По данным Lasso, доля ответов с выдуманными пакетами составила от 22,2% у GPT-3.5 до 64,5% у Gemini, а 215 выдуманных названий повторялись у разных моделей. В декабре 2023 года исследователь зарегистрировал на PyPI пустой пакет huggingface-cli, который модели часто предлагали вместо настоящей команды установки. По данным The Register, за три месяца пакет получил более 15 тыс. подлинных загрузок, Lasso приводит оценку свыше 30 тыс. загрузок. К февралю 2024 года установка этого пакета была указана в README проекта GraphTranslator от Alibaba. Результаты опубликованы 28 марта 2024 года, позднее подобную атаку стали называть slopsquatting.
Где нарушилась защита
Граница доверия нарушается в момент, когда разработчик или AI-агент выполняет установку пакета, предложенного моделью, не проверив его существование и происхождение. Если выдуманное название устойчиво повторяется, злоумышленник может заранее зарегистрировать его в публичном реестре. В эксперименте пакет был пустым, но на его месте мог оказаться вредоносный код, который устанавливался бы у всех, кто следует рекомендации.
Последствия
- Пустой пакет под выдуманным AI названием получил более 15 тыс. подлинных загрузок за три месяца
- Инструкция с выдуманным пакетом попала в документацию проекта крупной компании
- По данным The Register, на момент публикации подтверждённых случаев вредоносного использования этой техники не было
Реакция
Исследователь опубликовал результаты и рекомендации по перекрёстной проверке пакетов, предлагаемых AI. Пакет оставался безвредной заглушкой.
Уроки для бизнеса
- Рекомендации AI-ассистентов по зависимостям нужно проверять так же, как код от неизвестного автора
- AI-агенты, самостоятельно устанавливающие пакеты, усиливают этот риск
- Ошибки AI быстро распространяются через документацию и копирование команд
- Публичные реестры пакетов не проверяют, существовало ли название до рекомендации модели
Меры, которые предотвратили бы инцидент
- Установка зависимостей только через внутренний прокси-репозиторий со списком одобренных пакетов
- Запрет AI-агентам устанавливать новые пакеты без подтверждения человеком
- Проверка возраста, автора и популярности незнакомых пакетов перед добавлением в проект
- Анализ состава ПО (SCA) в CI с блокировкой новых непроверенных зависимостей