ИИ-помощники для написания кода выдают несуществующие названия пакетов, а злоумышленники превращают эти галлюцинации в реальные риски для цепочки поставок.

Когда исследователь безопасности Бар Ланядо (Bar Lanyado) из Lasso Security попросил ИИ-инструмент для написания кода предоставить Python-клиент, модель предложила установить huggingface-cli. Этот пакет — фантом; легитимная библиотека называется huggingface_hub. Чтобы доказать опасность, Ланядо зарегистрировал поддельное имя в Python Package Index (PyPI) в качестве пустого плейсхолдера. В течение трех месяцев этот плейсхолдер набрал более 30 000 загрузок, появился в публичной документации и даже в примерах кода, извлеченных из репозиториев Alibaba.

Как фантомный пакет становится реальной угрозой

  1. Промпт → галлюцинация — разработчик просит ИИ о помощи. Модель, обученная на зашумленных данных из интернета, выдумывает правдоподобно звучащее название пакета.
  2. Копирование → документация — предложение попадает в README, ответ на Stack Overflow или внутреннюю вики. Как только название записано, оно распространяется по сообществу.
  3. Интеграция в код — разработчик, доверяя ИИ, добавляет название в файл requirements и отправляет его в продакшн.

Почему существующие средства защиты пропускают эту проблему

Инструменты статического анализа и сканеры уязвимостей ищут известные CVE и библиотеки с историей релизов. У только что опубликованного пакета, который до предложения ИИ не имел ни одной загрузки, нет ни CVE, ни репутации, и поэтому он кажется «чистым». Стандартная проверка «уязвима ли версия?» возвращает результат «нет», создавая у разработчиков ложное чувство безопасности.

Что доказывает этот эксперимент

  • Придуманные ИИ названия попадают в продакшн — более 30 000 загрузок показывают, что разработчики действительно скачивают эти фантомные пакеты.
  • Галлюцинации становятся документацией — как только поддельное имя появляется в публичном руководстве, оно может сохраняться там бесконечно долго, распространяя ошибку.
  • Регистрация тривиальна — публикация пакета в PyPI ничего не стоит и занимает считанные минуты, что снижает порог для злоупотреблений в цепочке поставок.

Эффективные меры защиты

  • Проверяйте каждую зависимость — прежде чем добавлять новое требование, поищите пакет в индексе и убедитесь, что его название соответствует существующей документированной библиотеке.
  • Сверяйтесь с официальными источниками — сравните предложенное название с репозиторием вендора или официальным руководством по установке.
  • Относитесь к новым пакетам с низким уровнем использования как к высокорисковым — помечайте для ручной проверки любую зависимость, у которой всего несколько загрузок или очень недавняя дата выпуска.

На что обратить внимание в дальнейшем

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