Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Manipulating-Web-Agents | Kitploit
Инструменты/GitHubGitHub/sej2020/manipulating-web-agents
ЭксплуатацияВеб-безопасностьСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИСостязательная Атака
GitHubsej2020/manipulating-web-agents

Manipulating-Web-Agents

Репозиторий
631 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Манипуляция автономными LLM-веб-агентами с помощью атак непрямой инъекции промптов

С повсеместным распространением приложений, интегрированных с LLM, исследование потенциальных рисков безопасности имеет решающее значение. Одна из наиболее значимых уязвимостей таких систем — подверженность враждебным атакам через непрямую инъекцию промптов. В этом репозитории мы показываем метод, с помощью которого злоумышленник может создать универсальный триггер, позволяющий управлять действиями удалённого веб-агента навигации на основе LLM. Мы надеемся, что представленная информация поможет практикам осознать свою потенциальную уязвимость и вдохновит исследователей на разработку защитных мер против атак такого рода.

Установка

После клонирования этого репозитория для настройки инфраструктуры веб-навигации из Browser Gym потребуется выполнить следующие команды:

root@kitploit:~
conda create -n browser-gym
conda init
conda activate browser-gym
pip install browsergym-core
playwright install chromium
pip install transformers

Детали могут различаться в зависимости от вычислительного окружения.

Если вы заинтересованы в запуске процедуры оптимизации универсального триггера, вам потребуется сгенерировать набор данных веб-сайтов и целей веб-навигации. Это можно сделать с помощью команд, предоставляемых файлом src/actions/mask_dataset.py. Также вам нужно будет создать некоторые API-ключи и хранить их в безопасном окружении.

  1. Выполните pip install python-dotenv, а затем touch .env
  2. Сохраните в файле ключ OpenAI API, а также информацию для Google Programmable Search Engine. Следуйте инструкциям из первого раздела этой ссылке, чтобы настроить свою поисковую систему. Синтаксис вашего файла '.env' должен быть следующим:
    root@kitploit:~
    OPENAI_API_KEY=<key>
    GOOGLE_API_KEY=<key>
    GOOGLE_ENGINE_NAME=<name>
    GOOGLE_CX=<engine ID>
    
  3. Выполняйте python -m src.dataset.actions.make_dataset get_webs, пока в вашей папке data не появится достаточное количество json-файлов веб-сайтов.
  4. Выполните python -m src.dataset.actions.make_dataset set_goals, чтобы отфильтровать json-файлы для заблокированных веб-сайтов, сбалансировать классы сайтов и отправить пакетное задание в OpenAI API для генерации объектов целей для оставшихся веб-сайтов. Если у вас более 10 000 json-файлов веб-сайтов, следует добавить флаг --n_batch_splits <int>.
  5. При выполнении команды set_goals идентификаторы пакетов будут выведены в терминал. Выполните python -m src.dataset.actions.make_dataset get_goals --batch_ids <batch ID 1> <batch ID 2> ..., чтобы записать объекты целей в соответствующие json-файлы веб-сайтов, если пакетные задания завершены. Пакетное задание может выполняться до 24 часов, поэтому, возможно, придётся подождать день, прежде чем эта команда выполнится успешно.

Запуск демонстрации 1

Демонстрация №1 показывает, как злоумышленник может разместить веб-сайт с вредоносным ПО, встроенным в ссылку, и заставить веб-агента навигации каждый раз кликать по этой ссылке. Json веб-сайта и триггер для управления выходными данными веб-агента хранятся в папках data/ и triggers/ соответственно.

Контроль

Запуск python -m src.attack.actions.run_demo откроет браузер с примером веб-страницы и интерфейсом LLM-чата. LLM-чат попросит вас указать цель для веб-агента навигации. Введите в окне задачу, например «Search for a flight to Chicago». Агент выполнит задачу на вкладке с примером веб-страницы, как и ожидалось.

Атака

Выполните python -m src.attack.actions.run_demo --trigger_json triggers/zzz_travel_ad_demo_1_trigger_uni_secondary.json, чтобы атаковать веб-агента навигации в этой задаче. Браузер будет запущен с примером веб-страницы и интерфейсом LLM-чата, как и раньше, и, как и раньше, пожалуйста, введите какую-либо цель в окне чата. Процесс будет идентичен контрольному, с единственным отличием: триггер из файла zzz_travel_ad_demo_1_trigger_uni_secondary.json будет вставлен в скрытую ссылку на веб-сайте. Вы должны увидеть, что на этот раз веб-агент игнорирует указанную вами инструкцию и кликает по рекламному объявлению в нижнем колонтитуле!

Оптимизация собственного враждебного триггера

Чтобы оптимизировать враждебный триггер для управления выходными данными веб-агента навигации на выбранном вами веб-сайте, вы можете воспользоваться файлом find_narrow_trigger.py. После того как вы сгенерировали json веб-сайта с помощью утилиты создания набора данных, вы можете вставить текст '{optim_str}' в какое-либо место в ax tree. Это сообщает библиотеке nanogcg, которую мы будем использовать, что вы хотите вставить триггер в этом месте веб-сайта.

  1. Выполните pip install nanogcg
  2. Примите условия использования моделей Llama/Mistral на Hugging Face и создайте токен доступа в настройках.
  3. Вставьте '{optim_str}' в объект ax_tree в json данных веб-сайта по вашему выбору.
  4. Выполните python -m src.attack.actions.find_narrow_trigger. Параметры и флаги этой утилиты командной строки приведены ниже:
root@kitploit:~
-h, --help            show this help message and exit
--json JSON           File and path for the JSON file to find a trigger for.
--target TARGET       The desired output when triggered.
--device DEVICE       Device to run the model on.
--trigger_length TRIGGER_LENGTH
--include_target, --no-include_target
--loss_fn {cw,mm,ce}
--search_width SEARCH_WIDTH
--top_k TOP_K
--model {mistral-7B,mistral-24B,llama2,llama3}
                    The model to use for generation.
--dtype DTYPE         Data type to use for the model.

Чтобы атака работала в нашем окружении, целью вашей оптимизации должна быть функция в пространстве действий веб-навигации Browser Gym. Обратитесь к файлу action_space.txt.

Оптимизированный триггер будет сохранён в json-файле в папке triggers/, причём имя файла будет соответствовать соответствующему json данных веб-сайта. Вы можете использовать этот триггер для запуска собственной демонстрации с помощью утилиты python -m src.attack.actions.run_demo с соответствующими флагами.

Скачать инструмент