Исследователи безопасности из компании по управлению киберрисками Vulcan.io опубликовали доказательство концепции, демонстрирующее, как хакеры могут использовать ChatGPT 3.5 для распространения вредоносного кода из доверенных репозиториев.
Исследование обращает внимание на риски безопасности, связанные с использованием предложенных ChatGPT решений для кодирования.
Содержание
методология
Исследователи собрали часто задаваемые вопросы по кодированию на Stack Overflow (форум вопросов и ответов по кодированию).
Они выбрали 40 предметов программирования (таких как синтаксический анализ, математика, технологии парсинга и т. д.) и использовали первые 100 вопросов по каждому из 40 предметов.
Следующим шагом была фильтрация вопросов «как сделать», которые содержали пакеты программирования в запросе.
Задаваемые вопросы были связаны с Node.js и Python.
Vulcan.io объясняет:
«Все эти вопросы были отфильтрованы с использованием языка программирования (node.js, python, go), включенного в вопрос. Собрав множество часто задаваемых вопросов, мы сузили список до вопросов «как сделать».
Затем мы задали ChatGPT все вопросы, которые собрали через его API.
Мы использовали API, чтобы воспроизвести подход злоумышленника, чтобы получить как можно больше рекомендаций по несуществующим пакетам за минимальное время.
В дополнение к каждому вопросу и после ответа ChatGPT мы добавили дополнительный вопрос с просьбой предоставить дополнительные пакеты, которые также отвечали на запрос.
Мы сохранили все разговоры в один файл, а затем проанализировали их ответы».
Затем они просмотрели ответы, чтобы найти рекомендации для пакетов кода, которых не существовало.
До 35% пакетов кодов ChatGPT были галлюцинациями
Из 201 вопроса о Node.js ChatGPT рекомендовал 40 пакетов, которых не существовало. Это означает, что 20% ответов ChatGPT содержали галлюцинации пакетов кода.
Что касается вопросов Python, из 227 вопросов более трети ответов состояли из галлюцинаций пакетов кода, а 80 пакетов не существовало.
На самом деле общее количество невыпущенных пакетов было еще больше.
Исследователи зафиксировали:
«В Node.js мы задали 201 вопрос и обнаружили, что более чем на 40 из этих вопросов был получен ответ, содержащий как минимум один пакет, который не был опубликован.
Всего мы получили более 50 невыпущенных пакетов npm.
В Python мы задали 227 вопросов, и на более чем 80 из этих вопросов мы получили как минимум один невыпущенный пакет, что в общей сложности составляет более 100 невыпущенных пакетов pip».
Подтверждение концепции (PoC)
Далее следует доказательство концепции. Они взяли имя одного из несуществующих пакетов кода, которые должны были находиться в репозитории NPM, и создали в этом репозитории пакет с тем же именем.
Загруженный ими файл не был вредоносным, но сообщалось, что его кто-то установил.
Вы пишете:
«Программа отправляет на сервер злоумышленника имя хоста устройства, пакет, из которого оно пришло, и абсолютный путь к каталогу, содержащему файл модуля…»
Затем пришла «жертва», задавшая тот же вопрос, что и злоумышленник, и порекомендовавшая пакет, содержащий «вредоносный» код, и способ его установки в ChatGPT.
И действительно пакет установлен и активирован.
Исследователи объяснили, что произошло дальше:
«Жертва устанавливает вредоносный пакет в соответствии с рекомендациями ChatGPT.
Злоумышленник получает данные от жертвы на основе нашего предустановочного вызова node index.js по длинным именам хостов».
Серия изображений для проверки концепции показывает детали установки ничего не подозревающим пользователем.
Как защитить себя от плохих решений для кодирования ChatGPT
Перед загрузкой и установкой пакета исследователи рекомендуют искать признаки того, что пакет может быть вредоносным.
Обратите внимание на такие вещи, как дата создания, количество загрузок, отсутствие положительных комментариев и отсутствие прикрепленных заметок библиотеки.
Является ли ChatGPT надежным?
ChatGPT не обучен давать правильные ответы. Он обучен давать ответы, которые звучат правильно.
Это исследование показывает последствия такого обучения. Это означает, что очень важно проверить правильность всех фактов и рекомендаций ChatGPT, прежде чем использовать его.
Не просто примите, что результат хороший, проверьте его.
Особенно при кодировании может быть полезно быть особенно осторожным перед установкой рекомендуемых пакетов ChatGPT.
Ознакомьтесь с оригинальной исследовательской документацией:
Можно ли доверять рекомендациям пакета ChatGPT?
Избранное изображение от Shutterstock/Roman Samborskyi