ИИ как новый вектор атаки на ПО через зависимости

Инструменты программирования с поддержкой искусственного интеллекта (ИИ) всё больше влияют на разработку программного обеспечения и приводят к проблеме в безопасности: генерации несуществующих имён пакетов. ИИ модели, как коммерческие, так и с открытые, иногда предлагают код с указанием пакетов, которые не существует. Согласно недавним исследованиям, это происходит в 5.2% случаев у коммерческих моделей и в 21.7% — у открытых моделей.

Обычно это приводит лишь к ошибке установки, но злоумышленники начали использовать эти “галлюцинации” в своих целях, размещая вредоносные пакеты под этими вымышленными именами в публичных репозиториях, таких как PyPI или NPM. Такая стратегия превращает галлюцинации ИИ в новый вектор атак на цепочки поставок ПО. Если ИИ-ассистент для генерации кода регулярно предлагает одно и то же несуществующее имя пакета, и злоумышленник уже загрузил под этим именем вредоносный код, разработчик может непреднамеренно установить вредоносный пакет.

Исследователи обнаружили, что “галлюцинированные” имена следуют бимодальному шаблону: одни повторяются при повторных запросах, другие исчезают навсегда. Постоянно повторяющиеся имена особенно привлекательны для атак. Эта стратегия, похожая на “тайпсквоттинг”, была названа Сетом Майклом Ларсоном из Фонда Python “слопсквоттингом” — от слова slop (бесполезный выход ИИ).


Руководитель компании Socket Феросс Абухадиджех (Feross Aboukhadijeh) указывает на культурный сдвиг в сообществе разработчиков в сторону “виб-кодинга” (vibe coding) — когда ИИ подсказки копируются без проверки. Это поведение повышает риск установки вредоносных пакетов. Иногда разработчики даже не замечают, что пакет не существует — особенно если его имя уже занято злоумышленником. Такие вредоносные пакеты часто выглядят вполне убедительно: с фальшивыми документациями, поддельными репозиториями на GitHub и даже блогами, создающими видимость легитимности.

Ситуацию усугубляет тот факт, что ИИ-системы подтверждают галлюцинации друг друга. Например, Gemini от Google уже предлагал пользователям вредоносные пакеты, описывая их как надёжные и поддерживаемые — просто повторяя информацию из поддельного README. Спешащий разработчик может не распознать угрозу, особенно если всё выглядит вполне официально и достоверно.

Отмечается случай с киберпреступником по имени “_Iain”, который на форуме в даркнете делился методами создания ботнета на основе блокчейна, используя тысячи тайпсквоттинг-пакетов в NPM. С помощью ChatGPT он автоматически сгенерировал множество имён, похожие на реальные. Также он выпускает видеоуроки по публикации пакетов и активации вредоносного кода. Это типичный пример того, как злоумышленники используют ИИ для ускорения атак на цепочки поставок ПО.

Фонд Python работает над усилением защиты от подобных угроз. Благодаря поддержке таких инициатив, как Alpha-Omega, были введены меры: API для жалоб на вредоносные пакеты, сотрудничество с другими системами безопасности и улучшенные механизмы обнаружения тайпсквоттинга. Разработчикам рекомендуется проверять имена пакетов, убедиться в их существовании и тщательно изучать содержимое перед установкой. Лучший подход — использовать локальные зеркала репозиториев, что позволяет организациям контролировать, какие пакеты доступны разработчикам.

Release. Ссылка here.