Почему код, написанный ИИ, требует проверки человеком.
Эра инструментов для генерации кода на основе ИИ не только облегчила жизнь программистам, но и создала новые угрозы для безопасности ПО. Проблема заключается в «галлюцинациях» искусственного интеллекта — способности ИИ-ассистентов придумывать несуществующие имена программных пакетов.
Ранее исследователи уже замечали, что инструменты для автоматической генерации кода часто предлагают использовать библиотеки, которых не существует. Согласно последнему исследованию, около 5,2% предложенных коммерческими ИИ-моделями пакетов являются выдуманными. Для открытых моделей этот показатель значительно выше — 21,7%.
Обычно попытка запустить код с вымышленным пакетом заканчивается ошибкой. Но злоумышленники быстро поняли, как извлечь выгоду из этой ситуации. Достаточно загрузить вредоносный пакет с таким же названием в общедоступный репозиторий, например PyPI или npm. В следующий раз, когда ИИ-ассистент предложит это название, вредоносное ПО автоматически загрузится на компьютер пользователя при установке зависимостей.
Исследования показывают , что «галлюцинации» названий пакетов возникают неслучайно: некоторые названия стабильно появляются снова и снова, в то время как другие могут исчезнуть навсегда. Например, при десятикратном повторе одних и тех же запросов, 43% несуществующих названий появлялись каждый раз, а 39% больше не появлялись никогда.
Такой подход получил название « слопсквоттинг » (slopsquatting) — по аналогии с уже известным термином «тайпосквоттинг» (typosquatting), когда пользователи вводят адреса или названия пакетов с ошибками. Сет Ларсон, разработчик по безопасности в Python Software Foundation, отмечает, что масштабы проблемы пока неизвестны. Он рекомендует тщательно перепроверять любые результаты, полученные от ИИ-ассистентов, прежде чем использовать их на практике.
Причины, по которым разработчики могут пытаться установить несуществующие пакеты, различны: от простых опечаток до попыток использовать внутренние названия, совпадающие с публичными.
Феросс Абухадидже, глава компании Socket, считает , что влияние ИИ на кодирование стало настолько сильным, что разработчики теперь полностью доверяются его подсказкам, не задумываясь. Это ведет к массовому распространению «фантомных» пакетов, названия которых выглядят реалистично, но на деле не существуют. Более того, такие пакеты нередко сопровождаются убедительными описаниями, поддельными репозиториями GitHub и даже блогами, создающими ложное впечатление подлинности.
Еще одна проблема — ИИ, используемый для генерации кратких описаний в поисковиках. Нередко Google на полном серьезе советует установить пакет, который в действительности является подделкой, поскольку просто копирует информацию с его страницы на PyPI или npm, без какого-либо критического анализа.
В январе этого года произошел громкий случай, когда Google Overview порекомендовал вредоносный пакет @async-mutex/mutex вместо реального async-mutex. Также недавно стало известно, что хакер под псевдонимом «_Iain» опубликовал на даркнет-форумах подробные инструкции по созданию ботнета с помощью вредоносных npm-пакетов. Причем для автоматизации этого процесса он активно использовал ChatGPT.
Python Software Foundation в курсе проблемы и активно борется с вредоносными пакетами, создавая новые инструменты для защиты репозитория PyPI. Организация призывает всех пользователей внимательно проверять имена и содержимое пакетов перед установкой, а крупным компаниям — использовать зеркала репозиториев с заранее проверенным набором библиотек, чтобы минимизировать риск.