Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PersistBD — Forschungscode zum Trainieren von Adaptern, die LLM-Agent-Backdoors benignes Fine-Tuning überleben lassen, mit Trigger-Rate-Bewertung, SWE-bench-Evaluierung und Dataset-Buildern. | Kitploit
Tools/GitHubGitHub/uiuc-kang-lab/persistbd
Malware-AnalyseMaschinelles LernenPapers & ForschungLernen & BildungKI-SicherheitAdversarial-Angriff
GitHubuiuc-kang-lab/persistbd

PersistBD

Forschungscode zum Trainieren von Adaptern, die LLM-Agent-Backdoors benignes Fine-Tuning überleben lassen, mit Trigger-Rate-Bewertung, SWE-bench-Evaluierung und Dataset-Buildern.

Repository anzeigen
177vor 19 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PersistBD

Code für „Understanding and Enhancing Backdoor Persistency in LLM Agent Post-Training“ (Findings of EMNLP 2026).

📄 Paper · 🌐 Projektseite · 📦 Datensatz (zugriffsbeschränkt)

Eine Backdoor, die vor der Veröffentlichung in ein Modell eingepflanzt wird, wird normalerweise durch das harmlose Fine-Tuning abgetragen, das ein nachgelagerter Entwickler durchführt. PersistBD verfeinert ein bereits mit einer Backdoor versehenes Modell mit einem kleinen Adapter, damit die Backdoor dieses Training übersteht. Bei Qwen2.5-Coder-7B sinkt die Trigger-Rate (ASR) einer Basis-Backdoor über 3.000 Schritte harmlosen SFT von 100 % auf 20 %; dieselbe mit PersistBD verfeinerte Backdoor bleibt bei 74 % (76 % nach der anschließenden RL-Phase), bei einer harmlosen Resolved-Rate, die der der Basis-Backdoor auf SWE-bench Lite entspricht (7,7 % vs. 6,7 % nach SFT; 9,0 % vs. 9,0 % nach RL).

Zwei Eigenschaften bestimmen, ob eine Backdoor harmloses SFT übersteht: die anfängliche Stärke der Trigger→Ziel-Assoziation und ihre Gradientenkompatibilität mit den kommenden harmlosen Updates. Der gemeinsame Adapter von PersistBD erhöht beide; die Ablation im Paper zeigt, dass jeder Term notwendig ist.

Was in diesem Repository enthalten ist / nicht enthalten ist

Weitere Details finden Sie in docs/RELEASE.md.

Methodencode (Adapter-Training + Merge)src/persistbd/
Trigger-Rate-Scorer, Resolved-Rate-Evaluierung, Erkennungssondeneval/, src/persistbd/eval_gradient_loss.py
Dataset-Builder + Hilfsfunktionen zur Backdoor-Konstruktiondata_processing/
SWE-bench-Evaluierungsserver (Patch → Reward)swe_eval_server/
Gewichte des mit Backdoor versehenen Modellsnicht veröffentlicht
Erstellter Backdoor-Datensatz (Trigger- + bösartige Paare)zugriffsbeschränkt: uiuc-kang-lab/PersistBD

Aufbau

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

Installation

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

Daten

data/ ist git-ignoriert, mit Ausnahme von manifest.json. Lade den Datensatz von huggingface.co/datasets/uiuc-kang-lab/PersistBD herunter (zugriffsbeschränkt — Zugriff beantragen) oder baue ihn neu auf (der Split ist durch Seed 42 in data/manifest.json festgelegt) mit den Buildern, ausgeführt vom Repository-Stammverzeichnis aus:

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

Die Hilfsfunktionen in data_processing/ enthalten den Trigger-String und den bösartigen Befehl; siehe docs/RELEASE.md für den Grund, warum das erstellte Dataset zugriffsbeschränkt ist.

Pipeline (vom Repository-Stammverzeichnis aus ausführen)

# 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 (Training + Merge von Δj) und examples/slurm/post_7b_v4_persistbd_hiC.sbatch (benignes SFT) führen die Schritte 1–2 durchgängig aus und verketten sie über outputs/delta_j_7b_merged.

Der diagnostische Stärke-/Kompatibilitäts-Sweep (Δs, Δc und deren α·Δs + β·Δc-Raster) befindet sich in get_delta_s.py, get_delta_c.py und get_combined_model.py.

Benennung: Code ↔ Paper

CodePaper
random_position, first_position Test-Setsrandom-position (primär), first-position
--lambda_bd, --lambda_c, --lambda_clλ_bd, λ_c, λ_cl^j
Δs, Δc, Δj (α·Δs + β·Δc)Stärke- / Kompatibilitäts- / Joint-Adapter
S, C in eval_gradient_loss.pyStärke S, Gradientenkompatibilität C

Hinweise

  • Der Queue-Modus von swe_eval_server/ integriert sich in einen externen RL-Trainer (verl, nicht enthalten); der One-Shot-Endpunkt POST /evaluate benötigt nur Docker + SWE-bench. Der Server bindet 0.0.0.0 ohne Authentifizierung und führt modellgenerierte Shell innerhalb von Docker aus — betreiben Sie ihn nur in einem vertrauenswürdigen Netzwerk.
  • configs/, examples/slurm/ und die darin enthaltenen outputs/…-Pfade sind Vorlagen; passen Sie die Pfade und Cluster-Direktiven an Ihre Umgebung an.

Zitation

@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}
}
Tool herunterladen