Inzicht in LLM-veiligheidstraining
Hoe veiligheidstraining werkt, waaronder RLHF, DPO en Constitutional AI, en waarom ze omzeild kan worden.
Overzicht
Hoe veiligheidstraining werkt, waaronder RLHF, DPO en Constitutional AI, en waarom ze omzeild kan worden.
Dit onderwerp is een kritiek gebied binnen AI-beveiliging dat onderwerp is geweest van uitgebreid onderzoek en misbruik in de praktijk. Inzicht in de concepten, technieken en verdedigingsmaatregelen die hier worden behandeld is essentieel voor iedereen die in AI-beveiliging werkt, in zowel offensieve als defensieve rollen.
Zou et al. 2023 — "Universal and Transferable Adversarial Attacks on Aligned Language Models" biedt de fundamentele context voor de kwetsbaarheidsklasse die in dit artikel wordt verkend.
Kernbegrippen
Fundamentele principes
De beveiligingsimplicaties van dit onderwerp komen voort uit fundamentele eigenschappen van de manier waarop moderne taalmodellen worden ontworpen, getraind en uitgerold. Dit zijn geen geïsoleerde implementatiefouten, maar systemische kenmerken die alle transformer-gebaseerde taalmodellen in meer of mindere mate raken.
Inzicht in deze fundamentele eigenschap is de sleutel tot het begrijpen waarom de in dit artikel beschreven technieken werken en waarom ze effectief blijven ondanks de voortdurende verbeteringen in de veiligheidstraining van modellen. Veiligheidstraining voegt een gedragslaag toe die het minder waarschijnlijk maakt dat modellen overduidelijk schadelijke instructies opvolgen, maar deze laag draait bovenop dezelfde architectuur en kan worden beïnvloed door dezelfde attention-mechanismen die legitieme invoer verwerken.
Technische verdieping
Het mechanisme achter deze kwetsbaarheidsklasse werkt op het snijvlak van de capaciteit om instructies te volgen en de authenticatie van de bron. Tijdens de training leren modellen om instructies te volgen die in specifieke formaten en contexten worden aangeboden. Een aanvaller die adversariële content kan aanbieden in een formaat dat overeenkomt met de aangeleerde instructievolgende patronen van het model, kan het modelgedrag met grote betrouwbaarheid beïnvloeden.
from dataclasses import dataclass
from typing import Optional
import json
@dataclass
class SecurityAnalysis:
"""Framework voor het analyseren van beveiligingseigenschappen van LLM-systemen."""
target: str
model: str
defenses: list
vulnerabilities: list
def assess_risk(self, attack_type: str) -> dict:
"""Beoordeelt het risico voor een specifiek aanvalstype."""
# Controleer of een verdediging dit aanvalstype adresseert
relevant_defenses = [
d for d in self.defenses
if attack_type in d.get("covers", [])
]
# Risicofactoren
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:
"""Beoordeelt de potentiële impact van een aanvalstype."""
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:
"""Berekent het totale risico op basis van waarschijnlijkheid en 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:
"""Genereert een risicobeoordelingsrapport."""
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
Inzicht in het aanvalsoppervlak is essentieel voor zowel offensief als defensief werk:
| Aanvalsvector | Ingang | Gebruikelijke impact | Verdedigingsaanpak |
|---|---|---|---|
| Directe injectie | Invoer van gebruikersbericht | Extractie van system prompt, omzeiling van veiligheid | Invoerclassificatie |
| Indirecte injectie | Externe gegevensbronnen (web, documenten, tools) | Data-exfiltratie, ongeautoriseerde acties | Datasanering |
| Misbruik van function calling | Injectie via toolparameters | Ongeautoriseerde API-aanroepen, datatoegang | Tool-sandboxing |
| Geheugenmanipulatie | Gespreksgeschiedenis, persistent geheugen | Persistentie over sessies heen, valse context | Geheugenvalidatie |
| Contextmanipulatie | Beheer van het contextvenster | Overschrijven van instructieprioriteit | Contextisolatie |
Praktische toepassing
Implementatieaanpak
Deze concepten in de praktijk toepassen vereist een systematische methodologie:
class PracticalFramework:
"""Praktisch framework om de concepten uit dit artikel toe te passen."""
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 een specifieke aanvalsvector tegen het target."""
self.tested_vectors.add(vector)
# Verstuur de payload
response = self._send(payload)
# Evalueer het resultaat
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:
"""Rapporteert over de testdekking."""
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:
"""Verstuurt de payload naar het target (implementatie verschilt per target)."""
pass
def _evaluate(self, response: str) -> bool:
"""Evalueert of de aanval is geslaagd."""
pass
def _detect_defense(self, response: str) -> Optional[str]:
"""Detecteert welk verdedigingsmechanisme werd geactiveerd."""
passVerdedigingsoverwegingen
Inzicht in verdedigingsmaatregelen is even belangrijk:
-
Invoervalidatie: de eerste verdedigingslinie. Zet invoerclassifiers in die binnenkomende prompts beoordelen op adversariële patronen voordat ze het model bereiken. Moderne classifiers combineren keyword matching, regex-patronen en ML-gebaseerde detectie voor volledige dekking.
-
Uitvoerfiltering: het vangnet. Bewerk alle modeluitvoer na om lekken van gevoelige data, fragmenten van de system prompt en andere beleidsschendingen te detecteren en te verwijderen. Uitvoerfilters moeten onafhankelijk zijn van invoerfilters om defense-in-depth te bieden.
-
Gedragsmonitoring: de detectielaag. Monitor de interactiepatronen van het model op anomalieën die wijzen op lopende aanvallen — ongebruikelijke verzoekpatronen, herhaalde weigeringen of responskenmerken die afwijken van het basisgedrag.
-
Architectuurontwerp: het fundament. Ontwerp applicatie-architecturen die zo min mogelijk vertrouwen stellen in modeluitvoer, least privilege voor tooltoegang afdwingen en duidelijke beveiligingsgrenzen tussen componenten aanhouden.
Relevantie in de praktijk
Deze concepten zijn direct toepasbaar op AI-productiesystemen in alle sectoren. De volgende factoren maken dit onderwerp bijzonder relevant:
- Alomtegenwoordigheid: de kwetsbaarheidsklasse treft alle grote modelaanbieders en deployment-configuraties
- Impact: geslaagd misbruik kan leiden tot blootstelling van data, ongeautoriseerde acties en schendingen van compliance
- Persistentie: de onderliggende architecturale eigenschappen zorgen ervoor dat deze technieken relevant blijven naarmate modellen evolueren
- Regelgeving: opkomende regelgeving (EU AI Act, NIST AI RMF) verplicht organisaties steeds vaker om deze risico's te beoordelen en te mitigeren
Actueel onderzoek
Het actuele onderzoek in dit domein omvat:
- Formele robuustheidsgaranties: het ontwikkelen van wiskundige raamwerken om modelgedrag te bewijzen onder begrensde adversariële verstoring
- Adversariële training op schaal: trainingsprocedures die modellen tijdens de veiligheidstraining blootstellen aan adversariële invoer om de robuustheid te verbeteren
- Interpreteerbaarheidsgestuurde verdediging: mechanistische interpreteerbaarheid gebruiken om te begrijpen waarom aanvallen slagen op neuronniveau, wat gerichte verdedigingen mogelijk maakt
- Gestandaardiseerde evaluatie: benchmarks zoals HarmBench en JailbreakBench die een systematische meting van de effectiviteit van aanvallen en verdedigingen mogelijk maken
Implementatieoverwegingen
Architectuurpatronen
Bij het bouwen van systemen die met LLM's interacteren, beïnvloeden verschillende architectuurpatronen de beveiligingshouding van de applicatie als geheel:
Gateway-patroon: een speciale API-gateway zit tussen gebruikers en de LLM en verzorgt authenticatie, rate limiting, invoervalidatie en uitvoerfiltering. Dit centraliseert de beveiligingscontroles, maar creëert één enkel faalpunt.
from dataclasses import dataclass
from typing import Optional
import time
@dataclass
class SecurityGateway:
"""Gateway-patroon om de toegang tot een LLM-applicatie te beveiligen."""
input_classifier: object # ML-gebaseerde invoerclassifier
output_filter: object # Contentfilter voor de uitvoer
rate_limiter: object # Rate limiting-service
audit_logger: object # Logger voor het audit trail
def process_request(self, user_id: str, message: str, session_id: str) -> dict:
"""Verwerkt een verzoek door alle beveiligingslagen heen."""
request_id = self._generate_request_id()
# Laag 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}
# Laag 2: Invoerclassificatie
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"}
# Laag 3: LLM-verwerking
response = self._call_llm(message, session_id)
# Laag 4: Uitvoerfiltering
filtered = self.output_filter.filter(response)
if filtered.was_modified:
self.audit_logger.log(
request_id, "output_filtered",
user_id, filtered.reason
)
# Laag 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:
# Implementatie van de LLM API-aanroep
passSidecar-patroon: beveiligingscomponenten draaien naast de LLM als zelfstandige services, elk verantwoordelijk voor een specifiek beveiligingsaspect. Dit biedt betere isolatie en onafhankelijke schaalbaarheid, maar vergroot de complexiteit van het systeem.
Mesh-patroon: bij multi-agentsystemen heeft elke agent zijn eigen beveiligingsperimeter met authenticatie, autorisatie en auditing. Communicatie tussen agents volgt zero-trust-principes.
Gevolgen voor de prestaties
Beveiligingsmaatregelen voegen onvermijdelijk latency en rekenkracht toe. Inzicht in deze afwegingen is essentieel voor productie-deployments:
| Beveiligingslaag | Gebruikelijke latency | Rekenkosten | Impact op UX |
|---|---|---|---|
| Keywordfilter | <1ms | Verwaarloosbaar | Geen |
| Regex-filter | 1-5ms | Laag | Geen |
| ML-classifier (klein) | 10-50ms | Matig | Minimaal |
| ML-classifier (groot) | 50-200ms | Hoog | Merkbaar |
| LLM-as-judge | 500-2000ms | Zeer hoog | Aanzienlijk |
| Volledige pijplijn | 100-500ms | Hoog | Gemiddeld |
De aanbevolen aanpak is om eerst snelle, lichtgewicht controles uit te voeren (keyword- en regex-filters) om voor de hand liggende aanvallen te onderscheppen, gevolgd door duurdere ML-gebaseerde analyse, alleen voor invoer die de eerste filters passeert. Deze getrapte aanpak biedt goede beveiliging met acceptabele prestaties.
Monitoring en observability
Effectieve beveiligingsmonitoring voor LLM-applicaties vereist het bijhouden van metrics die adversariële gedragspatronen vastleggen:
from dataclasses import dataclass
from collections import defaultdict
import time
@dataclass
class SecurityMetrics:
"""Houdt beveiligingsrelevante metrics bij voor LLM-applicaties."""
# Tellers
total_requests: int = 0
blocked_requests: int = 0
filtered_outputs: int = 0
anomalous_sessions: int = 0
# Snelheidsmeting
_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):
"""Registreert een verzoek en de afhandeling ervan."""
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:
"""Berekent het blokkadepercentage over een tijdvenster."""
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:
"""Bepaalt of de huidige metrics een alert rechtvaardigen."""
block_rate = self.get_block_rate()
# Alert als het blokkadepercentage een drempel overschrijdt
if block_rate > 0.3: # >30% van de verzoeken geblokkeerd in de laatste 5 min
return True
return FalseBeveiligingstests in CI/CD
Door AI-beveiligingstests in de ontwikkelpijplijn te integreren, vang je regressies op voordat ze de productie bereiken:
- Unit-tests: test afzonderlijke beveiligingscomponenten (classifiers, filters) tegen bekende payloads
- Integratietests: test de volledige beveiligingspijplijn end-to-end
- Regressietests: houd een verzameling eerder ontdekte aanvals-payloads aan en controleer of die geblokkeerd blijven
- Adversariële tests: draai periodiek geautomatiseerde red team-tools (Garak, Promptfoo) als onderdeel van de deployment-pijplijn
Opkomende trends
Huidige onderzoeksrichtingen
Het vakgebied van LLM-beveiliging evolueert razendsnel. Belangrijke onderzoeksrichtingen die het landschap waarschijnlijk gaan vormgeven, zijn onder meer:
-
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.
-
Adversariële training voor LLM-robuustheid: naast standaard-RLHF ontwikkelen onderzoekers trainingsprocedures die modellen tijdens de veiligheidstraining expliciet blootstellen aan adversariële invoer, wat de robuustheid tegen bekende aanvalspatronen verbetert.
-
Interpreteerbaarheidsgestuurde verdediging: onderzoek naar mechanistische interpreteerbaarheid stelt verdedigers in staat om te begrijpen waarom specifieke aanvallen slagen op neuron- en circuitniveau, wat gerichtere verdedigingsmaatregelen oplevert.
-
Multi-agentbeveiliging: nu LLM-agents steeds gangbaarder worden, is het beveiligen van communicatie tussen agents en het bewaken van vertrouwensgrenzen over agentsystemen heen een actief onderzoeksgebied met aanzienlijke praktische implicaties.
-
Geautomatiseerde redteaming op schaal: tools zoals Garak van NVIDIA, PyRIT van Microsoft en het Inspect-framework van het Britse AISI maken geautomatiseerde beveiligingstests mogelijk op een schaal die voorheen ondenkbaar was, maar de kwaliteit en dekking van geautomatiseerd testen blijft een open uitdaging.
De integratie van deze onderzoeksrichtingen in productiesystemen zal de volgende generatie AI-beveiligingspraktijken bepalen.
Gevorderde overwegingen
Het evoluerende aanvalslandschap
Het AI-beveiligingslandschap evolueert razendsnel naarmate zowel offensieve technieken als verdedigingsmaatregelen vooruitgaan. Verschillende trends bepalen de huidige stand van zaken:
Toenemende modelcapaciteiten creëren nieuwe aanvalsoppervlakken. Naarmate modellen toegang krijgen tot tools, code-uitvoering, webbrowsing en computer use, introduceert elke nieuwe capaciteit potentiële misbruikvectoren die in eerdere, alleen-tekstsystemen niet bestonden. Het principe van least privilege wordt steeds belangrijker naarmate de capaciteiten van modellen uitbreiden.
Verbeteringen in veiligheidstraining zijn noodzakelijk, maar niet voldoende. Modelaanbieders investeren fors in veiligheidstraining via RLHF, DPO, Constitutional AI en andere alignment-technieken. Deze verbeteringen leggen de lat voor geslaagde aanvallen hoger, maar nemen de fundamentele kwetsbaarheid niet weg: modellen kunnen legitieme instructies niet betrouwbaar onderscheiden van adversariële, omdat dit onderscheid niet in de architectuur is verankerd.
Geautomatiseerde red team-tools democratiseren het testen. Tools zoals Garak van NVIDIA, PyRIT van Microsoft en Promptfoo stellen organisaties in staat geautomatiseerde beveiligingstests uit te voeren zonder diepgaande AI-beveiligingsexpertise. Geautomatiseerde tools vangen echter bekende patronen op; nieuwe aanvallen en kwetsbaarheden in de bedrijfslogica vereisen nog steeds menselijke creativiteit en domeinkennis.
Druk vanuit regelgeving stuwt investeringen van organisaties aan. De EU AI Act, NIST AI RMF en sectorspecifieke regelgeving verplichten organisaties steeds vaker om AI-specifieke risico's te beoordelen en te mitigeren. Deze regeldruk stuwt investeringen in AI-beveiligingsprogramma's aan, maar veel organisaties bevinden zich nog in de vroege fasen van het opbouwen van volwassen AI-beveiligingspraktijken.
Overkoepelende beveiligingsprincipes
Verschillende beveiligingsprincipes gelden voor alle onderwerpen in dit curriculum:
-
Defense-in-depth: geen enkele verdedigingsmaatregel is voldoende. Stapel meerdere onafhankelijke verdedigingen, zodat het falen van een afzonderlijke laag niet leidt tot compromittering van het systeem. Invoerclassificatie, uitvoerfiltering, gedragsmonitoring en architecturale controles zouden allemaal aanwezig moeten zijn.
-
Ga uit van een inbreuk: ontwerp systemen vanuit de aanname dat elk afzonderlijk component gecompromitteerd kan raken. Deze mindset leidt tot betere isolatie, monitoring en incident response-capaciteiten. Wanneer een prompt injection slaagt, zou de blast radius via architecturale controles geminimaliseerd moeten worden.
-
Least privilege: geef modellen en agents alleen de minimale capaciteiten die nodig zijn voor hun beoogde functie. Een klantenservice-chatbot heeft geen toegang tot het bestandssysteem of code-uitvoering nodig. Buitensporige capaciteiten vergroten de impact van geslaagd misbruik.
-
Continu testen: AI-beveiliging is geen eenmalige beoordeling. Modellen veranderen, verdedigingen evolueren en nieuwe aanvalstechnieken worden regelmatig ontdekt. Implementeer continue beveiligingstests als onderdeel van de ontwikkel- en deployment-levenscyclus.
-
Secure by default: standaardconfiguraties zouden veilig moeten zijn. Vereis expliciete opt-in voor risicovolle capaciteiten, gebruik allowlists in plaats van denylists, en kies bij twijfel voor beperking in plaats van toegeeflijkheid.
Integratie met de organisatiebeveiliging
AI-beveiliging staat niet op zichzelf — het moet aansluiten op het bredere beveiligingsprogramma van de organisatie:
| Beveiligingsdomein | AI-specifieke integratie |
|---|---|
| Identiteit en toegang | Beheer van API-sleutels, modeltoegangscontroles, gebruikersauthenticatie voor AI-functies |
| Gegevensbescherming | Classificatie van trainingsdata, PII in prompts, dataresidentie voor modelaanroepen |
| Applicatiebeveiliging | Dreigingsmodellering van AI-functies, prompt injection in SAST/DAST, veilige AI-ontwerppatronen |
| Incident response | AI-specifieke playbooks, monitoring van modelgedrag, forensisch onderzoek naar prompt injection |
| Compliance | Mapping van AI-regelgeving (EU AI Act, NIST), AI-audit trails, modeldocumentatie |
| Supply chain | Modelherkomst, dependency-beveiliging, integriteitsverificatie van adapters/gewichten |
class OrganizationalIntegration:
"""Framework om AI-beveiliging te integreren met organisatiebrede beveiligingsprogramma's."""
def __init__(self, org_config: dict):
self.config = org_config
self.gaps = []
def assess_maturity(self) -> dict:
"""Beoordeelt de volwassenheid van de AI-beveiliging van de organisatie."""
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
Verschillende trends in onderzoek en industrie zullen de evolutie van dit vakgebied vormgeven:
- Formele methoden voor AI-veiligheid: het ontwikkelen 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 kunnen ontdekken zonder menselijke sturing
- AI-ondersteunde verdediging: AI-systemen gebruiken om aanvallen op andere AI-systemen te detecteren en erop te reageren, wat een dynamisch aanval-verdedigingsecosysteem creëert
- Gestandaardiseerde evaluatie: groeiende adoptie van gestandaardiseerde benchmarks (HarmBench, JailbreakBench) die een consistente meting van vooruitgang mogelijk maken
- Harmonisatie van regelgeving: convergentie van AI-regelgevingskaders over rechtsgebieden heen, wat duidelijkere eisen voor organisaties oplevert
Referenties en verder lezen
- OWASP LLM Top 10 2025 — Uitgebreide gids over 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 meest effectieve verdedigingsstrategie tegen de aanvalsklasse die in dit artikel wordt beschreven?
Waarom blijven de in dit artikel beschreven technieken effectief, ondanks de voortdurende beveiligingsverbeteringen door modelaanbieders?