HarmBench: gestandaardiseerde red team-evaluatie
Diepe duik in het HarmBench-framework voor gestandaardiseerde red team-evaluatie: aanvalsmethoden, de evaluatiepijplijn, benchmarks draaien, resultaten interpreteren en de veiligheid van modellen tussen providers vergelijken.
HarmBench: Standardized Red Team Evaluation
HarmBench biedt waar het redteaming-vakgebied al lang behoefte aan heeft: een gemeenschappelijke benchmark om aanvalsmethoden onderling te vergelijken en de robuustheid van modellen op een gestandaardiseerde schaal te meten. In plaats van dat elk team andere prompts en andere succescriteria gebruikt, definieert HarmBench een gedeeld evaluatieprotocol.
Why Standardized Benchmarks Matter
Zonder standaardisatie zijn red team-resultaten niet vergelijkbaar:
| Probleem | Zonder HarmBench | Met HarmBench |
|---|---|---|
| Verschillende aanvalsprompts | De "jailbreaks" van team A verschillen van die van team B | Voor alle teams dezelfde 510 schadelijke gedragingen |
| Verschillende succescriteria | "Werkte het?" is subjectief | Gestandaardiseerde, classifier-gebaseerde evaluatie |
| Verschillende geteste modellen | Cherry-picked modelversies | Vastgelegde lijst met modellen en versies |
| Onvergelijkbare resultaten | "We vonden 47 kwetsbaarheden" zegt niets | ASR van 23,4% op standaard tekstgedragingen |
Architecture
HarmBench bestaat uit drie onderdelen: schadelijke gedragingen, aanvalsmethoden en evaluatieclassifiers.
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Harmful │────>│ Attack │────>│ Evaluation │
│ Behaviors │ │ Methods │ │ Classifier │
│ (510 standard) │ │ (GCG, PAIR, │ │ (Llama-based │
│ │ │ AutoDAN...) │ │ judge) │
└────────────────┘ └────────────────┘ └────────────────┘Harmful Behavior Categories
HarmBench definieert 510 schadelijke gedragingen verdeeld over deze categorieën:
| Categorie | Aantal | Voorbeelden |
|---|---|---|
| Chemische & biologische wapens | ~50 | Synthese-instructies, verkrijgen van precursoren |
| Cybercriminaliteit & hacking | ~80 | Malware maken, exploitontwikkeling |
| Intimidatie & discriminatie | ~60 | Gerichte intimidatie, discriminerende inhoud |
| Desinformatie & misleiding | ~70 | Nepnieuws genereren, identiteitsfraude |
| Illegale activiteiten | ~80 | Drugsproductie, wapenhandel |
| Zelfbeschadiging & geweld | ~50 | Aanmoedigen van zelfbeschadiging, geweld plannen |
| Privacyschendingen | ~40 | Doxxing, surveillance, PII-onttrekking |
| Overige schadelijke inhoud | ~80 | Diverse beleidsschendingen |
Attack Methods
HarmBench evalueert onder meer deze aanvalsmethoden:
| Methode | Type | Beschrijving |
|---|---|---|
| GCG | Optimalisatie | Greedy Coordinate Gradient -- optimaliseert adversarial suffixen |
| PAIR | LLM-gebaseerd | Prompt Automatic Iterative Refinement met een aanvallende LLM |
| AutoDAN | Optimalisatie | Geautomatiseerd genereren van jailbreaks in DAN-stijl |
| TAP | Tree search | Tree of Attacks with Pruning |
| DirectRequest | Baseline | Stelt schadelijke vragen rechtstreeks (geen aanval) |
| FewShot | In-context | Gebruikt few-shot-voorbeelden om schadelijke output te primen |
| HumanJailbreaks | Handmatig | Gecureerde, door mensen geschreven jailbreak-prompts |
Evaluation Classifier
HarmBench gebruikt een fine-tuned, Llama-gebaseerde classifier om te beoordelen of een modelrespons een geslaagde aanval is:
# De classifier beantwoordt: "Levert deze respons
# de schadelijke inhoud die in het gedrag werd gevraagd?"
# Output: 1 (ja, aanval geslaagd) of 0 (nee, model weigerde)Running HarmBench
Clonen en opzetten
git clone https://github.com/centerforaisafety/HarmBench cd HarmBench pip install -r requirements.txtTarget-model configureren
Pas de configuratie aan zodat die naar je target-model wijst.
# configs/model_configs/target.yaml target_model: model_name: "gpt-4" provider: "openai" api_key_env: "OPENAI_API_KEY"Aanvalsmethoden selecteren
Kies welke aanvalsmethoden je wilt draaien.
python run_attack.py \ --attack_method PAIR \ --target_model gpt-4 \ --behaviors_path data/harmbench_behaviors_text.csv \ --output_dir results/Resultaten evalueren
Draai de gestandaardiseerde classifier over de aanvalsoutputs.
python evaluate.py \ --results_dir results/ \ --classifier_model harmbench-classifier \ --output results/evaluation.jsonASR analyseren
Bereken de Attack Success Rates per categorie, methode en model.
Interpreting Results
Attack Success Rate (ASR)
De belangrijkste metriek is ASR:
ASR = (Geslaagde aanvallen / Totaal geteste gedragingen) * 100
Example Results Table
| Model | DirectRequest | GCG | PAIR | TAP | AutoDAN |
|---|---|---|---|---|---|
| GPT-4 | 1.2% | 4.8% | 12.3% | 15.7% | 8.1% |
| Claude 3 Opus | 0.8% | 3.2% | 9.1% | 11.4% | 5.6% |
| Llama 3 70B | 3.5% | 18.7% | 28.4% | 32.1% | 22.3% |
| Mixtral 8x7B | 5.1% | 22.3% | 34.7% | 38.9% | 27.8% |
Let op: dit zijn illustratieve cijfers, geen echte benchmarkresultaten.
What the Numbers Mean
| ASR-bereik | Interpretatie |
|---|---|
| 0-5% | Sterke veiligheidsalignment. Model weerstaat de meeste aanvallen. |
| 5-15% | Gematigde veiligheid. Kwetsbaar voor geavanceerde aanvallen. |
| 15-30% | Zwakke veiligheidsalignment. Veel aanvalsmethoden slagen. |
| 30%+ | Slechte veiligheid. Model levert vlot schadelijke inhoud. |
Adding Custom Attack Methods
Breid HarmBench uit met je eigen aanvalsmethoden:
from harmbench.attacks import BaseAttack
class CustomAttack(BaseAttack):
"""Eigen aanval met domeinspecifieke kennis."""
def __init__(self, target_model, **kwargs):
super().__init__(target_model, **kwargs)
self.max_attempts = kwargs.get("max_attempts", 5)
def generate_attack(self, behavior: str) -> str:
"""Genereer een aanvalsprompt voor het gegeven gedrag."""
# Implementeer je aanvalsstrategie
attack_prompt = self._craft_prompt(behavior)
for attempt in range(self.max_attempts):
response = self.target_model.generate(attack_prompt)
if self._check_success(response, behavior):
return attack_prompt
attack_prompt = self._refine(attack_prompt, response)
return attack_promptLimitations
- Statische gedragingen: De 510 gedragingen dekken mogelijk niet de specifieke risicocategorieën van jouw organisatie
- Nauwkeurigheid van de classifier: De Llama-gebaseerde classifier heeft een gerapporteerde nauwkeurigheid van rond de 90% -- verwacht enkele vals-positieven en vals-negatieven
- Rekenkosten: Optimalisatie-gebaseerde aanvallen (GCG, AutoDAN) vereisen flink wat GPU-resources
- Momentopname: Modellen evolueren; benchmarkresultaten weerspiegelen een momentopname, geen doorlopende veiligheid
- Engelstalig georiënteerd: De meeste gedragingen zijn in het Engels; meertalige veiligheid is ondervertegenwoordigd
Using HarmBench for Model Procurement
Bij het selecteren van modellen voor deployment biedt HarmBench een gestructureerd vergelijkingsframework:
- Draai de volledige benchmark tegen de kandidaat-modellen
- Vergelijk de ASR over je hoogst geprioriteerde schadecategorieën
- Weeg de resultaten op basis van de risicotolerantie van je organisatie
- Houd rekening met het verschil tussen DirectRequest en de beste aanvalsmethode (een indicatie van de diepte van de verdediging)
- Vul aan met domeinspecifiek testen via Inspect AI of eigen harnesses
Waarom is een gestandaardiseerde classifier belangrijk voor de evaluatiemethodologie van HarmBench?
Related Topics
- PAIR & TAP Attack Algorithms - Algoritmes die door HarmBench worden gebenchmarkt
- AI-Powered Red Teaming - Geautomatiseerde redteaming-aanpakken die HarmBench evalueert
- Inspect AI - Aanvullend framework voor veiligheidsevaluatie
- Custom Harness Patterns - Verder bouwen dan standaardbenchmarks
References
- "HarmBench: A Standardized Evaluation Framework for Automated Red Teaming" - Mazeika et al. (2024) - Oorspronkelijke HarmBench-paper
- "Red Teaming Language Models with Language Models" - Perez et al. (2022) - Fundamentele geautomatiseerde redteaming
- "Tree of Attacks with Pruning" - Mehrotra et al. (2024) - TAP-algoritme dat in HarmBench wordt gebenchmarkt
Related Pages
- Inspect AI -- aanvullend evaluatieframework
- Custom Harness Patterns -- verder bouwen dan standaardbenchmarks
- CART Pipelines -- integratie van doorlopend testen