«Галлюцинации» искусственного интеллекта стали новой угрозой. Китайские корпорации уже попались
Эксперимент исследователя по информационной безопасности выявил критическую уязвимость в процессе разработки программного обеспечения - возможность генеративного искусственного интеллекта (ИИ) внедрять поддельные пакеты в реальный код. Крупные компании, Alibaba, Tencent и Baidu, включили несуществующий пакет в свою документацию.
Несуществующая библиотека
Бар Ланьядо (Bar Lanyado) из ИБ-компании Lasso Security создал несуществующую библиотеку (пакет) для Python под названием huggingface-cli. Библиотеки представляют собой набор готовых функций, классов и объектов для решения задач разработчиков. Он заметил, что модели генеративного искусственного интеллекта (ИИ) неоднократно «галлюцинировали» (термин исследователя) это имя библиотеки при запросах пользователей, то есть советовали их. Чтобы проверить, как это отразится на реальном мире, Ланьядо разместил фальшивый пакет в индексе пакетов Python (PyPI).
Компания Alibaba включила несуществующий пакет в свою документацию. В инструкции к GraphTranslator от Alibaba ошибочно указано pip install huggingface-cli как метод установки легитимного инструмента от Hugging Face. К счастью, творение Ланьядо оказалось безвредным, но потенциальные последствия его использования не радуют специалистов по информационной безопасности (ИБ).
В результате, huggingface-cli получил более 15 тыс. подлинных загрузок за те три месяца, что он был доступен. Кроме того, исследователь провел поиск на GitHub, чтобы определить, использовался ли этот пакет в репозиториях других компаний. Результаты показали, что несколько крупных компаний либо используют, либо рекомендуют этот пакет в своих репозиториях. Например, инструкции по установке этого пакета можно найти в README репозитория, посвященного исследованиям, проводимым компанией Alibaba. На начало апреля 2024 г., эта техника не была использована в реальной атаке на компании.
Новая угроза для разработчиков
Этот случай указал на новую возможность взлома для хакеров. ИИ может рекомендовать программистов несуществующие пакеты, созданные и замаскированные под необходимые инструменты для разработки злоумышленниками. Таким образом вредоносы могут проникнуть на устройства тысяч разработчиков.
Идея заключается в том, что кто-то недобросовестный может обратиться к моделям за советом по коду, а после записать придуманные пакеты, которые системы ИИ неоднократно рекомендуют. Затем внедрить эти зависимости, чтобы другие программисты, используя те же модели и получая те же предложения, в итоге использовали эти библиотеки, которые могут быть отравлены вредоносным ПО. Хакеры могут загрузить вредоносные пакеты с такими же именами в соответствующие реестры, и с этого момента им остается только ждать, пока люди загрузят эти пакеты.
У «галлюцинаций» могут быть разные причины, например, обучение систем ИИ на неточных или недостаточных данных. Возможны и недочеты в алгоритмах, которые заставляют ИИ обобщать данные неправильно и учитывать фейкововую информацию. ИТ-разработчикам стоит помнить о том, что «галлюцинации» возможны, и важные данные, полученные от ИИ, следует перепроверять.
Цель эксперимента
Готовность моделей ИИ уверенно ссылаться на несуществующие судебные дела сегодня хорошо известна и вызывает немалое смущение у адвокатов, не знающих об этой тенденции. И, как оказалось, генеративные модели ИИ будут делать то же самое с программными пакетами.
Именно это и решила проверить компания Lasso Security. Вооружившись тысячами вопросов «как сделать», Бар Ланьядо опросил четыре модели ИИ (GPT-3.5-Turbo, GPT-4, Gemini Pro aka Bard и Cohere Command) на предмет задач программирования на пяти различных языках программирования (Python, Node.js, Go, .Net и Ruby), каждая из которых имеет свою собственную систему упаковки.
Оказывается, часть имен, которые эти чат-боты извлекают, сохраняется, причем в разных моделях. А постоянство - повторение вымышленного имени - это ключ к превращению причуды ИИ в функциональную атаку. Злоумышленнику нужно, чтобы модель ИИ повторяла названия галлюцинированных пакетов в своих ответах пользователям, чтобы вредоносные программы, созданные под этими именами, были найдены и загружены.
Ланьядо выбрал случайным образом 20 вопросов для галлюцинаций с нулевым результатом и задал их по 100 раз каждой модели. Его целью было оценить, как часто название галлюцинирующего пакета остается неизменным. Результаты его теста показали, что названия сохраняются достаточно часто, чтобы это было функциональным вектором атаки, хотя и не всегда, а в некоторых упаковочных экосистемах чаще, чем в других.
По словам Ланьядо, в GPT-4 24,2% ответов на вопросы приводили к появлению галлюцинаций, из которых 19,6% были повторяющимися. В таблице, предоставленной изданию The Register, приведена более подробная разбивка ответов на GPT-4. В GPT-3.5 22,2% ответов на вопросы вызывали галлюцинации, а 13,6% повторялись. Для Gemini 64,5% вопросов вызывали выдуманные имена, из которых 14% повторялись. А в Cohere 29,1% галлюцинаций и 24,2% повторов.
Несмотря на это, экосистемы упаковки в Go и .Net построены таким образом, что ограничивают возможности эксплуатации, отказывая злоумышленникам в доступе к определенным путям и именам.
Галлюцинации ИИ
В своем блоге от 6 июня 2023 г. исследователи Vulcan Cyber рассказали о новой технике распространения вредоносных пакетов, которую они назвали «галлюцинацией пакетов ИИ». Эта техника связана с тем, что ChatGPT и другие генеративные платформы ИИ иногда отвечают на запросы пользователей галлюцинациями в виде источников, ссылок, блогов и статистики.
Большие языковые модели (Large Language Models), такие как ChatGPT, могут генерировать такие галлюцинации - URL, ссылки и даже целые библиотеки кода и функции, которых на самом деле не существует. По словам исследователей, ChatGPT даже генерирует сомнительные исправления для CVE и может предлагать ссылки на несуществующие библиотеки кода.
Директор по исследованиям в области информационной безопасности Tanium Мелисса Бишопинг (Melissa Bischoping) рассказала о том, что компаниям никогда не следует загружать и исполнять код, который они не понимают и не проверяли - например, репозитории GitHub с открытым исходным кодом.