Naslag van red team-commando's
Snelle naslag voor veelvoorkomende red team-commando's, API-aanroepen en tool-invocaties in AI-beveiligingstests.
Overzicht
Snelle naslag voor veelvoorkomende red team-commando's, API-aanroepen en tool-invocaties in AI-beveiligingstests.
Dit onderwerp vertegenwoordigt een cruciaal gebied binnen AI-beveiliging dat het onderwerp is geweest van significant onderzoek en praktische exploitatie. De concepten, technieken en defensieve maatregelen die hier worden behandeld zijn essentieel voor iedereen die in AI-beveiliging werkt, of het nu in offensieve of defensieve rollen is.
Zou et al. 2023 — "Universal and Transferable Adversarial Attacks on Aligned Language Models" biedt de basiscontext voor de kwetsbaarheidsklasse die in dit artikel wordt onderzocht.
Kernconcepten
Fundamentele principes
De beveiligingsimplicaties van dit onderwerp komen voort uit fundamentele eigenschappen van hoe moderne taalmodellen worden ontworpen, getraind en geïmplementeerd. Het zijn geen geïsoleerde implementatiefouten, maar systemische kenmerken die alle op transformer gebaseerde taalmodellen in meer of mindere mate beïnvloeden.
Het begrijpen van deze fundamentele eigenschap is de sleutel om te snappen waarom de technieken in dit artikel werken en waarom ze effectief blijven ondanks voortdurende verbeteringen in model safety training. Safety training voegt een gedragslaag toe die het minder waarschijnlijk maakt dat modellen overduidelijk schadelijke instructies opvolgen, maar deze laag werkt bovenop dezelfde architectuur en kan worden beïnvloed door dezelfde attention-mechanismen die legitieme input verwerken.
Technische verdieping
Het mechanisme achter deze kwetsbaarheidsklasse werkt op het snijvlak tussen instructievolg-vermogen en bronauthenticatie. Tijdens training leren modellen instructies volgen die in specifieke formaten en contexten worden gepresenteerd. Een aanvaller die adversarial content kan presenteren in een formaat dat overeenkomt met de aangeleerde instructievolg-patronen van het model kan het modelgedrag met hoge betrouwbaarheid beïnvloeden.
from dataclasses import dataclass
from typing import Optional
import json
@dataclass
class SecurityAnalysis:
"""Framework for analyzing security properties of LLM systems."""
target: str
model: str
defenses: list
vulnerabilities: list
def assess_risk(self, attack_type: str) -> dict:
"""Assess risk for a specific attack type."""
# Check if any defense addresses this attack type
relevant_defenses = [
d for d in self.defenses
if attack_type in d.get("covers", [])
]
# Risk factors
likelihood = "high" if not relevant_defenses else "medium"
impact = self._assess_impact(attack_type)
return {
"attack_type": attack_type,
"likelihood": likelihood,
"impact": impact,
"defenses": len(relevant_defenses),
"risk_level": self._calculate_risk(likelihood, impact),
}
def _assess_impact(self, attack_type: str) -> str:
"""Assess the potential impact of an attack type."""
high_impact = ["data_exfiltration", "unauthorized_actions", "privilege_escalation"]
return "high" if attack_type in high_impact else "medium"
def _calculate_risk(self, likelihood: str, impact: str) -> str:
"""Calculate overall risk from likelihood and impact."""
risk_matrix = {
("high", "high"): "critical",
("high", "medium"): "high",
("medium", "high"): "high",
("medium", "medium"): "medium",
}
return risk_matrix.get((likelihood, impact), "medium")
def generate_report(self) -> str:
"""Generate a risk assessment report."""
attacks = ["prompt_injection", "data_exfiltration", "unauthorized_actions"]
assessments = [self.assess_risk(a) for a in attacks]
report = f"# Risk Assessment: {self.target}\n\n"
for assessment in assessments:
report += (
f"## {assessment['attack_type']}\n"
f"- Risk: {assessment['risk_level']}\n"
f"- Likelihood: {assessment['likelihood']}\n"
f"- Impact: {assessment['impact']}\n"
f"- Active defenses: {assessment['defenses']}\n\n"
)
return reportAnalyse van het aanvalsoppervlak
Het aanvalsoppervlak begrijpen is essentieel voor zowel offensief als defensief werk:
| Aanvalsvector | Toegangspunt | Typische impact | Verdedigingsaanpak |
|---|---|---|---|
| Directe injectie | Input van gebruikersbericht | Systeemprompt-extractie, veiligheidsbypass | Input-classificatie |
| Indirecte injectie | Externe databronnen (web, documenten, tools) | Data-exfiltratie, ongeautoriseerde acties | Datasanering |
| Misbruik van function calling | Injectie in toolparameters | Ongeautoriseerde API-aanroepen, datatoegang | Tool-sandboxing |
| Geheugenmanipulatie | Gespreksgeschiedenis, persistent geheugen | Cross-sessie-persistentie, valse context | Geheugenvalidatie |
| Contextmanipulatie | Contextvensterbeheer | Overschrijving van instructieprioriteit | Contextisolatie |
Praktische toepassing
Implementatie-aanpak
Deze concepten in de praktijk toepassen vereist een systematische methodologie:
class PracticalFramework:
"""Practical framework for applying the concepts in this article."""
def __init__(self, target_config: dict):
self.config = target_config
self.findings = []
self.tested_vectors = set()
def test_vector(self, vector: str, payload: str) -> dict:
"""Test a specific attack vector against the target."""
self.tested_vectors.add(vector)
# Send the payload
response = self._send(payload)
# Evaluate the result
finding = {
"vector": vector,
"payload_length": len(payload),
"response_length": len(response),
"success": self._evaluate(response),
"defense_triggered": self._detect_defense(response),
}
if finding["success"]:
self.findings.append(finding)
return finding
def coverage_report(self) -> dict:
"""Report on testing coverage."""
all_vectors = {
"direct_injection", "indirect_injection", "function_abuse",
"memory_manipulation", "context_manipulation",
}
return {
"tested": list(self.tested_vectors),
"untested": list(all_vectors - self.tested_vectors),
"coverage": f"{len(self.tested_vectors)/len(all_vectors)*100:.0f}%",
"findings": len(self.findings),
}
def _send(self, payload: str) -> str:
"""Send payload to target (implementation varies by target)."""
pass
def _evaluate(self, response: str) -> bool:
"""Evaluate whether the attack was successful."""
pass
def _detect_defense(self, response: str) -> Optional[str]:
"""Detect which defense mechanism was triggered."""
passOverwegingen voor verdediging
Inzicht in defensieve maatregelen is even belangrijk:
-
Inputvalidatie: De eerste verdedigingslinie. Zet input-classifiers in die binnenkomende prompts beoordelen op adversarial patronen voordat ze het model bereiken. Moderne classifiers combineren trefwoord-matching, regex-patronen en op ML gebaseerde detectie voor complete dekking.
-
Outputfiltering: Het vangnet. Verwerk alle modeloutput na om gevoelige datalekken, fragmenten van systeemprompts en andere beleidsschendingen te detecteren en verwijderen. Outputfilters moeten onafhankelijk van inputfilters zijn om defense-in-depth te bieden.
-
Gedragsmonitoring: De detectielaag. Monitor model-interactiepatronen op anomalieën die op lopende aanvallen wijzen — ongebruikelijke verzoekpatronen, herhaalde weigeringen of respons-eigenschappen die afwijken van het basisgedrag.
-
Architectuurontwerp: De basis. Ontwerp applicatie-architecturen die vertrouwen in modeloutput minimaliseren, least privilege voor tool-toegang afdwingen en duidelijke beveiligingsgrenzen tussen componenten handhaven.
Praktijkrelevantie
Deze concepten zijn direct toepasbaar op productie-AI-systemen in alle sectoren. De volgende factoren maken dit onderwerp bijzonder relevant:
- Alomtegenwoordigheid: De kwetsbaarheidsklasse raakt alle grote modelleveranciers en deploymentconfiguraties
- Impact: Geslaagde exploitatie kan leiden tot datalekken, ongeautoriseerde acties en compliance-schendingen
- Persistentie: De onderliggende architecturale eigenschappen zorgen ervoor dat deze technieken relevant blijven naarmate modellen evolueren
- Regulering: Opkomende regelgeving (EU AI Act, NIST AI RMF) verplicht organisaties steeds meer om deze risico's te beoordelen en mitigeren
Actueel onderzoek
Actief onderzoek op dit gebied omvat:
- Formele robuustheidsgaranties: Ontwikkelen van wiskundige raamwerken om modelgedrag onder begrensde adversarial perturbaties aantoonbaar te maken
- Adversarial training op schaal: Trainingsprocedures die modellen tijdens safety training blootstellen aan adversarial inputs om de robuustheid te verbeteren
- Interpretability-gestuurde verdediging: Mechanistische interpretabiliteit gebruiken om te begrijpen waarom aanvallen op neuronniveau slagen, wat gerichte verdedigingen mogelijk maakt
- Gestandaardiseerde evaluatie: Benchmarks zoals HarmBench en JailbreakBench die systematische meting van aanvals- en verdedigingseffectiviteit mogelijk maken
Overwegingen bij de implementatie
Architectuurpatronen
Bij het implementeren van systemen die met LLM's interacteren, beïnvloeden verschillende architectuurpatronen de beveiligingshouding van de totale applicatie:
Gateway-patroon: Een dedicated API-gateway zit tussen gebruikers en de LLM en handelt authenticatie, rate limiting, inputvalidatie en outputfiltering af. Dit centraliseert beveiligingscontroles maar creëert een single point of failure.
from dataclasses import dataclass
from typing import Optional
import time
@dataclass
class SecurityGateway:
"""Gateway pattern for securing LLM application access."""
input_classifier: object # ML-based input classifier
output_filter: object # Output content filter
rate_limiter: object # Rate limiting service
audit_logger: object # Audit trail logger
def process_request(self, user_id: str, message: str, session_id: str) -> dict:
"""Process a request through all security layers."""
request_id = self._generate_request_id()
# Layer 1: Rate limiting
if not self.rate_limiter.allow(user_id):
self.audit_logger.log(request_id, "rate_limited", user_id)
return {"error": "Rate limit exceeded", "retry_after": 60}
# Layer 2: Input classification
classification = self.input_classifier.classify(message)
if classification.is_adversarial:
self.audit_logger.log(
request_id, "input_blocked",
user_id, classification.category
)
return {"error": "Request could not be processed"}
# Layer 3: LLM processing
response = self._call_llm(message, session_id)
# Layer 4: Output filtering
filtered = self.output_filter.filter(response)
if filtered.was_modified:
self.audit_logger.log(
request_id, "output_filtered",
user_id, filtered.reason
)
# Layer 5: Audit logging
self.audit_logger.log(
request_id, "completed",
user_id, len(message), len(filtered.content)
)
return {"response": filtered.content}
def _generate_request_id(self) -> str:
import uuid
return str(uuid.uuid4())
def _call_llm(self, message: str, session_id: str) -> str:
# LLM API call implementation
passSidecar-patroon: Beveiligingscomponenten draaien naast de LLM als onafhankelijke services, elk verantwoordelijk voor een specifiek beveiligingsaspect. Dit geeft betere isolatie en onafhankelijke scaling, maar verhoogt de systeemcomplexiteit.
Mesh-patroon: Bij multi-agent-systemen heeft elke agent een eigen beveiligingsperimeter met authenticatie, autorisatie en auditing. Communicatie tussen agents volgt zero-trust-principes.
Performance-implicaties
Beveiligingsmaatregelen voegen onvermijdelijk latentie en rekenkundige overhead toe. Inzicht in deze afwegingen is essentieel voor productie-deployments:
| Beveiligingslaag | Typische latentie | Rekenkosten | Impact op UX |
|---|---|---|---|
| Trefwoordfilter | <1ms | Verwaarloosbaar | Geen |
| Regex-filter | 1-5ms | Laag | Geen |
| ML-classifier (klein) | 10-50ms | Gemiddeld | Minimaal |
| ML-classifier (groot) | 50-200ms | Hoog | Merkbaar |
| LLM-as-judge | 500-2000ms | Zeer hoog | Significant |
| Volledige pipeline | 100-500ms | Hoog | Gemiddeld |
De aanbevolen aanpak is om eerst snelle, lichtgewicht checks te gebruiken (trefwoord- en regex-filters) voor voor de hand liggende aanvallen, gevolgd door duurdere op ML gebaseerde analyse alleen voor inputs die de eerste filters passeren. Deze cascadebenadering levert goede beveiliging met acceptabele performance.
Monitoring en observability
Effectieve beveiligingsmonitoring voor LLM-applicaties vereist het bijhouden van metrics die adversarial gedragspatronen vastleggen:
from dataclasses import dataclass
from collections import defaultdict
import time
@dataclass
class SecurityMetrics:
"""Track security-relevant metrics for LLM applications."""
# Counters
total_requests: int = 0
blocked_requests: int = 0
filtered_outputs: int = 0
anomalous_sessions: int = 0
# Rate tracking
_request_times: list = None
_block_times: list = None
def __post_init__(self):
self._request_times = []
self._block_times = []
def record_request(self, was_blocked: bool = False, was_filtered: bool = False):
"""Record a request and its disposition."""
now = time.time()
self.total_requests += 1
self._request_times.append(now)
if was_blocked:
self.blocked_requests += 1
self._block_times.append(now)
if was_filtered:
self.filtered_outputs += 1
def get_block_rate(self, window_seconds: int = 300) -> float:
"""Calculate the block rate over a time window."""
now = time.time()
cutoff = now - window_seconds
recent_requests = sum(1 for t in self._request_times if t > cutoff)
recent_blocks = sum(1 for t in self._block_times if t > cutoff)
if recent_requests == 0:
return 0.0
return recent_blocks / recent_requests
def should_alert(self) -> bool:
"""Determine if current metrics warrant an alert."""
block_rate = self.get_block_rate()
# Alert if block rate exceeds threshold
if block_rate > 0.3: # >30% of requests blocked in last 5 min
return True
return FalseBeveiligingstesten in CI/CD
Het integreren van AI-beveiligingstesten in de ontwikkelingspijplijn vangt regressies op voordat ze in productie terechtkomen:
- Tests op unitniveau: Test individuele beveiligingscomponenten (classifiers, filters) tegen bekende payloads
- Integratietests: Test de volledige beveiligingspipeline end-to-end
- Regressietests: Onderhoud een suite met eerder ontdekte aanvalspayloads en verifieer dat ze geblokkeerd blijven
- Adversarial tests: Voer periodiek geautomatiseerde red team-tools (Garak, Promptfoo) uit als onderdeel van de deployment-pipeline
Opkomende trends
Actuele onderzoeksrichtingen
Het veld van LLM-beveiliging evolueert snel. Belangrijke onderzoeksrichtingen die het landschap waarschijnlijk gaan vormgeven zijn onder andere:
-
Formele verificatie van LLM-gedrag: Onderzoekers verkennen wiskundige raamwerken om eigenschappen van modelgedrag onder adversariële omstandigheden te bewijzen. Hoewel volledige formele verificatie van neurale netwerken onhaalbaar blijft, is begrensde verificatie van specifieke eigenschappen veelbelovend.
-
Adversarial training voor LLM-robuustheid: Naast standaard RLHF ontwikkelen onderzoekers trainingsprocedures die modellen tijdens safety training expliciet blootstellen aan adversarial inputs, wat de robuustheid tegen bekende aanvalspatronen verbetert.
-
Interpretability-gestuurde verdediging: Onderzoek naar mechanistische interpretabiliteit stelt verdedigers in staat te begrijpen waarom specifieke aanvallen op neuron- en circuitniveau slagen, wat richting geeft aan gerichtere defensieve maatregelen.
-
Multi-agent-beveiliging: Naarmate LLM-agents wijdverspreider raken, is het beveiligen van inter-agent-communicatie en het handhaven van vertrouwensgrenzen in agentsystemen een actief onderzoeksgebied met grote praktische gevolgen.
-
Geautomatiseerde redteaming op schaal: Tools zoals NVIDIA's Garak, Microsoft's PyRIT en het Inspect-framework van de Britse AISI maken geautomatiseerde beveiligingstesten op schaal mogelijk die eerder onmogelijk was, maar kwaliteit en dekking van geautomatiseerde testen blijven een open uitdaging.
De integratie van deze onderzoeksrichtingen in productiesystemen zal de volgende generatie AI-beveiligingspraktijken definiëren.
Gevorderde overwegingen
Het evoluerende aanvalslandschap
Het AI-beveiligingslandschap evolueert snel naarmate zowel offensieve technieken als defensieve maatregelen verder ontwikkelen. Diverse trends bepalen de huidige stand van zaken:
Toenemende modelcapaciteiten creëren nieuwe aanvalsoppervlakken. Naarmate modellen toegang krijgen tot tools, code-uitvoering, web browsing en computer use, introduceert elke nieuwe capaciteit potentiële exploitatievectoren die niet bestonden in eerdere, tekst-only-systemen. Het principe van least privilege wordt steeds belangrijker naarmate modelcapaciteiten uitbreiden.
Verbeteringen in safety training zijn noodzakelijk maar niet voldoende. Modelleveranciers investeren fors in safety training via RLHF, DPO, constitutional AI en andere alignment-technieken. Deze verbeteringen leggen de lat hoger voor geslaagde aanvallen, maar elimineren niet de fundamentele kwetsbaarheid: modellen kunnen legitieme instructies niet betrouwbaar onderscheiden van adversarial omdat dat onderscheid niet in de architectuur is gerepresenteerd.
Geautomatiseerde redteaming-tools democratiseren testen. Tools als NVIDIA's Garak, Microsoft's PyRIT en Promptfoo stellen organisaties in staat geautomatiseerde beveiligingstesten uit te voeren zonder diepgaande AI-beveiligingsexpertise. Geautomatiseerde tools vangen echter bekende patronen op; nieuwe aanvallen en business logic-kwetsbaarheden vragen nog steeds om menselijke creativiteit en domeinkennis.
Regulatoire druk drijft organisatorische investeringen. De EU AI Act, NIST AI RMF en sectorspecifieke regelgeving vereisen steeds vaker dat organisaties AI-specifieke risico's beoordelen en mitigeren. Deze regulatoire druk stimuleert investeringen in AI-beveiligingsprogramma's, maar veel organisaties bevinden zich nog in de beginfase van het opbouwen van volwassen AI-beveiligingspraktijken.
Overkoepelende beveiligingsprincipes
Diverse beveiligingsprincipes gelden voor alle onderwerpen in dit curriculum:
-
Defense-in-depth: Geen enkele defensieve maatregel is op zichzelf voldoende. Stapel meerdere onafhankelijke verdedigingen zodat het falen van een afzonderlijke laag niet leidt tot systeemcompromittering. Input-classificatie, outputfiltering, gedragsmonitoring en architecturale controls moeten allemaal aanwezig zijn.
-
Assume breach: Ontwerp systemen vanuit de aanname dat elke afzonderlijke component gecompromitteerd kan raken. Deze mindset leidt tot betere isolatie, monitoring en incident response-mogelijkheden. Wanneer een prompt injection slaagt, moet de schade-radius via architecturale controls worden geminimaliseerd.
-
Least privilege: Geef modellen en agents alleen de minimale capaciteiten die nodig zijn voor hun bedoelde functie. Een klantenservicechatbot heeft geen bestandssysteemtoegang of code-uitvoering nodig. Overmatige capaciteiten vergroten de impact van geslaagde exploitatie.
-
Continu testen: AI-beveiliging is geen eenmalige beoordeling. Modellen veranderen, verdedigingen evolueren en nieuwe aanvalstechnieken worden regelmatig ontdekt. Implementeer continu beveiligingstesten als onderdeel van de ontwikkel- en deploymentlevenscyclus.
-
Secure by default: Standaardconfiguraties moeten veilig zijn. Vereis expliciete opt-in voor risicovolle capaciteiten, gebruik allowlists in plaats van denylists, en houd liever te veel dan te weinig beperkingen aan.
Integratie met organisatorische beveiliging
AI-beveiliging bestaat niet in isolatie — ze moet integreren met het bredere beveiligingsprogramma van de organisatie:
| Beveiligingsdomein | AI-specifieke integratie |
|---|---|
| Identity en Access | API-key-beheer, modeltoegangscontroles, gebruikersauthenticatie voor AI-functies |
| Databescherming | Trainingsdata-classificatie, PII in prompts, dataresidentie voor model-aanroepen |
| Application Security | Threat modeling voor AI-features, prompt injection in SAST/DAST, veilige AI-ontwerpopatronen |
| Incident Response | AI-specifieke playbooks, monitoring van modelgedrag, prompt injection-forensisch onderzoek |
| Compliance | AI-regulatoire mapping (EU AI Act, NIST), AI-audit trails, modeldocumentatie |
| Supply Chain | Modelherkomst, dependency security, integriteitsverificatie van adapter/gewichten |
class OrganizationalIntegration:
"""Framework for integrating AI security with organizational security programs."""
def __init__(self, org_config: dict):
self.config = org_config
self.gaps = []
def assess_maturity(self) -> dict:
"""Assess the organization's AI security maturity."""
domains = {
"governance": self._check_governance(),
"technical_controls": self._check_technical(),
"monitoring": self._check_monitoring(),
"incident_response": self._check_ir(),
"training": self._check_training(),
}
overall = sum(d["score"] for d in domains.values()) / len(domains)
return {"domains": domains, "overall_maturity": round(overall, 1)}
def _check_governance(self) -> dict:
has_policy = self.config.get("ai_security_policy", False)
has_framework = self.config.get("risk_framework", False)
score = (int(has_policy) + int(has_framework)) * 2.5
return {"score": score, "max": 5.0}
def _check_technical(self) -> dict:
controls = ["input_classification", "output_filtering", "rate_limiting", "sandboxing"]
active = sum(1 for c in controls if self.config.get(c, False))
return {"score": active * 1.25, "max": 5.0}
def _check_monitoring(self) -> dict:
has_monitoring = self.config.get("ai_monitoring", False)
has_alerting = self.config.get("ai_alerting", False)
score = (int(has_monitoring) + int(has_alerting)) * 2.5
return {"score": score, "max": 5.0}
def _check_ir(self) -> dict:
has_playbook = self.config.get("ai_ir_playbook", False)
return {"score": 5.0 if has_playbook else 0.0, "max": 5.0}
def _check_training(self) -> dict:
has_training = self.config.get("ai_security_training", False)
return {"score": 5.0 if has_training else 0.0, "max": 5.0}Toekomstige richtingen
Diverse onderzoeks- en industrietrends gaan de evolutie van dit vakgebied bepalen:
- Formele methoden voor AI safety: Ontwikkeling van wiskundige raamwerken die begrensde garanties kunnen bieden over modelgedrag onder adversariële omstandigheden
- Geautomatiseerde redteaming op schaal: Voortdurende verbetering van geautomatiseerde testtools die nieuwe kwetsbaarheden zonder menselijke begeleiding kunnen ontdekken
- AI-ondersteunde verdediging: AI-systemen gebruiken om aanvallen op andere AI-systemen te detecteren en erop te reageren, wat een dynamisch aanval-verdediging-ecosysteem creëert
- Gestandaardiseerde evaluatie: Groeiende adoptie van gestandaardiseerde benchmarks (HarmBench, JailbreakBench) die consistente meting van voortgang mogelijk maken
- Regulatoire harmonisatie: Convergentie van AI-regulatoire raamwerken over jurisdicties heen, wat duidelijkere eisen aan organisaties oplevert
Referenties en verdere lectuur
- OWASP LLM Top 10 2025 — Volledige gids voor LLM-beveiligingsrisico's (owasp.org/www-project-top-10-for-large-language-model-applications)
- MITRE ATLAS — Adversarial Threat Landscape for AI Systems (atlas.mitre.org)
- Zou et al. 2023 — "Universal and Transferable Adversarial Attacks on Aligned Language Models"
- Chao et al. 2023 — "Jailbreaking Black-Box LLMs in Twenty Queries" (PAIR)
- Garak (NVIDIA) — LLM-kwetsbaarheidsscanner (github.com/NVIDIA/garak)
Wat is de effectiefste defensieve strategie tegen de aanvalsklasse die in dit artikel wordt beschreven?
Waarom blijven de technieken in dit artikel effectief ondanks voortdurende beveiligingsverbeteringen door modelleveranciers?