Попросите ассистента для написания кода решить задачу, и он иногда порекомендует установить пакет: настоящие для распространённых задач и, что измеримо часто, пакеты, которые вообще не существуют. Он выдумал правдоподобное название, потому что окружающий паттерн кода требовал там зависимости. Если вы или ваш ИИ-агент всё равно выполните команду установки, то, что реально зарегистрировано под этим именем на 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 уникальных галлюцинированных имени пакетов. Это не редкий крайний случай: для некоторых открытых моделей это примерно каждая пятая предложенная зависимость.
| Класс моделей | Частота галлюцинаций (среди рекомендаций пакетов) |
|---|---|
| Коммерческие модели (в среднем) | не менее 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.
