Игорь Градов
Игорь Градов
6 мин
ai

Слопсквоттинг: каждый пятый пакет от LLM не существует, и хакеры этим пользуются

Слопсквоттинг звучит как техническая экзотика, но бьёт по каждому, кто копирует код из ChatGPT или Claude и запускает установку пакетов не глядя, а 3 июня 2025 года, после публикации крупного исследования на USENIX Security 2025, стало ясно, что масштаб проблемы огромен.

Почему это важно

Каждый пятый пакет, который рекомендует языковая модель в сгенерированном коде, не существует в реальных реестрах. Злоумышленник может зарегистрировать выдуманное название первым и подсунуть вредоносный код всем, кто бездумно скопирует строку установки.

Термин slopsquatting (слопсквоттинг) появился в апреле 2025 года. Его предложил Сет Ларсон, отвечающий за безопасность в Python Software Foundation. Слово собрано из двух частей: slop (так британский исследователь ИИ Саймон Уиллисон назвал однотипный фальшивый контент от LLM, «помои») и squatting (захват, как в typosquatting, опечаточном захвате доменов). В массы термин ушёл благодаря посту Эндрю Несбитта, автора сервиса Ecosyste.ms. За несколько дней о нём написали Socket, «Лаборатория Касперского» и другие компании в сфере информационной безопасности.

Суть проста: большая языковая модель (LLM, large language model) галлюцинирует (уверенно выдумывает) названия библиотек для Python, npm, Go, Rust. Атакующий предугадывает эти названия, регистрирует пакет с вредоносным кодом и ждёт, пока разработчик скопирует команду установки из ответа ИИ.

Почему модели врут с таким упорством?

У языковых моделей нет доступа к реестру PyPI или npm в момент генерации кода. Даже когда инструменты подключены, модель, по наблюдению авторов исследования, часто ими не пользуется. Вместо честного «я не знаю подходящей библиотеки» модель выдумывает правдоподобное название и уверенно объясняет, зачем его ставить. Это следствие RLHF (обучения с подкреплением на обратной связи от человека, когда модель натренирована быть максимально полезной любой ценой).

Исследование «We Have a Package for You!» (Spracklen и соавторы, USENIX Security 2025, arXiv:2406.10279) дало конкретные цифры. Учёные протестировали 16 моделей генерации кода, от GPT-4 до CodeLlama и DeepSeek, и сгенерировали 576 000 образцов кода на Python и JavaScript.

Главные результаты:

  • Примерно каждый пятый рекомендованный пакет оказался вымышленным
  • У открытых моделей (open-source) доля галлюцинаций (выдуманных ответов) выше: примерно каждый четвёртый или пятый пакет
  • 43% галлюцинаций повторялись стабильно во всех 10 повторных прогонах одного и того же запроса
  • 58% повторялись хотя бы дважды из десяти
  • 81% уникальных вымышленных имён встретились только у одной из 16 моделей: модели в основном выдумывают разные пакеты, а не одни и те же

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

Первый практический пример появился ещё до термина

Ещё в 2023 году исследователь Бар Ланьядо заметил, что модели упорно советуют устанавливать huggingface-cli, пакет, которого не существовало (настоящий инструмент ставится через huggingface_hub[cli]). Он зарегистрировал пустышку с этим именем, и за три месяца её скачали более 30 000 раз. Команда установки даже попала в README одного из репозиториев Alibaba.

Это наглядная демонстрация: атака не требует сложной инфраструктуры. Достаточно одного предсказуемого имени и одной регистрации.

Что понадобится

  • Любой редактор кода и терминал
  • Доступ к реестру пакетов, который вы используете (PyPI, npm, Go Modules)
  • Привычка проверять каждый пакет перед установкой, время на проверку одного имени: 30 секунд
  • Для продвинутой защиты: инструменты SCA (Software Composition Analysis, анализ состава ПО), например Socket, Snyk или Sonatype

Пошаговая инструкция: как не попасться на слопсквоттинг

  1. Получите код от ИИ-ассистента, но не запускайте установку сразу. Скопируйте список импортов и зависимостей в отдельный файл.

  2. Проверьте каждое имя пакета в реестре вручную. Для Python откройте pypi.org и вбейте название. Для JavaScript проверьте на npmjs.com. Если пакет не находится, это галлюцинация.

# Быстрая проверка существования пакета в PyPI из терминала
pip index versions csv_utils
# Если пакет не найден — это выдумка модели
  1. Если пакет существует, проверьте его возраст и автора. Откройте страницу пакета и посмотрите: когда создан, сколько загрузок, кто автор, есть ли репозиторий с кодом. Пакет без репозитория, созданный недавно, с нулевой историей, это красный флаг.

  2. Попросите модель переписать код без сторонних библиотек. Прямо в промпте (запросе к модели) укажите:

Перепиши этот код, используя только стандартную библиотеку Python.
Не предлагай сторонних пакетов.
  1. Для рабочих проектов подключите автоматическую проверку зависимостей. Инструменты типа Socket или Snyk умеют выявлять подозрительные пакеты до установки. В CI/CD-пайплайне (конвейере автоматической сборки и доставки кода) настройте проверку новых зависимостей при каждом коммите.

  2. Фиксируйте версии зависимостей. Используйте lock-файлы (package-lock.json для npm, poetry.lock для Python). Не ставьте пакеты по имени без фиксации версии.

