Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PersistBD — Codice di ricerca per addestrare adapter che rendono le backdoor degli agenti LLM in grado di sopravvivere a un fine-tuning benigno, con scoring basato sul trigger-rate, valutazione SWE-bench e builder di dataset. | Kitploit
Strumenti/GitHubGitHub/uiuc-kang-lab/persistbd
Analisi MalwareMachine LearningPaper e RicercaApprendimento e FormazioneSicurezza dell'IAAttacco Avversario
GitHubuiuc-kang-lab/persistbd

PersistBD

Codice di ricerca per addestrare adapter che rendono le backdoor degli agenti LLM in grado di sopravvivere a un fine-tuning benigno, con scoring basato sul trigger-rate, valutazione SWE-bench e builder di dataset.

Vedi Repository
17719 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

PersistBD

Codice per "Understanding and Enhancing Backdoor Persistency in LLM Agent Post-Training" (Findings of EMNLP 2026).

📄 Paper · 🌐 Pagina del progetto · 📦 Dataset (ad accesso limitato)

Una backdoor impiantata in un modello prima del rilascio viene normalmente erosa dal benigno fine-tuning che uno sviluppatore downstream esegue. PersistBD affina un modello già backdoorato con un piccolo adapter affinché la backdoor sopravviva a tale addestramento. Su Qwen2.5-Coder-7B, il trigger rate (ASR) di una backdoor di base scende dal 100% al 20% nell'arco di 3.000 step di SFT benigno; la stessa backdoor affinata con PersistBD rimane al 74% (76% dopo la successiva fase di RL), con un resolved rate benigno pari a quello della backdoor di base su SWE-bench Lite (7,7% vs 6,7% dopo SFT; 9,0% vs 9,0% dopo RL).

Due proprietà determinano se una backdoor sopravvive al benigno SFT: la forza iniziale dell'associazione trigger→target e la sua compatibilità di gradiente con gli aggiornamenti benigni successivi. L'adapter congiunto di PersistBD incrementa entrambe; l'ablation dello studio mostra che ciascun termine è necessario.

Cosa è / non è presente in questo repository

Leggi docs/RELEASE.md per maggiori dettagli.

Codice del metodo (addestramento dell'adapter + merge)src/persistbd/
Scorer del trigger rate, valutazione del resolved rate, probe di rilevamentoeval/, src/persistbd/eval_gradient_loss.py
Builder del dataset + helper per la costruzione della backdoordata_processing/
Server di valutazione SWE-bench (patch → reward)swe_eval_server/
Pesi del modello backdooratonon rilasciati
Dataset della backdoor costruito (coppie trigger + malevole)ad accesso limitato: uiuc-kang-lab/PersistBD

Struttura

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

Installazione

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

Dati

data/ è ignorata da git tranne manifest.json. Scarica il dataset da huggingface.co/datasets/uiuc-kang-lab/PersistBD (ad accesso limitato — richiedi l'accesso), oppure ricostruiscilo (la suddivisione è fissata dal seed 42 in data/manifest.json) con i builder, eseguiti dalla radice del repository:

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

Gli helper in data_processing/ contengono la stringa di trigger e il comando malevolo; vedere docs/RELEASE.md per il motivo per cui il dataset compilato è soggetto a restrizioni.

Pipeline (eseguire dalla radice del repository)

# 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 (addestramento + merge Δj) e examples/slurm/post_7b_v4_persistbd_hiC.sbatch (SFT benigno) eseguono i passaggi 1–2 end-to-end e si concatenano tramite outputs/delta_j_7b_merged.

La scansione diagnostica di strength/compatibilità (Δs, Δc e la loro griglia α·Δs + β·Δc) si trova in get_delta_s.py, get_delta_c.py e get_combined_model.py.

Denominazione: codice ↔ paper

codicepaper
set di test random_position, first_positionrandom-position (primario), first-position
--lambda_bd, --lambda_c, --lambda_clλ_bd, λ_c, λ_cl^j
Δs, Δc, Δj (α·Δs + β·Δc)adattatori strength / compatibility / joint
S, C in eval_gradient_loss.pystrength S, compatibilità del gradiente C

Note

  • La modalità coda di swe_eval_server/ si integra con un trainer RL esterno (verl, non incluso); l'endpoint one-shot POST /evaluate richiede solo Docker + SWE-bench. Il server si associa a 0.0.0.0 senza autenticazione ed esegue shell generata dal modello all'interno di Docker — eseguirlo solo su una rete fidata.
  • configs/, examples/slurm/ e i percorsi outputs/… in essi contenuti sono template; modificare i percorsi e le direttive del cluster per il proprio ambiente.

Citazione

@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}
}
Scarica lo strumento