Категория: Атаки и угрозыОбновлено 2026-10-27

Слопсквоттинг (slopsquatting)

Слопсквоттинг (slopsquatting) это атака на цепочку поставок, при которой злоумышленник регистрирует имя пакета, которое ИИ-ассистенты склонны выдумывать, и разработчик, установивший предложенную зависимость, получает вредоносный код вместо ошибки. Название сочетает «ИИ-мусор» (AI slop) и тайпсквоттинг. По данным Socket, термин ввёл Сет Ларсон из Python Software Foundation.

Слопсквоттинг в четыре шага: ИИ выдумывает имя пакета, атакующий его регистрирует, вы его ставите, вредный код запускается
Жертва ничего не опечатывает: ассистент подсказывает выдуманное имя, а установка запускает код.

Как работает слопсквоттинг

ИИ-ассистенты иногда рекомендуют несуществующие пакеты, это явление называют галлюцинацией пакетов. Слопсквоттинг на нём и строится. Злоумышленник собирает имена, которые модели склонны выдумывать, регистрирует их в публичном реестре вроде npm или PyPI с вредоносным кодом внутри и ждёт, пока кто-нибудь выполнит команду установки, предложенную ассистентом. Слово сочетает «AI slop» и тайпсквоттинг, а статья Socket сообщает, что его придумал Сет Ларсон (Seth Larson), Developer-in-Residence в Python Software Foundation.

Отличие от обычного тайпсквоттинга в том, что жертва ничего не опечатывает. Имя подсказывает ассистент, причём уверенно, а вайб-кодинг упрощает вставку команды без проверки. Установка пакета может сразу запускать его скрипты установки, поэтому плохая зависимость способна выполнить код на вашем ноутбуке или сервере уже во время установки, ещё до старта приложения.

Что показали исследования

В статье «We Have a Package for You!» (Спрэклен и соавторы, принята на USENIX Security 2025) измерили галлюцинацию пакетов у моделей, генерирующих код. Авторы протестировали 16 популярных моделей и получили 576 000 образцов кода на двух языках программирования.

Это лабораторные измерения поведения моделей, а не подсчёт реальных атак, и результаты зависят от модели и запроса. Авторы также проверили меры защиты, такие как дополнение поиском, самоисправление и дообучение: они снижали галлюцинации, но их применяют разработчики моделей, и включить их в своём проекте нельзя.

Как проверить пакет перед установкой

Считайте каждую зависимость, добавленную ассистентом, непроверенной, пока сами не взглянули на неё. Спросите реестр до установки:

npm view some-package name version time.created repository.url maintainers
npm install --ignore-scripts some-package

Если npm view возвращает 404, имя свободно, а именно этого и ждёт слопсквоттер. Если пакет существует, проверьте, что он не совсем новый, что ссылка на репозиторий настоящая и ведёт на нужный проект, а у мейнтейнеров правдоподобный вид. Знакомое по звучанию имя ничего не доказывает.

Опция --ignore-scripts заставляет npm пропускать скрипты жизненного цикла из package.json, такие как postinstall, и закрывает самый частый способ выполнить код при установке. Вредоносный код при этом всё равно может запуститься позже, когда вы импортируете пакет, поэтому читать страницу пакета всё равно нужно. Для Python откройте страницу проекта на PyPI и проведите те же проверки.

Защита в проектах с ИИ

  1. Проверяйте изменения зависимостей. Каждая новая строка в package.json или requirements.txt должна проходить ревью, а ассистенту нужно дать правило спрашивать перед добавлением. См. правила безопасности для ИИ-ассистента.
  2. Используйте lock-файлы. Lock-файл фиксирует то, что вы уже проверили. Команда npm ci устанавливает по нему и завершается ошибкой, если он расходится с package.json.
  3. Ограничьте ущерб. Запускайте установку от непривилегированного пользователя или в контейнере, чтобы вредоносному скрипту было мало до чего дотянуться. См. наименьшие привилегии и сдерживание.
  4. Проверяйте, оценивайте, наблюдайте. Socket советует убеждаться, что пакет существует и легитимен, проверять необычные пакеты и скрипты установки и постоянно следить за зависимостями.
  5. Ограничьте агентов. Агенту, который сам устанавливает пакеты, нужны чёткие рамки; см. руководство по безопасности ИИ-агентов.

Проверка зависимостей входит в чек-лист безопасности для вайб-кодинга.

Связанные термины: Вайб-кодинг, Промпт-инъекция, Наименьшие привилегии, Сдерживание (containment).

Часто задаваемые вопросы

Что такое слопсквоттинг?

Это атака, при которой злоумышленник регистрирует имя пакета, которое ИИ-ассистенты склонны выдумывать, и разработчики, установившие предложенную зависимость, получают вредоносный код. Слово объединяет «ИИ-мусор» (AI slop) и тайпсквоттинг.

Чем слопсквоттинг отличается от тайпсквоттинга?

Тайпсквоттинг рассчитан на то, что человек опечатается в названии настоящего пакета. Слопсквоттинг рассчитан на то, что ИИ-ассистент предложит имя, которого никогда не существовало, и разработчик последует совету без всякой опечатки.

Как часто ИИ-модели предлагают несуществующие пакеты?

Это зависит от модели. В статье USENIX Security 2025 средние значения составили не менее 5,2% у коммерческих и 21,7% у открытых моделей на 576 000 образцов кода, и нашлось 205 474 уникальных выдуманных имён.

Как понять, что предложенный пакет настоящий и безопасный?

Проверьте реестр командой вроде npm view, убедитесь в ссылке на репозиторий и мейнтейнерах, посмотрите возраст пакета и сначала ставьте его с отключёнными скриптами. Если что-то выглядит странно, не устанавливайте.

Защищает ли lock-файл от слопсквоттинга?

Лишь отчасти. Он не даёт последующим установкам незаметно перейти на другую версию, а npm ci выдаёт ошибку при расхождении. Но пакет при первом добавлении он не проверяет, поэтому первая проверка остаётся за вами.

Хотите увидеть, в каком состоянии ваш сервер?

Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.

Получить бесплатную проверку сервераОткрыть Security Lab