ИИ-помощники для написания кода выдают несуществующие названия пакетов, а злоумышленники превращают эти галлюцинации в реальные риски для цепочки поставок.
Когда исследователь безопасности Бар Ланядо (Bar Lanyado) из Lasso Security попросил ИИ-инструмент для написания кода предоставить Python-клиент, модель предложила установить huggingface-cli. Этот пакет — фантом; легитимная библиотека называется huggingface_hub. Чтобы доказать опасность, Ланядо зарегистрировал поддельное имя в Python Package Index (PyPI) в качестве пустого плейсхолдера. В течение трех месяцев этот плейсхолдер набрал более 30 000 загрузок, появился в публичной документации и даже в примерах кода, извлеченных из репозиториев Alibaba.
Как фантомный пакет становится реальной угрозой
- Промпт → галлюцинация — разработчик просит ИИ о помощи. Модель, обученная на зашумленных данных из интернета, выдумывает правдоподобно звучащее название пакета.
- Копирование → документация — предложение попадает в README, ответ на Stack Overflow или внутреннюю вики. Как только название записано, оно распространяется по сообществу.
- Интеграция в код — разработчик, доверяя ИИ, добавляет название в файл requirements и отправляет его в продакшн.
Почему существующие средства защиты пропускают эту проблему
Инструменты статического анализа и сканеры уязвимостей ищут известные CVE и библиотеки с историей релизов. У только что опубликованного пакета, который до предложения ИИ не имел ни одной загрузки, нет ни CVE, ни репутации, и поэтому он кажется «чистым». Стандартная проверка «уязвима ли версия?» возвращает результат «нет», создавая у разработчиков ложное чувство безопасности.
Что доказывает этот эксперимент
- Придуманные ИИ названия попадают в продакшн — более 30 000 загрузок показывают, что разработчики действительно скачивают эти фантомные пакеты.
- Галлюцинации становятся документацией — как только поддельное имя появляется в публичном руководстве, оно может сохраняться там бесконечно долго, распространяя ошибку.
- Регистрация тривиальна — публикация пакета в PyPI ничего не стоит и занимает считанные минуты, что снижает порог для злоупотреблений в цепочке поставок.
Эффективные меры защиты
- Проверяйте каждую зависимость — прежде чем добавлять новое требование, поищите пакет в индексе и убедитесь, что его название соответствует существующей документированной библиотеке.
- Сверяйтесь с официальными источниками — сравните предложенное название с репозиторием вендора или официальным руководством по установке.
- Относитесь к новым пакетам с низким уровнем использования как к высокорисковым — помечайте для ручной проверки любую зависимость, у которой всего несколько загрузок или очень недавняя дата выпуска.
На что обратить внимание в дальнейшем
Вывод прост: предложение ИИ не является гарантией. Относитесь к каждой новой зависимости как к непроверенному стороннему компоненту, проверяйте её происхождение и следите за цепочкой поставок, прежде чем допустить попадание фантомного пакета в продакшн.
