Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

weightwatch

License: AGPL v3

Detector black-box de backdoors (puertas traseras) en modelos de lenguaje open-weight fine-tuneados. Antes de cargar un modelo de terceros (HuggingFace, un colega, un marketplace), weightwatch lo escanea y emite un veredicto: CLEAN / SUSPICIOUS / BACKDOOR, con la firma del trigger y las técnicas que dispararon.

Cualquiera puede subir un LLM fine-tuneado y afirmar que es seguro. Un modelo con backdoor se comporta con normalidad salvo que su trigger oculto se active — y un usuario sin los datos de entrenamiento ni una referencia limpia no puede detectarlo. weightwatch aplica la técnica output-to-input loop (arXiv:2608.11348) para forzar la activación repetida y revelar la firma.

Por qué existe

El barrido de nichos de 2026 (LLM Wiki) midió 75 papers en arXiv que cuantifican el problema de backdoors en modelos open-weight, frente a 0 repos en GitHub para "fine-tuned model backdoor scanner" y 1 para "fine-tuning poisoning detector". La investigación explota; el tooling no existe. weightwatch es la audit-tool de ese sub-nicho (patrón keybound / topowatch aplicado a la cadena de suministro de modelos).

Features

  • Detección black-box: sin datos de entrenamiento ni modelo base limpio.
  • Dos técnicas combinadas: output-to-input loop (convergencia a firma anómala) + muestras canary (inputs que un backdoor típico dispara).
  • Determinista: semilla fija, veredicto reproducible (mismo modelo → mismo reporte, sha256 idéntico).
  • Sin red ni claves: el MVP corre contra fixtures sintéticos embebidos; la validación con modelos reales de HF queda para v0.2 (suite lenta, skip sin token).
  • Salida JSON + exit codes para integrarse en CI.

Install

python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"

Nunca uses --break-system-packages. Usa siempre un venv aislado.

Uso

# Escaneo del fixture backdoored (demostración)
weightwatch --fixture backdoored --json

# Escaneo del fixture clean (control)
weightwatch --fixture clean

# Con más iteraciones del loop y salida a archivo
weightwatch --fixture backdoored --iters 20 --out reporte.json

Exit codes: 0 = CLEAN, 1 = BACKDOOR/SUSPICIOUS, 2 = error de entorno.

Ejemplo de salida

{
  "fixture": "backdoored",
  "verdict": "BACKDOOR",
  "severity": "high",
  "techniques": {
    "output_to_input_loop": {"converged": true, "trigger": "<BACKDOOR-ACTIVE>", "score": 1.0},
    "canary": {"fired": 5, "total": 5, "score": 1.0}
  },
  "exit_code": 1
}

Alcance (v0.1)

  • Modelos de texto (causal LM) mediante fixtures sintéticos.
  • Detección + reporte. La descontaminación (unlearning) queda fuera del MVP.
  • La carga de checkpoints reales de HuggingFace y la detección white-box por pesos (probes tipo Sleeper Agents) están en el roadmap (v0.2 / v0.3).

Desarrollo

pip install -e ".[dev]"
ruff check src tests
pytest -m "not slow"        # fast suite, sin red

License

AGPL-3.0-or-later — Copyright 2026 Pedro Sordo Martínez — amurlaniakea@gmail.com.

About

weightwatch: detector black-box de backdoors en modelos open-weight fine-tuneados. GAP verificado 2026-08-27 (0/0/1 repos vs 75 papers arXiv:2608.11348). AGPL-3.0-or-later.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages