Overzicht: taxonomie van AI-aanvallen
Uitgebreid overzicht van de taxonomie van AI-aanvallen, met alle belangrijke aanvalscategorieën en hun onderlinge verbanden.
Overzicht
Uitgebreid overzicht van de taxonomie van AI-aanvallen, met alle belangrijke aanvalscategorieën en hun onderlinge verbanden.
Dit onderwerp vormt een cruciaal terrein binnen AI-beveiliging dat onderwerp is geweest van veel 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, of dat nu in een offensieve of een defensieve rol is.
Zou et al. 2023 — "Universal and Transferable Adversarial Attacks on Aligned Language Models" biedt fundamentele context voor de kwetsbaarheidsklasse die in dit artikel wordt verkend.
Kernconcepten
Grondbeginselen
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 in meer of mindere mate alle op transformers gebaseerde taalmodellen treffen.
Het begrijpen van deze fundamentele eigenschap is de sleutel tot inzicht in waarom de technieken in dit artikel 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 werkt boven op 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 raakvlak tussen het vermogen om instructies op te volgen en bronauthenticatie. Tijdens de training leren modellen instructies op te volgen die in specifieke formats en contexten worden gepresenteerd. Een aanvaller die adversarial content kan presenteren in een format dat aansluit op de aangeleerde patronen voor het opvolgen van instructies, kan het modelgedrag met grote betrouwbaarheid beïnvloeden.
from dataclasses import dataclass
from typing import Optional
import json
@dataclass
class SecurityAnalysis:
"""Kader voor het analyseren van de beveiligingseigenschappen van LLM-systemen."""
target: str
model: str
defenses: list
vulnerabilities: list
def assess_risk(self, attack_type: str) -> dict:
"""Beoordeel het risico voor een specifiek aanvalstype."""
# Controleer of een verdediging dit aanvalstype afdekt
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:
"""Beoordeel 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:
"""Bereken 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:
"""Genereer 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 | Toegangspunt | Typische impact | Verdedigingsaanpak |
|---|---|---|---|
| Directe injectie | Input van het gebruikersbericht | Extractie van de systeemprompt, omzeilen van veiligheid | Inputclassificatie |
| Indirecte injectie | Externe databronnen (web, documenten, tools) | Data-exfiltratie, ongeautoriseerde acties | Datasanitisatie |
| 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
Het toepassen van deze concepten in de praktijk vereist een systematische methodologie:
class PracticalFramework:
"""Praktisch kader 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 doelwit."""
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:
"""Rapporteer 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:
"""Verstuur de payload naar het doelwit (implementatie verschilt per doelwit)."""
pass
def _evaluate(self, response: str) -> bool:
"""Evalueer of de aanval succesvol was."""
pass
def _detect_defense(self, response: str) -> Optional[str]:
"""Detecteer welk verdedigingsmechanisme is geactiveerd."""
passVerdedigingsoverwegingen
Inzicht in verdedigingsmaatregelen is even belangrijk:
-
Inputvalidatie: de eerste verdedigingslinie. Zet inputclassificatoren in die inkomende prompts op adversarial patronen beoordelen voordat ze het model bereiken. Moderne classificatoren combineren keyword matching, regex-patronen en ML-gebaseerde detectie voor brede dekking.
-
Outputfiltering: het vangnet. Verwerk alle modeloutput na om datalekken, fragmenten van de systeemprompt en andere beleidsovertredingen op te sporen en te verwijderen. Outputfilters moeten losstaan van inputfilters om defense-in-depth te bieden.
-
Gedragsmonitoring: de detectielaag. Monitor interactiepatronen met het model op afwijkingen die wijzen op een lopende aanval — ongebruikelijke verzoekpatronen, herhaalde weigeringen of responskenmerken die afwijken van het basisgedrag.
-
Architectuurontwerp: de fundering. Ontwerp applicatiearchitecturen die het vertrouwen in modeloutput minimaliseren, least privilege afdwingen voor tooltoegang en duidelijke beveiligingsgrenzen tussen componenten handhaven.
Relevantie in de praktijk
Deze concepten zijn rechtstreeks toepasbaar op AI-systemen in productie, in alle sectoren. De volgende factoren maken dit onderwerp bijzonder relevant:
- Alomtegenwoordigheid: de kwetsbaarheidsklasse treft alle grote modelaanbieders en uitrolconfiguraties
- Impact: succesvol misbruik kan leiden tot datablootstelling, ongeautoriseerde acties en compliance-overtredingen
- 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
Actief onderzoek op dit gebied omvat:
- Formele robuustheidsgaranties: het ontwikkelen van wiskundige kaders om modelgedrag onder begrensde adversarial verstoring te bewijzen
- Adversarial training op schaal: trainingsprocedures die modellen tijdens de veiligheidstraining blootstellen aan adversarial input om de robuustheid te verbeteren
- Interpreteerbaarheidsgestuurde verdediging: mechanistische interpreteerbaarheid inzetten om te begrijpen waarom aanvallen op neuronniveau slagen, wat gerichte verdedigingen mogelijk maakt
- Gestandaardiseerde evaluatie: benchmarks zoals HarmBench en JailbreakBench die systematische meting van de effectiviteit van aanvallen en verdedigingen mogelijk maken
Implementatieoverwegingen
Architectuurpatronen
Bij het bouwen van systemen die met LLM's interageren, beïnvloeden verschillende architectuurpatronen de beveiligingsstatus van de gehele applicatie:
Gateway-patroon: een dedicated API-gateway zit tussen gebruikers en de LLM en regelt authenticatie, rate limiting, inputvalidatie en outputfiltering. Dit centraliseert de beveiligingscontroles, maar creëert een single point of failure.
from dataclasses import dataclass
from typing import Optional
import time
@dataclass
class SecurityGateway:
"""Gateway-patroon voor het beveiligen van toegang tot een LLM-applicatie."""
input_classifier: object # ML-gebaseerde inputclassificator
output_filter: object # Filter voor outputcontent
rate_limiter: object # Rate limiting-service
audit_logger: object # Logger voor het audittrail
def process_request(self, user_id: str, message: str, session_id: str) -> dict:
"""Verwerk 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: inputclassificatie
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: outputfiltering
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 onafhankelijke services, elk verantwoordelijk voor een specifiek beveiligingsaspect. Dit biedt betere isolatie en onafhankelijke schaalbaarheid, maar vergroot de systeemcomplexiteit.
Mesh-patroon: bij multi-agent-systemen heeft elke agent zijn eigen beveiligingsperimeter met authenticatie, autorisatie en auditing. Communicatie tussen agents volgt zero-trust-principes.
Prestatie-implicaties
Beveiligingsmaatregelen voegen onvermijdelijk latentie en rekenkosten toe. Inzicht in deze afwegingen is essentieel voor productie-uitrol:
| Beveiligingslaag | Typische latentie | Rekenkosten | Impact op UX |
|---|---|---|---|
| Keyword-filter | <1ms | Verwaarloosbaar | Geen |
| Regex-filter | 1-5ms | Laag | Geen |
| ML-classificator (klein) | 10-50ms | Gemiddeld | Minimaal |
| ML-classificator (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 te gebruiken (keyword- en regex-filters) om voor de hand liggende aanvallen te onderscheppen, gevolgd door duurdere ML-gebaseerde analyse alleen voor input die de eerste filters passeert. Deze cascadeaanpak biedt goede beveiliging met aanvaardbare prestaties.
Monitoring en observability
Effectieve beveiligingsmonitoring voor LLM-applicaties vereist het bijhouden van metrieken die patronen van adversarial gedrag vastleggen:
from dataclasses import dataclass
from collections import defaultdict
import time
@dataclass
class SecurityMetrics:
"""Houd beveiligingsrelevante metrieken 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):
"""Registreer 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:
"""Bereken 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:
"""Bepaal of de huidige metrieken een alert rechtvaardigen."""
block_rate = self.get_block_rate()
# Alert als het blokkadepercentage de drempel overschrijdt
if block_rate > 0.3: # >30% van de verzoeken geblokkeerd in de laatste 5 min
return True
return FalseBeveiligingstesten in CI/CD
Door AI-beveiligingstesten in de ontwikkelpijplijn te integreren, vang je regressies op voordat ze de productie bereiken:
- Tests op unitniveau: test afzonderlijke beveiligingscomponenten (classificatoren, filters) tegen bekende payloads
- Integratietests: test de volledige beveiligingspijplijn van begin tot eind
- Regressietests: onderhoud een verzameling eerder ontdekte aanvalspayloads en controleer of ze geblokkeerd blijven
- Adversarial tests: draai periodiek geautomatiseerde red team-tools (Garak, Promptfoo) als onderdeel van de deploymentpijplijn
Opkomende trends
Huidige onderzoeksrichtingen
Het vakgebied van LLM-beveiliging evolueert snel. Belangrijke onderzoeksrichtingen die het landschap waarschijnlijk gaan bepalen zijn onder meer:
-
Formele verificatie van LLM-gedrag: onderzoekers verkennen wiskundige kaders om eigenschappen van modelgedrag onder adversarial 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 de veiligheidstraining expliciet blootstellen aan adversarial input, wat de robuustheid tegen bekende aanvalspatronen verbetert.
-
Interpreteerbaarheidsgestuurde verdediging: mechanistisch interpreteerbaarheidsonderzoek stelt verdedigers in staat te begrijpen waarom specifieke aanvallen op neuron- en circuitniveau slagen, wat gerichtere verdedigingsmaatregelen informeert.
-
Multi-agent-beveiliging: nu LLM-agents steeds gangbaarder worden, is het beveiligen van communicatie tussen agents en het handhaven van vertrouwensgrenzen over agentsystemen heen een actief onderzoeksgebied met aanzienlijke praktische gevolgen.
-
Geautomatiseerde red teaming op schaal: tools zoals NVIDIA's Garak, Microsofts PyRIT en het Inspect-framework van het Britse AISI maken geautomatiseerd beveiligingstesten mogelijk op een schaal die voorheen onhaalbaar was, al blijven de kwaliteit en dekking van geautomatiseerd testen 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 snel, naarmate zowel offensieve technieken als verdedigingsmaatregelen vorderen. Verschillende trends bepalen de huidige stand van zaken:
Toenemende modelmogelijkheden creëren nieuwe aanvalsoppervlakken. Naarmate modellen toegang krijgen tot tools, code-uitvoering, webbrowsen en computergebruik, introduceert elke nieuwe mogelijkheid potentiële vectoren voor misbruik die in eerdere, tekstgebaseerde systemen niet bestonden. Het principe van least privilege wordt steeds belangrijker naarmate de mogelijkheden van modellen uitbreiden.
Verbeteringen in veiligheidstraining zijn noodzakelijk maar niet voldoende. Modelaanbieders investeren zwaar in veiligheidstraining via RLHF, DPO, constitutional AI en andere alignmenttechnieken. Deze verbeteringen leggen de lat hoger voor succesvolle aanvallen, maar elimineren de fundamentele kwetsbaarheid niet: modellen kunnen legitieme instructies niet betrouwbaar onderscheiden van adversarial instructies, omdat dit onderscheid niet in de architectuur is vertegenwoordigd.
Geautomatiseerde red teaming-tools democratiseren het testen. Tools zoals NVIDIA's Garak, Microsofts PyRIT en Promptfoo stellen organisaties in staat geautomatiseerde beveiligingstesten uit te voeren zonder diepgaande expertise in AI-beveiliging. Geautomatiseerde tools onderscheppen echter bekende patronen; nieuwe aanvallen en kwetsbaarheden in de businesslogica vereisen nog steeds menselijke creativiteit en domeinkennis.
Druk vanuit regelgeving stuurt investeringen door organisaties. 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 stimuleert investeringen in AI-beveiligingsprogramma's, maar veel organisaties staan nog aan het begin van het opbouwen van volwassen AI-beveiligingspraktijken.
Overkoepelende beveiligingsprincipes
Een aantal beveiligingsprincipes geldt voor alle onderwerpen in dit curriculum:
-
Defense-in-depth: geen enkele afzonderlijke verdedigingsmaatregel is voldoende. Stapel meerdere onafhankelijke verdedigingen zodat het falen van één laag niet leidt tot compromittering van het systeem. Inputclassificatie, outputfiltering, gedragsmonitoring en architecturale controles moeten allemaal aanwezig zijn.
-
Ga uit van een breach: ontwerp systemen vanuit de aanname dat elk afzonderlijk component gecompromitteerd kan worden. Deze mindset leidt tot betere isolatie, monitoring en incident response-mogelijkheden. Wanneer een prompt injection slaagt, moet de blast radius via architecturale controles worden geminimaliseerd.
-
Least privilege: geef modellen en agents alleen de minimale mogelijkheden die nodig zijn voor hun beoogde functie. Een klantenservice-chatbot heeft geen toegang tot het bestandssysteem of code-uitvoering nodig. Overmatige mogelijkheden vergroten de impact van succesvol misbruik.
-
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 uitrolcyclus.
-
Veilig als standaard: standaardconfiguraties moeten veilig zijn. Vereis expliciete opt-in voor risicovolle mogelijkheden, gebruik allowlists in plaats van denylists en kies bij twijfel voor beperking in plaats van toestaan.
Integratie met de beveiliging van de organisatie
AI-beveiliging bestaat niet in isolatie — het moet integreren met het bredere beveiligingsprogramma van de organisatie:
| Beveiligingsdomein | AI-specifieke integratie |
|---|---|
| Identiteit en toegang | Beheer van API-sleutels, toegangscontroles op modellen, gebruikersauthenticatie voor AI-functies |
| Databescherming | Classificatie van trainingsdata, PII in prompts, dataresidentie voor modelaanroepen |
| Application security | 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-audittrails, modeldocumentatie |
| Supply chain | Modelherkomst, beveiliging van dependencies, integriteitsverificatie van adapters/gewichten |
class OrganizationalIntegration:
"""Kader voor het integreren van AI-beveiliging met beveiligingsprogramma's van de organisatie."""
def __init__(self, org_config: dict):
self.config = org_config
self.gaps = []
def assess_maturity(self) -> dict:
"""Beoordeel 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: ontwikkeling van wiskundige kaders die begrensde garanties kunnen bieden over modelgedrag onder adversarial omstandigheden
- Geautomatiseerde red teaming op schaal: voortdurende verbetering van geautomatiseerde testtools die nieuwe kwetsbaarheden kunnen ontdekken zonder menselijke sturing
- AI-ondersteunde verdediging: AI-systemen inzetten om aanvallen op andere AI-systemen te detecteren en erop te reageren, waarmee een dynamisch ecosysteem van aanval en verdediging ontstaat
- Gestandaardiseerde evaluatie: toenemende adoptie van gestandaardiseerde benchmarks (HarmBench, JailbreakBench) die consistente meting van vooruitgang mogelijk maken
- Harmonisatie van regelgeving: convergentie van AI-regelgevingskaders over jurisdicties heen, wat duidelijkere eisen voor organisaties oplevert
Referenties en verder lezen
- OWASP LLM Top 10 2025 — Uitgebreide gids over beveiligingsrisico's van LLM'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) — kwetsbaarheidsscanner voor LLM's (github.com/NVIDIA/garak)
Wat is de meest effectieve verdedigingsstrategie tegen de aanvalsklasse die in dit artikel wordt beschreven?
Waarom blijven de technieken die in dit artikel worden beschreven effectief, ondanks voortdurende beveiligingsverbeteringen door modelaanbieders?