Slopsquatting
Слопсквоттинг — это атака на цепочку поставок ПО, при которой злоумышленники используют придуманные ИИ названия пакетов, чтобы обманом заставить разработчиков устанавливать вредоносные зависимости.
Слопсквоттинг — это атака на цепочку поставок ПО, при которой злоумышленник публикует вредоносный пакет под названием, придуманным ИИ-помощником для программирования, а затем рассчитывает на то, что разработчики или автоматизированные инструменты установят этот пакет. Так правдоподобно звучащая рекомендация зависимости превращается в исполняемый сторонний код. Эта атака связывает галлюцинации в больших языковых моделях — выдуманную информацию, представленную как факт, — с менеджерами пакетов, используемыми для сборки ПО.
Исследователь безопасности Сет Ларсон ввёл этот термин в апреле 2025 года, а Эндрю Несбитт популяризировал его в своей первоначальной формулировке понятия «слопсквоттинг», указав авторство Ларсона. Название объединяет ИИ-мусор и «сквоттинг» — присвоение названия ПО, которое будут искать другие.
Как работает слопсквоттинг#
Большая языковая модель генерирует код с выдуманным названием пакета или командой установки. Злоумышленник обнаруживает это название и публикует под ним пакет в таком реестре, как PyPI или npm. Когда рекомендация появляется снова, при установке загружается пакет злоумышленника. Галлюцинации с названиями пакетов могут повторяться в разных запросах и моделях, концентрируя спрос на названиях, которые злоумышленники могут зарегистрировать.
Результат зависит от состояния реестра. Если имя не зарегистрировано, установка завершается с ошибкой; если имя контролирует злоумышленник, пакет успешно устанавливается и внедряет в среду вредоносный код. Доверие разработчика к помощнику становится путём проникновения в цепочку поставок ПО.
Этот риск затрагивает как разработку с участием человека, так и агентное программирование. ИИ-агент с возможностью использовать инструменты может превратить сгенерированную зависимость в действие по её установке. Вредоносный код пакета может выполняться во время установки или последующего использования, получая доступ к файлам, учётным данным и результатам сборки в пределах разрешений среды.
Как выдуманный пакет попал к разработчикам#
Бар Ланядо опубликовал пустой Python-пакет с названием huggingface-cli после того, как модели ИИ рекомендовали эту несуществующую зависимость. К 28 марта 2024 года галлюцинированный пакет набрал более 30 000 настоящих загрузок за три месяца. Инструкции по установке также появились в файле README исследовательского репозитория Alibaba. Использование пустого пакета показало, что выдуманное название зависимости может попасть в реальные рабочие процессы разработки.
Различия в именовании пакетов создают ещё один источник путаницы: исполняемый файл командной строки, импортируемый модуль и устанавливаемый дистрибутив могут называться по-разному. Это важно при разработке в области компьютерного зрения, когда помощники генерируют инструкции по настройке среды. Ultralytics YOLO поддерживает YOLO26 через Python-пакет ultralytics, который предоставляет рабочие процессы обучения, предсказания и экспорта; проверка сгенерированных инструкций по установке на соответствие идентификатору этого пакета помогает выявить подмену зависимости на этапе её выбора.
Слопсквоттинг и смежные атаки#
Эти термины обозначают разные механизмы, влияющие на безопасность зависимостей:
- Галлюцинация с названием пакета: модель выдумывает зависимость. Слопсквоттинг превращает эту ошибку в названии в угрозу с помощью регистрации злоумышленником.
- Тайпсквоттинг: злоумышленник регистрирует название, похожее на название существующего пакета, чтобы перехватывать запросы с опечатками. Слопсквоттинг нацелен на названия, сгенерированные ИИ.
- Путаница зависимостей: менеджер пакетов загружает общедоступный пакет, хотя требовалась закрытая зависимость.
- Инъекция промпта: контролируемое злоумышленником содержимое меняет поведение системы ИИ. Слопсквоттинг использует сгенерированную рекомендацию пакета через реестр.
Как предотвратить слопсквоттинг в конвейерах сборки#
Перед установкой при согласовании зависимости проверяют, какой именно проект, издатель, исходный репозиторий и история выпусков нужны. Проверка зависимостей с упором на безопасность применима к добавлениям, сгенерированным ИИ, так же, как и к коду, написанному человеком. Наличие пакета в реестре подтверждает, что он существует; проверка владельца показывает, чьё ПО будет запущено. Привязка помощника к одобренной документации пакетов предоставляет идентификаторы пакетов для такой проверки.
В непрерывной интеграции этапы проверки контролируют изменения зависимостей до их попадания в сборку. Зафиксированные версии указывают на одобренные выпуски, а хэши артефактов — на конкретные файлы. Изоляция агента, ограниченный сетевой доступ и учётные данные с минимальными привилегиями ограничивают ресурсы, доступные коду зависимостей, сокращая его доступ к конфиденциальным данным и учётным данным для развёртывания.
Режим установки Python с проверкой хэшей использует --require-hashes, чтобы сверять загруженные файлы пакетов с хэшами, указанными в файле требований. Для каждой зависимости, включая транзитивные зависимости — библиотеки, необходимые другим библиотекам, — должна быть указана точная версия и разрешённые хэши артефактов. Если хэш загруженного пакета не совпадает ни с одним из разрешённых хэшей, pip отклоняет файл и останавливает установку.










