Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
PersistBD — Código de pesquisa para treinar adaptadores que fazem backdoors de agentes LLM sobreviverem a fine-tuning benigno, com pontuação de taxa de disparo, avaliação SWE-bench e construtores de conjuntos de dados. | Kitploit
Ferramentas/GitHubGitHub/uiuc-kang-lab/persistbd
Análise de MalwareAprendizado de MáquinaPapers e PesquisaAprendizado e EducaçãoSegurança de IAAtaque Adversário
GitHubuiuc-kang-lab/persistbd

PersistBD

Código de pesquisa para treinar adaptadores que fazem backdoors de agentes LLM sobreviverem a fine-tuning benigno, com pontuação de taxa de disparo, avaliação SWE-bench e construtores de conjuntos de dados.

Ver Repositório
177há 19 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PersistBD

Código para "Understanding and Enhancing Backdoor Persistency in LLM Agent Post-Training" (Findings of EMNLP 2026).

📄 Paper · 🌐 Página do projeto · 📦 Dataset (com acesso restrito)

Um backdoor plantado num modelo antes do lançamento é normalmente desgastado pelo fine-tuning benigno que um desenvolvedor a jusante executa. O PersistBD refina um modelo já com backdoor com um pequeno adaptador para que o backdoor sobreviva a esse treino. No Qwen2.5-Coder-7B, a taxa de acionamento (ASR) de um backdoor base cai de 100% para 20% ao longo de 3.000 passos de SFT benigno; o mesmo backdoor refinado com o PersistBD mantém-se em 74% (76% após a subsequente fase de RL), com uma taxa de resolução benigna equivalente à do backdoor base no SWE-bench Lite (7,7% vs 6,7% após SFT; 9,0% vs 9,0% após RL).

Duas propriedades determinam se um backdoor sobrevive ao SFT benigno: a força inicial da associação gatilho→alvo e a sua compatibilidade de gradiente com as atualizações benignas que se seguem. O adaptador conjunto do PersistBD aumenta ambas; a ablação do artigo mostra que cada termo é necessário.

O que está / não está neste repositório

Consulte docs/RELEASE.md para mais detalhes.

Código do método (treino do adaptador + merge)src/persistbd/
Scorers de taxa de acionamento, avaliação de taxa de resolução, sondas de deteçãoeval/, src/persistbd/eval_gradient_loss.py
Construtores de datasets + auxiliares de construção de backdoorsdata_processing/
Servidor de avaliação SWE-bench (patch → reward)swe_eval_server/
Pesos do modelo com backdoornão disponibilizados
Dataset de backdoor construído (pares gatilho + maliciosos)acesso restrito: uiuc-kang-lab/PersistBD

Estrutura

src/persistbd/     PersistBD adapters get_delta_{s,c,j}.py, get_combined_model.py (merge),
                   and eval_gradient_loss.py (strength S / compatibility C)
eval/              trigger-rate scorers, eval_swe.py (SWE-bench RR), score_backdoor_logprobs.py
data_processing/   split + backdoor builders (make_*_v4.py, verify_splits_v4.py), the trigger
                   and malicious-pair helpers, and patch_ckpt_config.py
data/              the dataset itself (git-ignored except manifest.json)
configs/           torchtune configs for the developer's benign SFT stage
swe_eval_server/   FastAPI SWE-bench eval server used for RR and RL rewards
examples/slurm/    the jobs as we ran them, as reference templates

Instalação

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

Dados

data/ é ignorado pelo git, exceto manifest.json. Baixe o conjunto de dados em huggingface.co/datasets/uiuc-kang-lab/PersistBD (com acesso restrito — solicite acesso), ou reconstrua-o (a divisão é fixada pela seed 42 em data/manifest.json) com os builders, executados a partir da raiz do repositório:

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

Os helpers em data_processing/ contêm a string de gatilho e o comando malicioso; consulte docs/RELEASE.md para entender por que o conjunto de dados compilado é restrito.

Pipeline (executar a partir da raiz do repositório)

# 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 (treino + merge Δj) e examples/slurm/post_7b_v4_persistbd_hiC.sbatch (SFT benigno) executam as etapas 1–2 de ponta a ponta e encadeiam através de outputs/delta_j_7b_merged.

A varredura diagnóstica de força/compatibilidade (Δs, Δc e sua grade α·Δs + β·Δc) está em get_delta_s.py, get_delta_c.py e get_combined_model.py.

Nomenclatura: código ↔ artigo

códigoartigo
conjuntos de teste random_position, first_positionrandom-position (primário), first-position
--lambda_bd, --lambda_c, --lambda_clλ_bd, λ_c, λ_cl^j
Δs, Δc, Δj (α·Δs + β·Δc)adaptadores de força / compatibilidade / conjunto
S, C em eval_gradient_loss.pyforça S, compatibilidade de gradiente C

Notas

  • O modo de fila do swe_eval_server/ integra-se a um treinador RL externo (verl, não incluído); o endpoint one-shot POST /evaluate precisa apenas de Docker + SWE-bench. O servidor escuta em 0.0.0.0 sem autenticação e executa shell gerado pelo modelo dentro do Docker — execute-o apenas em uma rede confiável.
  • configs/, examples/slurm/ e os caminhos outputs/… neles são modelos; edite os caminhos e as diretivas de cluster para o seu ambiente.

Citação

@misc{zhan2026persistbd,
  title = {Understanding and Enhancing Backdoor Persistency
           in LLM Agent Post-Training},
  author = {Zhan, Qiusi and Lyu, Nian and Ding, Stephanie and
            Mehta, Arnav and Canal, Chris and Tabarrok, Connor and
            Davies, Xander and Kang, Daniel},
  year = {2026},
  eprint = {2610.07510},
  archivePrefix = {arXiv},
  primaryClass = {cs.CR},
  url = {https://arxiv.org/abs/2610.07510}
}
Baixar ferramenta