_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
Изучите безопасность ИИ, пройдя ряд уязвимых задач LLM CTF. Никакой регистрации, никакой платы за использование облака, все работает локально в вашей системе.
Многие компании начали создавать программное обеспечение, которое интегрируется с моделями большого языка (LLM) искусственного интеллекта, благодаря выпуску ChatGPT и других механизмов. Этот взрыв интереса привел к быстрому развитию систем, которые вновь вводят старые уязвимости и создают новые классы менее понятных угроз. Многие команды безопасности компаний, возможно, не полностью оснащены и занимаются безопасностью LLM, поскольку эта область все еще развивается с помощью инструментов и учебных ресурсов.
Я разработал AI Goat, чтобы узнать о разработке LLM и рисках безопасности, с которыми сталкиваются компании, использующие его. Формат CTF — отличный способ для исследователей безопасности получить практический опыт и узнать, насколько эти системы уязвимы и могут быть использованы. Благодарим вас за интерес к этому проекту и надеюсь, вам понравится!
Топ-10 OWASP для приложений LLM — отличное место, чтобы начать изучать угрозы безопасности LLM и способы их устранения. Я рекомендую вам внимательно прочитать этот документ, поскольку многие концепции рассматриваются в AI Goat, и в нем содержится потрясающее описание того, с чем вы столкнетесь при решении задач.
Помните, что механизм LLM, заключенный в веб-приложение, размещенное в облачной среде, будет подвергаться тем же традиционным угрозам безопасности облака и веб-приложений. В дополнение к этим традиционным угрозам проекты LLM также будут подвергаться следующему неполному списку угроз:
AI Goat использует Vicuna LLM, созданный на основе LLaMA Meta и связанный с данными ответов ChatGPT. При установке AI Goat двоичный файл LLM загружается с HuggingFace локально на ваш компьютер. Этот двоичный файл размером примерно 8 ГБ — это механизм искусственного интеллекта, вокруг которого строятся задачи. Двоичный файл LLM по существу принимает входной «подсказку» и выдает выходной «ответ». Приглашение состоит из трех элементов, объединенных в строку. Этими элементами являются: 1. Инструкции; 2. Вопрос; и 3. Ответ. Элемент «Инструкции» состоит из описанных правил для LLM. Они предназначены для описания LLM того, как он должен себя вести. Элемент «Вопрос» — это место, где большинство систем допускают ввод данных пользователем. Например, комментарий, введенный в чат, будет помещен в элемент «Вопрос». Наконец, раздел «Ответ» предписывает, чтобы LLM дал ответ на вопрос.
Предварительно созданный образ Docker, ai-base, содержит все библиотеки, необходимые для запуска LLM и задач. Этот контейнер загружается в процессе установки вместе с двоичным файлом LLM. Компоновка докера, которая запускает каждое задание, прикрепляет двоичный файл LLM, конкретные файлы заданий и предоставляет TCP-порты, необходимые для выполнения каждого задания. Инструкции по началу работы см. в разделах установки и настройки.
Был подготовлен дополнительный контейнер CTFd, который включает в себя описание каждой задачи, подсказки, категории и отправленные флаги. Образ контейнера размещается в нашем DockerHub и называется ai-ctfd вместе с образом ai-base. Контейнер ai-ctfd можно запустить из файла ai-goat.py и получить к нему доступ через браузер.
sudo apt install git -y
sudo apt install python3-pip -y
sudo usermod -aG docker $USER
reboot
git clone https://github.com/dhammon/ai-goat
cd ai-goat
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
В этом разделе предполагается, что вы уже выполнили шаги Installation
.
Использование ai-ctfd предоставляет вам список всех задач и отправку флагов. Это отличный инструмент, который можно использовать самостоятельно или при размещении CTF. Использование его индивидуально дает вам карту задач и помогает отслеживать, какие задачи вы выполнили. Он предлагает отправку флага для подтверждения выполнения задания и может давать подсказки, которые подтолкнут вас в правильном направлении. Контейнер также можно запустить и разместить на внутреннем сервере, где вы сможете разместить свой собственный CTF для группы энтузиастов безопасности. Следующая команда запускает ai-ctfd в фоновом режиме и доступна через порт 8000:
./ai-goat.py --run ctfd
Важно: после запуска необходимо создать пользователя, зарегистрировав учетную запись пользователя. Эта регистрация остается локальной в контейнере и не требует реального адреса электронной почты.
Вы можете изменить флаги в исходном коде задач, а затем в CTFD (они должны совпадать).
ai-goat/app/challenges/1/app.py
и измените флаг в строке в строке 12.ai-goat/app/challenges/2/entrypoint.sh
и измените флаг в строке 3../ai-goat.py --run ctfd
и откройте браузер по адресу http://127.0.0.1:8000
), а затем войдите в систему под учетной записью пользователя root
, используя qVLv27Dsy5WuXRubjfII
в качестве пароля.Веселиться!
См. раздел Challenges
для описания каждой задачи или посетите веб-страницу ai-ctfd, начиная с Step 1
. Следующая команда запускает первый вызов:
./ai-goat.py --run 1
Контейнер задачи запустится в фоновом режиме и предоставит инструкции о том, как взаимодействовать с задачей. У каждого испытания есть флаг, который представляет собой строку, заключенную в фигурные скобки. Например: {eXampl3F!ag}
. Вы проверяете флаг, отправляя запрос на предмет на странице ai-ctfd.
Важно: иногда LLM составляют значение флага, поэтому обязательно проверьте флаг в ai-ctfd ;)
Важно: ответ LLM может занять около 30 секунд.
./ai-goat.py --run
. Эта команда перезапустит контейнер, если он уже запущен.docker container ps
. Чтобы остановить контейнер: docker stop
. Основная ветка всегда будет содержать последнюю версию. Исторические версии будут храниться в соответствующих ветках. Инструкции по обновлению:
cd ai-goat
git pull
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
Важно: ai-ctfd фактически запустится с нуля, поэтому обязательно создайте нового пользователя и при необходимости повторно отправьте/повторите все предыдущие задачи.
Успешные атаки с быстрым внедрением заставляют LLM отвечать информацией, которую они не предназначены для разглашения. В этом задании чат-бот с искусственным интеллектом, работающий на порту 9001, хранит флаг в секрете, и ему было предложено не выдавать его. Сможете ли вы убедить или обмануть бота, чтобы тот отдал вам флаг?
./ai-goat.py -r 1
LLM01: Немедленные инъекции | LLM07: Утечка данных
Выходным данным системы LLM не следует доверять, особенно если эти выходные данные используются в последующих операциях, таких как команды ОС или сетевые вызовы. В этом задании используется еще один чат-бот с искусственным интеллектом, работающий на порту 9002, который принимает вопрос пользователя и возвращает название веб-сайта. Пользовательский ввод преобразуется чат-ботом в URL-адрес, где он используется для запроса источника этого сайта при копировании заголовка. К чему еще этот чат-бот может иметь доступ к сети?
./ai-goat.py -r 2
LLM02: Небезопасная обработка вывода
Последняя версия является основной веткой. Вы можете найти версию в файле CHANGELOG.md
. Ветки создаются для каждой соответствующей версии.
Двигатель CTF: CTFD
Автор: ejm97 на ascii.co.uk
Технология контейнеров ИИ: