Се­год­ня с ноги вло­мим­ся в мир пен­теста ИИ. Я нашел для тебя клас­сные тул­зы для авто­мати­чес­кого тес­тирова­ния боль­ших язы­ковых моделей и нес­коль­ко отличных лабора­тор­ных работ, что­бы ты мог отра­ботать навыки как авто­мати­чес­кого, так и руч­ного тес­тирова­ния ней­ронок.

Про­цесс тес­тирова­ния ИИ боль­ше похож на соци­аль­ную инже­нерию, чем на тех­ничес­кий взлом. Как телефон­ный мошен­ник убеж­дает жер­тву перевес­ти день­ги на «безопас­ный счет», так и хакер убеж­дает ней­росеть «безопас­но» показать сек­ретные дан­ные.

Ав­томати­зация в таких усло­виях дол­жна быть пос­тро­ена тон­ко. Приш­лось хорошень­ко покопать­ся, что­бы най­ти дос­той­ные инс­тру­мен­ты. Кро­ме эффектив­ности, я ори­енти­ровал­ся еще на два тре­бова­ния: инс­тру­мент дол­жен быть бес­плат­ным, в том чис­ле работать без под­писок на ней­росети; тре­бова­ния к ресур­сам компь­юте­ра дол­жны быть минималь­ными. Не все сидят на топовом железе и могут сво­бод­но запус­кать нес­коль­ко ней­росетей — одну для тес­та, еще одну или нес­коль­ко для атак.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

 

Тестовые среды

Ка­кой смысл в тул­зах, если их нель­зя сра­зу исполь­зовать? Я под­готовил нес­коль­ко вари­антов тес­тового стен­да, которые ты смо­жешь раз­вернуть пря­мо на сво­ей машине.

Для тес­тов в статье будем исполь­зовать инте­рак­тивную пе­соч­ницу DVAIA. При­ложе­ние похоже на DVWA, но спе­циаль­но соз­дано для обу­чения ата­кам на LLM- и RAG-сис­темы. Оно рас­счи­тано на руч­ное тес­тирова­ние, но какая, в сущ­ности, раз­ница?

info

RAG (Retrieval-Augmented Generation, «генера­ция, допол­ненная поис­ком») — это тех­нология, улуч­шающая отве­ты LLM (язы­ковых моделей) за счет пре­дос­тавле­ния им акту­аль­ных внеш­них дан­ных. Сис­тема ищет релеван­тную информа­цию в базе зна­ний (докумен­тах, базах дан­ных) и под­став­ляет ее в зап­рос модели, что повыша­ет точ­ность и сни­жает количес­тво гал­люцина­ций.

DVAIA базиру­ется на Ollama, работа­ет локаль­но, нет нуж­ды под­клю­чать какие‑то API. Но тебе пот­ребу­ется сов­ремен­ный про­цес­сор, который под­держи­вает инс­трук­ции AVX2. Опе­ратив­ной памяти — минимум 8 Гбайт, но луч­ше 16 Гбайт. Понадо­бит­ся и мес­то на дис­ке. Ну а наличие GPU зна­читель­но уско­рит работу. Чем хуже твои железя­ки, тем мед­леннее работа­ет ней­рон­ка и тем боль­ше вре­мени нуж­но на каж­дый тест.

Плюс этой лабы — в раз­нооб­разном наборе уяз­вимос­тей. Есть клас­сичес­кая инъ­екция пром­пта для отра­бот­ки джей­лбрей­ков и попыток под­нять при­виле­гии. Сек­ция Document Injection нуж­на, что­бы ты порабо­тал над сво­им навыком атак через заг­рузку фай­лов: PDF, DOCX, изоб­ражений с OCR. В Web Injection можешь под­ложить вре­донос­ный URL. Про­буй RAG и инъ­екцию через шаб­лоны. Корот­ко — пол­ноцен­ная сре­да для апа навыков.

Ус­танов­ка и запуск DVAIA:

