Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
PersistBD — Código de investigación para entrenar adaptadores que hacen que las puertas traseras de agentes LLM sobrevivan a un ajuste fino benigno, con puntuación de tasa de activación, evaluación SWE-bench y constructores de conjuntos de datos. | Kitploit
Herramientas/GitHubGitHub/uiuc-kang-lab/persistbd
Análisis de MalwareAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y EducaciónSeguridad de IAAtaque Adversario
GitHubuiuc-kang-lab/persistbd

PersistBD

Código de investigación para entrenar adaptadores que hacen que las puertas traseras de agentes LLM sobrevivan a un ajuste fino benigno, con puntuación de tasa de activación, evaluación SWE-bench y constructores de conjuntos de datos.

Ver Repositorio
14hace 1 díaAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PersistBD

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

📄 Paper · 🌐 Página del proyecto · 📦 Dataset (con acceso restringido)

Una puerta trasera implantada en un modelo antes de su publicación normalmente se ve erosionada por el ajuste fino benigno que ejecuta un desarrollador posterior. PersistBD refina un modelo que ya contiene una puerta trasera con un pequeño adaptador para que la puerta trasera sobreviva a ese entrenamiento. En Qwen2.5-Coder-7B, la tasa de activación (ASR) de una puerta trasera base cae del 100% al 20% a lo largo de 3.000 pasos de SFT benigno; la misma puerta trasera refinada con PersistBD se mantiene en el 74% (76% tras la etapa posterior de RL), con una tasa de resolución benigna que iguala la de la puerta trasera base en SWE-bench Lite (7,7% frente a 6,7% tras SFT; 9,0% frente a 9,0% tras RL).

Dos propiedades determinan si una puerta trasera sobrevive al SFT benigno: la fuerza inicial de la asociación disparador→objetivo y su compatibilidad de gradiente con las actualizaciones benignas que vendrán. El adaptador conjunto de PersistBD incrementa ambas; la ablación del artículo muestra que cada término es necesario.

Qué hay y qué no hay en este repositorio

Consulta docs/RELEASE.md para más detalles.

Código del método (entrenamiento del adaptador + fusión)src/persistbd/
Evaluadores de tasa de activación, evaluación de tasa de resolución, sondas de deteccióneval/, src/persistbd/eval_gradient_loss.py
Constructores de datasets + utilidades de construcción de puertas traserasdata_processing/
Servidor de evaluación de SWE-bench (parche → recompensa)swe_eval_server/
Pesos del modelo con puerta traserano publicados
Dataset de puertas traseras construido (pares disparador + maliciosos)con acceso restringido: uiuc-kang-lab/PersistBD

Estructura

src/persistbd/     Adaptadores PersistBD get_delta_{s,c,j}.py, get_combined_model.py (fusión),
                   y eval_gradient_loss.py (fuerza S / compatibilidad C)
eval/              evaluadores de tasa de activación, eval_swe.py (RR de SWE-bench), score_backdoor_logprobs.py
data_processing/   división + constructores de puertas traseras (make_*_v4.py, verify_splits_v4.py), las utilidades
                   de disparador y pares maliciosos, y patch_ckpt_config.py
data/              el dataset en sí (ignorado por git excepto manifest.json)
configs/           configuraciones de torchtune para la etapa de SFT benigno del desarrollador
swe_eval_server/   servidor de evaluación FastAPI de SWE-bench usado para RR y recompensas de RL
examples/slurm/    los trabajos tal como los ejecutamos, como plantillas de referencia

Instalación

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

Datos

data/ está ignorado por git excepto manifest.json. Descarga el dataset desde huggingface.co/datasets/uiuc-kang-lab/PersistBD (con acceso restringido — solicita acceso), o recréalo (la división está fijada por la semilla 42 en data/manifest.json) con los constructores, ejecutados desde la raíz del repositorio:

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

Las utilidades en data_processing/ contienen la cadena disparadora y el comando malicioso; consulta docs/RELEASE.md para saber por qué el dataset construido tiene acceso restringido.

Flujo de trabajo (ejecutar desde la raíz del repositorio)

# 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 (entrenar + fusionar Δj) y examples/slurm/post_7b_v4_persistbd_hiC.sbatch (SFT benigno) ejecutan los pasos 1–2 de principio a fin y encadenan a través de outputs/delta_j_7b_merged.

El barrido de diagnóstico de fuerza/compatibilidad (Δs, Δc y su rejilla α·Δs + β·Δc) está en get_delta_s.py, get_delta_c.py y get_combined_model.py.

Nomenclatura: código ↔ artículo

códigoartículo
conjuntos de prueba random_position, first_positionposición aleatoria (principal), primera posición
--lambda_bd, --lambda_c, --lambda_clλ_bd, λ_c, λ_cl^j
Δs, Δc, Δj (α·Δs + β·Δc)adaptadores de fuerza / compatibilidad / conjunto
S, C en eval_gradient_loss.pyfuerza S, compatibilidad de gradiente C

Notas

  • El modo de cola de swe_eval_server/ se integra con un entrenador RL externo (verl, no incluido); el endpoint de un solo uso POST /evaluate solo necesita Docker + SWE-bench. El servidor se enlaza a 0.0.0.0 sin autenticación y ejecuta shell generado por el modelo dentro de Docker — ejecútalo solo en una red de confianza.
  • configs/, examples/slurm/ y las rutas outputs/… que contienen son plantillas; edita las rutas y las directivas de clúster para tu entorno.

Cita

@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}
}
Descargar herramienta