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

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

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

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

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

Категории

Все категории
Loading categories
better_opts_attacks — Attack framework для взлома защит от prompt injection, основанных на fine-tuning (SecAlign, SecAlign++, StruQ), с использованием архитектурно-зависимых adversarial-атак на LLM. | Kitploit
Инструменты/GitHubGitHub/nishitvp/better_opts_attacks
Фреймворки для эксплойтовАнализ уязвимостейRed TeamingБезопасность ИИСостязательная Атака
GitHubnishitvp/better_opts_attacks

better_opts_attacks

Attack framework для взлома защит от prompt injection, основанных на fine-tuning (SecAlign, SecAlign++, StruQ), с использованием архитектурно-зависимых adversarial-атак на LLM.

Репозиторий
113126 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Могу ли я попросить вашего внимания? Взлом защит от prompt-инъекций на основе тонкой настройки с помощью атак, учитывающих архитектуру

Этот репозиторий содержит код для запуска атак ASTRA и ASTRA++, которые взламывают SecAlign++, SecAlign, StruQ. В этом репозитории также приведены некоторые примеры сгенерированных атак и журналы атак.

Установка

Клонирование репозитория

Эта команда клонирует репозиторий вместе со всеми сабмодулями в нужное место.

git clone --recurse-submodules https://github.com/nishitvp/better_opts_attacks.git

Настройка окружения Python

Кодовая база не использует каких-либо особых пакетов Python, помимо стандартного набора пакетов, связанных с LLM и глубоким обучением. Чтобы установить зависимости, выполните

python3 -m pip install -r requirements.txt

— это должно установить необходимые пакеты в ваше окружение.

Загрузка моделей

  1. Сначала загрузите базовые модели с HuggingFace (некоторые из них могут быть ограничены доступом, и вам потребуется получить разрешение от HuggingFace).

    hf login --token ${HF_PASSWORD}
    hf download meta-llama/Meta-Llama-3-8B-Instruct --local-dir secalign_refactored/secalign_models/meta-llama/Meta-Llama-3-8B-Instruct
    hf download mistralai/Mistral-7B-Instruct-v0.1 --local-dir secalign_refactored/secalign_models/mistralai/Mistral-7B-Instruct-v0.1
    hf download meta-llama/Llama-3.1-8B-Instruct --local-dir secalign_refactored/secalign_models/meta-llama/Llama-3.1-8B-Instruct
    hf download facebook/Meta-SecAlign-8B --local-dir secalign_refactored/secalign_models/Meta-SecAlign-8B
    
  2. Загрузите адаптеры SecAlign и модели StruQ. Для этого есть полезный скрипт, который загружает и распаковывает всё в нужное место.

    python3 setup_scripts/download_models.py
    

    При запуске из корня проекта этот скрипт должен загрузить и распаковать нужные модели в правильное место. Чтобы проверить, убедитесь, что в secalign_refactored/secalign_models есть три папки huggyllama, meta-llama и mistralai, каждая из которых должна содержать сами модели.

Запуск ASTRA для сильного противника, знающего контекст

Для запуска ASTRA для сильного противника, знающего контекст, ключевым скриптом является experiment.py. Этот скрипт берёт 40 примеров из набора данных AlpacaFarm, внедряет полезную нагрузку Print exactly 'Hacked!' с заданной конфигурацией и запускает ASTRA, а также базовый метод (GCG), контролируя инициализацию (случайную), количество прямых проходов, итераций и т.д.