git clone https://github.com/genbounty/DVAIA.git
cd DVAIA
sudo ./run-docker.sh

Дож­дись сооб­щения success.

Уяз­вимое при­ложе­ние дос­тупно по адре­су http://127.0.0.1:5000. Открой его в бра­узе­ре, и уви­дишь пол­ноцен­ное веб‑при­ложе­ние, написан­ное на Flask. Уяз­вимос­ти раз­биты по типам, перек­лючение — через левое меню.

Веб-морда DVAIA
Веб‑мор­да DVAIA

Есть и дру­гие лабы и модели, нап­равлен­ные на обу­чение пен­тесту ИИ. Если толь­ко вка­тыва­ешь­ся в тес­тирова­ние LLM, есть неболь­шой набор лаб на PortSwigger. На сегод­ня их все­го четыре, но, прой­дя их, получишь базовые навыки.

 

DVLA

Поп­ракти­ковать­ся в ата­ках на чат‑бота можешь в Damn Vulnerable LLM Agent. Подоб­ный про­ект исполь­зовал­ся как CTF на кон­ферен­ции BSides London 2023. Он пос­тро­ен на архи­тек­туре ReAct (Reasoning + Acting). Запус­кать лабу можешь как с под­клю­чени­ем к OpenAI, так и с моделя­ми с Hugging Face или локаль­но с Ollama. Для работы с OpenAI или HF в файл .env про­пиши акту­аль­ные клю­чи API.

Пе­ред уста­нов­кой лабы раз­верни Ollama. Учти, что для DVAIA ты уста­нав­ливал все в вир­туаль­ном окру­жении. DVLA работа­ет в сво­ем вир­туаль­ном окру­жении. Поэто­му при­дет­ся уста­новить Ollama сно­ва.

git clone https://github.com/ReversecLabs/damn-vulnerable-llm-agent.git
cd damn-vulnerable-llm-agent/
python3 -m venv env
source env/bin/activate
# Виртуальное окружение создано и активировано, установи Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Проверь версию
ollama --version
ollama pull mistral-nemo
cp .env.ollama.template .env
vim .env

В .env поп­равь:

model_name="ollama-mistral-nemo"
OLLAMA_HOST=http://localhost:11434

Про­дол­жи уста­нов­ку лабы:

pip install -r requirements.txt
pip install python-dotenv

За­пуск лабы:

python -m streamlit run main.py

Скрипт спро­сит email — вве­ди любой. При­ложе­ние авто­мати­чес­ки откро­ется в бра­узе­ре.

Запущенное приложение Damn Vulnerable LLM Agent
За­пущен­ное при­ложе­ние Damn Vulnerable LLM Agent
 

Folly

Неп­лохой вари­ант для тре­ниров­ки навыков — Folly. Это инс­тру­мент для тес­тирова­ния устой­чивос­ти LLM к инъ­екци­ям пром­птов и джей­лбрей­кам. Он пос­тро­ен вок­руг биб­лиоте­ки заданий, вро­де «извлечь сек­рет SECRET123».

К Folly под­клю­чает­ся любая модель — нап­рямую или через API. Собс­твен­ной LLM нет. Берешь и тес­тиру­ешь реаль­ную живую модель, пыта­ешь­ся ее взло­мать. Для это­го у Folly есть свой UI в вебе, CLI и API. Нап­ример, ста­рень­кая Llama подой­дет иде­аль­но.

Ус­танов­ка:

git clone https://github.com/user1342/folly.git
cd folly
pip install -e .
 

Garak

Это опен­сор­сный фрей­мворк, раз­работан­ный в Nvidia. В арсе­нале Garak более 50 клас­сов атак (prompt injection, jailbreak, hallucination, toxicity и про­чие), вклю­чающих более 160 проб. Мно­го детек­торов для оцен­ки успешнос­ти ата­ки. При тес­тирова­нии при­меня­ются мно­гок­ратные зап­росы, что поз­воля­ет убе­дить­ся в надеж­ности обна­ружен­ной уяз­вимос­ти.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии