Блог о безопасности FireAI

Автор FireAI Security & Research Team · Опубликовано

Slopsquatting: когда ИИ-ассистент для написания кода выдумывает пакет, а кто-то другой его регистрирует

Slopsquatting: когда ИИ-ассистент для написания кода выдумывает пакет, а кто-то другой его регистрирует

Попросите ассистента для написания кода решить задачу, и он иногда порекомендует установить пакет: настоящие для распространённых задач и, что измеримо часто, пакеты, которые вообще не существуют. Он выдумал правдоподобное название, потому что окружающий паттерн кода требовал там зависимости. Если вы или ваш ИИ-агент всё равно выполните команду установки, то, что реально зарегистрировано под этим именем на PyPI или npm, и окажется на вашей машине. Исследователь безопасности Сет Ларсон (Seth Larson), разработчик-резидент Python Software Foundation, назвал получившуюся атаку «slopsquatting» — регистрацию имён, которые галлюцинируют модели, ИИ-версию тайпсквоттинга.

Как часто это реально происходит

Команда из Техасского университета в Сан-Антонио, Virginia Tech и Университета Оклахомы измерила это напрямую: «We Have a Package for You!», принятая на USENIX Security 2025. На 576 000 сгенерированных примеров кода от 16 популярных моделей на двух языках они обнаружили галлюцинированные пакеты «как минимум в 5,2 процента случаев у коммерческих моделей и в 21,7 процента у открытых моделей», в сумме 205 474 уникальных галлюцинированных имени пакетов. Это не редкий крайний случай: для некоторых открытых моделей это примерно каждая пятая предложенная зависимость.

Spracklen и др., USENIX Security 2025, arXiv:2406.10279. Средние значения по 16 протестированным моделям; отдельные модели отличались.
Класс моделейЧастота галлюцинаций (среди рекомендаций пакетов)
Коммерческие модели (в среднем)не менее 5,2 процента
Открытые модели (в среднем)не менее 21,7 процента

Почему это можно «сквоттить», а не просто ошибка

Разовое выдуманное имя было бы досадной мелочью, а не поверхностью атаки. Эксплуатируемым это делает повторяемость: как сообщил The Register 12 апреля 2025 года, когда исследователи повторяли один и тот же промпт десять раз, «43 процента галлюцинированных пакетов повторялись каждый раз, а 39 процентов больше не появлялись никогда». Почти половина галлюцинированных имён — не случайный шум; это одна и та же догадка, к которой модель надёжно приходит при похожем коде. Атакующему не нужно угадывать, что напечатает конкретный разработчик. Он может запустить те же модели на распространённых промптах, собрать имена, которые повторяются, и заранее зарегистрировать их в реальном индексе пакетов.

Иллюстрация: момент риска
pip install fast-json-normalizer   # suggested by a coding assistant
Collecting fast-json-normalizer
  Downloading fast-json-normalizer-0.3.1.tar.gz
Running setup.py install for fast-json-normalizer ... done
# Nothing here indicates whether this name was ever a real, reviewed project
# or was registered specifically because models keep suggesting it.

Почему это укладывается в паттерн, который OWASP уже отслеживает

Это разновидность того, что OWASP Top 10 for LLM Applications называет риском цепочки поставок для разработки с помощью ИИ: граница доверия, которая раньше проходила по линии «выбрал ли человек добавить эту зависимость», смещается к «выбрало ли её завершение паттерна моделью», а завершение паттерна не имеет понятия о том, реально ли существует имя.

Что реально с этим делать

  • Относитесь к любому имени пакета, которое предлагает ИИ-агент, как к предложению, которое нужно проверить, а не как к заведомо надёжной зависимости — так же, как вы отнеслись бы к имени, которое по памяти напечатал junior-разработчик.
  • Проверяйте дату регистрации и историю скачиваний перед установкой чего-либо незнакомого; пакет, появившийся недавно и подозрительно точно соответствующий распространённому паттерну промптов для генерации кода, заслуживает повторного взгляда.
  • Фиксируйте версии зависимостей и используйте lock-файл, чтобы однажды проскочившее галлюцинированное имя не разрешилось заново незаметно позже.
  • Следите за тем, что реально делает свежеустановленный пакет при первом запуске. Только что зарегистрированная зависимость, обращающаяся к серверу, с которым ей нечего делать, — это сигнал, который файрвол способен поймать, даже если проверка кода пропустила само имя.

Какое место здесь занимают FireAI и HisnLabs

A squatted package that phones home still has to make a connection to do it, from a Python or Node process you just ran; FireAI shows you that connection, the process behind it and where it is going, before you decide whether it belongs there.

FireAI — это собственный продукт HisnLabs: ИИ-файрвол, работающий прямо на вашем Mac. Он показывает простым языком каждое соединение, которое устанавливают ваши приложения, и позволяет вам решать, что покидает ваш Mac, — его ИИ работает локально, поэтому ваш трафик никогда не отправляется ни нам, ни кому-либо ещё. Команда исследователей безопасности HisnLabs — это те, кто поддерживает точность этих решений: они каталогизируют, какие домены являются обычной телеметрией, а какие — реальным сервисом, отслеживают страну и сеть, стоящие за соединением, и обучают локальную модель (функцию Autopilot) на реальных шаблонах трафика — и ничего из этого не покидает ваш Mac.

Вы можете прочитать о технических решениях, лежащих в его основе, или попробовать FireAI в течение 17 дней на странице FireAI от HisnLabs.

Источники