Пользователь может управлять следующими параметрами, задавая их как параметры командной строки при вызове experiment.py:

  1. --model-name: возможные значения: meta-llama, meta-llama-instruct, mistralai, mistralai-instruct, huggyllama.

  2. --defense: возможные значения: undefended, struq и secalign. Значение по умолчанию — secalign. Параметр --model-name вместе с параметром --defense однозначно определяют конкретную используемую модель согласно таблице ниже.

    --model-name--defenseЗагружаемая модель
    meta-llama-instructsecalignАдаптеры SecAlign с предварительно инструкционно-настроенной Meta-Llama-3-8B-Instruct
    mistralai-instructsecalignАдаптеры SecAlign с предварительно инструкционно-настроенной Mistral-7B-Instruct-v0.1
    meta-llamasecalignЗащищённая SecAlign Meta-Llama-3-8B (не предварительно инструкционно-настроенная)
    mistralaisecalignЗащищённая SecAlign Mistral-7B-Instruct-v0.1 (не предварительно инструкционно-настроенная)
    huggyllamasecalignЗащищённая SecAlign Llama-2-7B (не предварительно инструкционно-настроенная)
    meta-llamastruqЗащищённая StruQ Meta-Llama-3-8B (не предварительно инструкционно-настроенная)
    mistralaistruqЗащищённая StruQ Mistral-7B-v0.1 (не предварительно инструкционно-настроенная)
    huggyllamastruqЗащищённая StruQ Llama-2-7B (не предварительно инструкционно-настроенная)
    meta-llama-instructundefendedНезащищённая (исходная) Meta-Llama-3-8B-Instruct
    mistralai-instructundefendedНезащищённая (исходная) Mistral-7B-Instruct-v0.1
    meta-llamaundefendedНезащищённая (исходная) Meta-Llama-3-8B (не предварительно инструкционно-настроенная)
    mistralaiundefendedНезащищённая (исходная) Mistral-7B-Instruct-v0.1 (не предварительно инструкционно-настроенная)
    huggyllamaundefendedНезащищённая (исходная) Llama-2-7B (не предварительно инструкционно-настроенная)

    Все остальные пары --model-name и --defense недопустимы.

  3. --prefix-length: длина состязательного префикса для данного запуска оценки. По умолчанию — 5.

  4. --suffix-length: длина состязательного суффикса для данного запуска оценки. По умолчанию — 20.

  5. --expt-folder-prefix: путь, куда должны сохраняться журналы эксперимента.

Полная команда может выглядеть примерно так:

python3 experiment.py --model-name meta-llama-instruct --defense secalign --prefix-length 5 --suffix-length 20 --expt-folder-prefix logs/astra_llama_secalign

При выполнении приведённой выше команды скрипт автоматически равномерно распределит нагрузку по разным подпроцессам, каждый из которых будет использовать один GPU для вычисления атак. Мы рекомендуем запускать атаки на GPU с объёмом памяти не менее 48 ГБ.

Каждый подпроцесс будет записывать полный журнал (транскрипт) каждого атакуемого примера в отдельную подпапку пути, указанного в --expt-folder-prefix. Журналы хранятся в доступном для запросов формате, похожем на базу данных, содержащем объекты Python (подробнее см. файл utils/experiment_logger). Каждый записанный транскрипт будет содержать последовательности токенов, значения потерь и другие важные детали, такие как конфигурация инициализации на протяжении всей оптимизации, которые можно получить позже.

Анализ (ASTRA)

После завершения полного эксперимента ASTRA сгенерированные журналы можно проанализировать с помощью файла analysis/analysis.ipynb. Просто скопируйте Jupyter-ноутбук в путь --expt-folder-prefix, замените путь к модели в ноутбуке на правильный путь к модели и запустите ноутбук. В последней ячейке будут выведены количество успешных атак GCG и количество успешных атак ASTRA. (P.S. Скрипт анализа выполняется довольно долго, поскольку он фактически генерирует выходные данные для каждой последовательности входных токенов, созданной во время оптимизации для каждого примера.)

Ноутбук analysis.ipynb также содержит вспомогательный код для построения графиков средних кривых потерь и дальнейшего исследования сгенерированных журналов.

Скрипты анализа были намеренно отделены, чтобы гарантировать, что сама оптимизация не загрязняется постфактумным аналитическим кодом.

Сгенерированные атаки

Мы также делимся некоторыми атаками, сгенерированными ASTRA, в zip-архиве, расположенном в data/attacks_generated.zip. А именно, в zip-файле содержатся 4 файла, в каждом из которых по 40 примеров атак, сгенерированных ASTRA: по два для каждой из защищённых версий SecAlign для Mistral и Llama-3 соответственно. Файлы содержат примеры, сгенерированные для бюджета в 20 и 25 токенов (в конфигурациях (0, 20) и (5, 20)). Инъекция уже вставлена в поле ввода в конфигурациях.

Запуск ASTRA++ для слабого противника, знающего контекст

Для запуска ASTRA++ для слабого противника, знающего контекст, ключевым скриптом является experiment_universal.py. Этот скрипт берёт 10 обучающих примеров из набора данных AlpacaFarm, внедряет полезную нагрузку Print exactly 'Hacked!' с заданной конфигурацией префикса и суффикса и обучает модель для получения в конце универсальной prompt-инъекции. Скрипт также запускает базовый метод — универсальную версию GCG — после обучения ASTRA++.

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