Обновить

Slopsquatting: ИИ в тандеме со злоумышленником

Интересно смотреть, как ИИ меняет разные сферы - и кибербезу тоже досталось. Недавно наткнулся на термин slopsquatting и удивился: он живёт уже больше года, просто прошёл мимо меня - придумал его в 2025 Сет Ларсон из Python Software Foundation. Разбираемся, что это и почему это не страшилка ради красивых заголовков.

Начнём издалека - с более старого трюка, typosquatting (опечатка + захват). Атакующий регистрирует в PyPI, npm или другом репозитории пакет с именем, почти неотличимым от популярного - на одну букву, на дефис, на порядок слов. Классика: в декабре 2019 в PyPI нашли jeIlyfish - настоящий jellyfish, только строчная l заменена на заглавную I, визуально похожую в большинстве шрифтов. Пакет воровал SSH- и GPG-ключи. Рядом ехал python3-dateutil под python-dateutil; в npm похожая история - crossenv вместо cross-env (2017).

Внутри - вредоносный код, который срабатывает в момент установки, ещё до того, как вы обратились к пакету. Достаточно опечататься при установке зависимости - и всё, попался, голубчик.

Дальше - расчёт на человеческий фактор: кто-то опечатался вручную, кто-то скопировал команду из туториала с опечаткой. Охотиться за конкретной жертвой не нужно - зарегистрировал похожие имена под топовые пакеты и жди, кто ошибётся.

Slopsquatting - тот же трюк с апгрейдом под эпоху AI-кодинга. Когда LLM пишет вам код, она время от времени советует import библиотеки или pip install, которой на самом деле не существует - модель её выдумала, потому что название звучит правдоподобно.

Раньше на это смотрели как на безобидный баг: заметишь, попросишь исправить, и всё. Но в 2025-м исследователи UTSA опубликовали работу на USENIX Security: 16 моделей, 576 тыс. сэмплов на Python и JS. Результат - 19,7% рекомендованных пакетов не существовало.

Результаты правда относятся к моделям предыдущего поколения, актуальных метрик пока нет. Но нам интересно другое: 500 галлюцинирующих промптов прогнали по десять раз каждый. 43% выдуманных имён повторялись во всех десяти прогонах, ещё 58% - больше одного раза. Список фейковых имён воспроизводимый, а не случайный.

А воспроизводимость - подарок для атакующего. Не нужно брутфорсить: достаточно позадавать модели типичные вопросы вроде «напиши скрипт парсинга CSV», собрать частые несуществующие названия и зарегистрировать их с вредоносной начинкой. Дальше сценарий тот же: разработчик видит незнакомую библиотеку, не всегда успевает загуглить - и ставит то, что подсунула модель.

Это не теория. В 2024-м Бар Ланьядо из Lasso Security зарегистрировал пакет-пустышку huggingface-cli, который модели упорно советовали. За три месяца - больше 15 тысяч загрузок, а pip install huggingface-cli заехал в README репозитория Alibaba GraphTranslator. Никакого взлома - люди просто ставили то, что продиктовал ИИ.

Второй случай свежее и неприятнее: в январе 2026-го Чарли Эриксен (Aikido Security) заметил, что LLM склеила jscodeshift и react-codemod в несуществующий react-codeshift. Имя попало в коммит с 47 сгенерированными Agent Skills и через форки разошлось по 237 репозиториям - никто не вычитывал. Эриксен зарегистрировал пакет превентивно и сразу увидел загрузки. По его словам, вектором атаки это не стало только потому, что он успел первым.

Почему это стало проблемой именно сейчас:

  • AI-агенты стали привычным способом писать рутинный код, и вопрос «а точно ли существует эта библиотека?» многие перестали задавать в принципе;

  • галлюцинации разных моделей пересекаются - есть 127 имён пакетов (109 в PyPI, 18 в npm), которые независимо выдумывают сразу несколько ведущих моделей. Один зарегистрированный пакет ловит пользователей всех сразу;

  • репозитории пакетов по-прежнему пускают регистрировать что угодно и от кого угодно, никак не проверяя, зачем вам это имя.

Короче: slopsquatting - история про то, как одна безобидная особенность модели превращается в готовый вектор атаки. Старый как мир supply-chain риск получил новый, куда более дешёвый вход.

Пользуясь случаем, пришлашаю в мой Telegram-канал.

Теги:
0
Комментарии0

Публикации