Как это выглядит на практике

Запрос в ChatGPT: «Напиши простой парсер CSV на Python, используй оптимальное решение».

Модель выдаёт:

import csv_utils
from fastcsv_parser import parse_csv

Проверяем в терминале:

pip index versions csv_utils
# ERROR: No matching distribution found for csv_utils
pip index versions fastcsv_parser
# ERROR: No matching distribution found for fastcsv_parser

Оба пакета не существуют. Переформулируем промпт: «Перепиши без сторонних библиотек, только стандартный модуль csv». Модель выдаёт рабочий код на встроенном модуле csv, который есть в каждой установке Python.

Частые ошибки

Доверять знакомому названию. Если пакет звучит логично (flask-caching-pro, numpy-extended), это не значит, что он настоящий. Злоумышленники специально выбирают правдоподобные имена.

Проверять только первый пакет, а остальные ставить по инерции. Проверяйте каждое имя. Одна вредоносная зависимость в цепочке компрометирует весь проект.

Считать, что локальные зеркала защищают. Зеркала PyPI и npm, которые используют в России и СНГ, копируют содержимое основных реестров. Если вредоносный пакет зарегистрирован в оригинальном PyPI, он попадёт и на зеркало.

Полагаться на «у меня платная версия, она не врёт». Исследование USENIX Security 2025 показало: галлюцинации есть и у коммерческих моделей, включая GPT-4. Доля ниже, чем у открытых моделей, но риск не нулевой.

Что делать прямо сейчас, по ролям

Автору Дзена и копирайтеру. Если вы используете ИИ-ассистентов для написания скриптов автоматизации, парсеров или ботов для своих каналов, каждую строку pip install или npm install проверяйте в реестре. Тридцать секунд проверки дешевле, чем утечка токенов доступа к вашему каналу.

Маркетологу. Ваши подрядчики-разработчики могут копировать код из ChatGPT. Внесите в техзадание обязательную проверку зависимостей и требование фиксировать lock-файлы. Это не перестраховка, а гигиена.

Предпринимателю в РФ и СНГ. Локальные зеркала пакетных реестров не фильтруют вредоносные пакеты автоматически. Из доступных в России инструментов проверки: «Лаборатория Касперского» уже пишет о слопсквоттинге и предлагает свои решения для анализа зависимостей. Для небольших команд минимальный шаг: ручная проверка каждого нового пакета перед добавлением в проект.

Мнение редакции dzen.guru

Мы двадцать лет учили разработчиков не доверять незнакомым пакетам, а потом всем скопом поверили языковым моделям. По моим наблюдениям, большинство пользователей ИИ-ассистентов в России вообще не задумываются о проверке зависимостей: код сгенерирован, работает, зачем копать. Но слопсквоттинг бьёт именно по этому автоматизму. Честная оговорка: полностью защититься нельзя, пока модели продолжают галлюцинировать. Но можно свести риск к минимуму тремя привычками: не ставить пакет, не проверив его в реестре; просить модель обойтись стандартной библиотекой; фиксировать версии в lock-файлах. Это не паранойя. Это базовая цифровая гигиена, которая в 2025 году стала обязательной для каждого, кто работает с ИИ.

Научитесь работать с ИИ безопасно

В dzen.guru мы разбираем практические приёмы работы с нейросетями, включая проверку кода и защиту от галлюцинаций

Попробовать инструменты dzen.guru

Тридцать секунд на проверку одного пакета или часы на восстановление после компрометации. Выбор, который теперь приходится делать каждый раз, когда ИИ-ассистент уверенно предлагает вам что-то установить.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Как собрать кубик Рубика 3х3: нейросеть достигла 98,4% оптимальных решений
ai

Как собрать кубик Рубика 3х3: нейросеть достигла 98,4% оптимальных решений

Собрать кубик Рубика 3х3 можно двумя путями: по классическим алгоритмам из поисковика или с помощью нейросетевой эвристики, которая сама прокладывает маршрут к…

6 мин
«Диасофт» запустила конвейер из 30 ИИ-агентов: ИИ для бизнеса покрывает путь от записи встречи до релиза
ai

«Диасофт» запустила конвейер из 30 ИИ-агентов: ИИ для бизнеса покрывает путь от записи встречи до релиза

Корпоративная разработка в России всё чаще упирается не в скорость написания кода, а в то, что происходит до и после него, и 7 октября компания «Диасофт»…

6 мин
Tuna внедрила AIOps-агента в шесть кластеров: гипотеза сбоя за 4 минуты и несколько рублей
ai

Tuna внедрила AIOps-агента в шесть кластеров: гипотеза сбоя за 4 минуты и несколько рублей

Компания Tuna внедрила HolmesGPT, открытого SRE-агента (программу, которая сама расследует причины сбоев в серверной инфраструктуре), в шесть…

5 мин