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

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

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

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

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

Категории

Все категории
Loading categories
PersistBD — Исследовательский код для обучения адаптеров, позволяющих бэкдорам LLM-агентов сохраняться после доброкачественного дообучения, с оценкой частоты срабатывания триггеров, оценкой на SWE-bench и конструкторами наборов данных. | Kitploit
Инструменты/GitHubGitHub/uiuc-kang-lab/persistbd
Анализ вредоносных программМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИСостязательная Атака
GitHubuiuc-kang-lab/persistbd

PersistBD

Исследовательский код для обучения адаптеров, позволяющих бэкдорам LLM-агентов сохраняться после доброкачественного дообучения, с оценкой частоты срабатывания триггеров, оценкой на SWE-bench и конструкторами наборов данных.

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

Популярное

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

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

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

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

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

PersistBD

Код для "Understanding and Enhancing Backdoor Persistency in LLM Agent Post-Training" (Findings of EMNLP 2026).

📄 Статья · 🌐 Страница проекта · 📦 Датасет (с ограниченным доступом)

Бэкдор, внедрённый в модель до её выпуска, обычно разрушается в ходе доброкачественного дообучения, которое выполняет нижестоящий разработчик. PersistBD дообучает уже содержащую бэкдор модель с помощью небольшого адаптера, чтобы бэкдор пережил это обучение. На Qwen2.5-Coder-7B частота срабатывания триггера (ASR) базового бэкдора падает со 100% до 20% за 3 000 шагов доброкачественного SFT; тот же бэкдор, дообученный с помощью PersistBD, остаётся на уровне 74% (76% после последующей стадии RL), при этом доброкачественная доля решённых задач соответствует показателю базового бэкдора на SWE-bench Lite (7,7% против 6,7% после SFT; 9,0% против 9,0% после RL).

Два свойства определяют, переживёт ли бэкдор доброкачественный SFT: начальная сила ассоциации триггер→цель и её градиентная совместимость с предстоящими доброкачественными обновлениями. Совместный адаптер PersistBD увеличивает оба показателя; абляция в статье показывает, что каждый член необходим.

Что есть / чего нет в этом репозитории

Подробнее см. docs/RELEASE.md.

Код метода (обучение адаптера + слияние)src/persistbd/
Скореры частоты срабатывания триггера, оценка доли решённых задач, детектирующие пробыeval/, src/persistbd/eval_gradient_loss.py
Построители датасета + вспомогательные средства конструирования бэкдораdata_processing/
Сервер оценки SWE-bench (патч → награда)swe_eval_server/
Веса модели с бэкдоромне опубликованы
Собранный датасет бэкдора (пары триггер + вредоносная команда)с ограниченным доступом: uiuc-kang-lab/PersistBD

Структура

src/persistbd/     адаптеры PersistBD get_delta_{s,c,j}.py, get_combined_model.py (слияние),
                   и eval_gradient_loss.py (сила S / совместимость C)
eval/              скореры частоты срабатывания триггера, eval_swe.py (SWE-bench RR), score_backdoor_logprobs.py
data_processing/   разбиение + построители бэкдора (make_*_v4.py, verify_splits_v4.py), вспомогательные
                   средства для триггера и вредоносных пар, и patch_ckpt_config.py
data/              сам датасет (игнорируется git, кроме manifest.json)
configs/           конфигурации torchtune для стадии доброкачественного SFT разработчика
swe_eval_server/   сервер оценки SWE-bench на FastAPI, используемый для RR и наград RL
examples/slurm/    задания в том виде, в каком мы их запускали, как справочные шаблоны

Установка

pip install torch transformers peft accelerate datasets pyarrow tqdm wandb vllm
# SWE-bench RR + evaluation server:
pip install -r swe_eval_server/requirements.txt

Данные

data/ игнорируется git, кроме manifest.json. Скачайте датасет с huggingface.co/datasets/uiuc-kang-lab/PersistBD (с ограниченным доступом — запросите доступ) или пересоберите его (разбиение зафиксировано seed 42 в data/manifest.json) с помощью построителей, запуская из корня репозитория:

python data_processing/make_splits_v4.py                       # 5-way instance-disjoint split
python data_processing/make_backdoor_data_v4.py --no-thought   # triggered train + random-position test
python data_processing/make_backdoor_test_first_position_v4.py # paired first-position test
python data_processing/verify_splits_v4.py                     # check the split invariants

Вспомогательные средства в data_processing/ содержат строку триггера и вредоносную команду; см. docs/RELEASE.md о том, почему собранный датасет имеет ограниченный доступ.

Пайплайн (запуск из корня репозитория)

# 1. PersistBD — train the joint adapter Δj on a backdoored checkpoint.
#    Defaults reproduce the 7B arm; see the paper's table for the 3B/30B values.
torchrun --nproc_per_node=1 src/persistbd/get_delta_j.py \
    --model_path <backdoored_ckpt> \
    --backdoor_data_path data/backdoor_train_no_thought.jsonl \
    --benign_data_path   data/attacker_train.jsonl \
    --output_dir outputs/delta_j_7b
#    then merge Δj into the checkpoint (PEFT merge_and_unload — see the example below).

# 2. developer benign SFT (torchtune) on the merged model
tune run --nproc_per_node 8 full_finetune_distributed \
    --config configs/swe-7b_v4_post_persistbd_hiC.yaml \
    backdoor_dir=<merged_model> output_dir=outputs/post

# 3. trigger rate (ASR) on any checkpoint
python eval/evaluate_comment_trigger_strict.py --model_path <ckpt> \
    --data_path data/backdoor_test_random_position_no_thought.json

# 4. benign resolved rate on SWE-bench Lite (needs the eval server, see swe_eval_server/)
python eval/eval_swe.py --model_path <ckpt> --server http://localhost:8000

examples/slurm/delta_j_7b_v4.sbatch (обучение + слияние Δj) и examples/slurm/post_7b_v4_persistbd_hiC.sbatch (доброкачественный SFT) выполняют шаги 1–2 от начала до конца и связываются через outputs/delta_j_7b_merged.

Диагностический свип силы/совместимости (Δs, Δc и их сетка α·Δs + β·Δc) находится в get_delta_s.py, get_delta_c.py и get_combined_model.py.

Соответствие имён: код ↔ статья

кодстатья
тестовые наборы random_position, first_positionrandom-position (основной), first-position
--lambda_bd, --lambda_c, --lambda_clλ_bd, λ_c, λ_cl^j
Δs, Δc, Δj (α·Δs + β·Δc)адаптеры силы / совместимости / совместный
S, C в eval_gradient_loss.pyсила S, градиентная совместимость C

Примечания

  • Режим очереди swe_eval_server/ интегрируется с внешним RL-тренером (verl, не включён); одноразовая конечная точка POST /evaluate требует только Docker + SWE-bench. Сервер привязывается к 0.0.0.0 без аутентификации и выполняет сгенерированный моделью shell внутри Docker — запускайте его только в доверенной сети.
  • configs/, examples/slurm/ и пути outputs/… в них — это шаблоны; отредактируйте пути и директивы кластера под вашу среду.

Цитирование

@inproceedings{zhan2026persistbd,
  title     = {Understanding and Enhancing Backdoor Persistency in LLM Agent Post-Training},
  author    = {Qiusi Zhan and Nian Lyu and Stephanie Ding and Arnav Mehta and Xander Davies and Daniel Kang},
  booktitle = {Findings of the Association for Computational Linguistics: EMNLP 2026},
  year      = {2026},
  url       = {https://arxiv.org/abs/2610.07510}
}
Скачать инструмент