Uitrolpatronen en beveiliging van LLM's
Veelvoorkomende uitrolpatronen voor LLM's en hun beveiligingsimplicaties, waaronder directe API-, RAG-, agent- en pijplijnarchitecturen.
Overzicht
Veelvoorkomende uitrolpatronen voor LLM's en hun beveiligingsimplicaties, waaronder directe API-, RAG-, agent- en pijplijnarchitecturen.
Dit onderwerp vormt een kritiek gebied binnen AI-beveiliging dat het onderwerp is geweest van veel onderzoek en misbruik in de praktijk. De concepten, technieken en defensieve maatregelen die hier worden behandeld, begrijpen 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 onderzocht.
Kernconcepten
Fundamentele principes
De beveiligingsimplicaties van dit onderwerp vloeien voort uit fundamentele eigenschappen van hoe moderne taalmodellen worden ontworpen, getraind en uitgerold. Dit zijn geen geïsoleerde implementatiefouten, maar systemische kenmerken die in wisselende mate alle op transformers gebaseerde taalmodellen treffen.
Deze fundamentele eigenschap begrijpen is de sleutel tot het begrijpen waarom de technieken die in dit artikel worden beschreven 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 bovenop dezelfde architectuur en kan worden beïnvloed door dezelfde attention-mechanismen die legitieme invoer verwerken.
Technische verdieping
Het mechanisme dat aan deze kwetsbaarheidsklasse ten grondslag ligt, werkt op het raakvlak tussen de capaciteit om instructies op te volgen en bronauthenticatie. Tijdens de training leren modellen instructies op 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 patronen van het model om instructies op te volgen, 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:
"""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 uit 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
Het aanvalsoppervlak begrijpen is essentieel voor zowel offensief als defensief werk:
| Aanvalsvector | Toegangspunt | Typische impact | Verdedigingsaanpak |
|---|---|---|---|
| Directe injectie | Invoer van gebruikersbericht | Extractie van de system prompt, veiligheidsbypass | Invoerclassificatie |
| Indirecte injectie | Externe gegevensbronnen (web, documenten, tools) | Data-exfiltratie, ongeautoriseerde acties | Datasanering |
| Misbruik van function calling | Parameterinjectie in tools | Ongeautoriseerde API-calls, datatoegang | Tool-sandboxing |
| Geheugenmanipulatie | Gespreksgeschiedenis, persistent geheugen | Persistentie over sessies heen, valse context | Geheugenvalidatie |
| Contextmanipulatie | Beheer van het contextvenster | Overschrijven van de instructieprioriteit | Contextisolatie |
Praktische toepassing
Implementatieaanpak
Deze concepten in de praktijk toepassen vereist een systematische methodologie:
class PracticalFramework:
"""Praktisch framework voor het toepassen van de concepten in dit artikel."""
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 geslaagd was."""
pass
def _detect_defense(self, response: str) -> Optional[str]:
"""Detecteer welk verdedigingsmechanisme werd geactiveerd."""
passVerdedigingsoverwegingen
Defensieve maatregelen begrijpen 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 trefwoordmatching, regex-patronen en op ML gebaseerde detectie voor volledige dekking.
-
Uitvoerfiltering: het vangnet. Verwerk alle modeluitvoer na om lekken van gevoelige data, fragmenten van de system prompt en andere beleidsovertredingen te detecteren en te verwijderen. Uitvoerfilters moeten onafhankelijk zijn van invoerfilters om verdediging in de diepte te bieden.
-
Gedragsmonitoring: de detectielaag. Monitor de interactiepatronen van het model op afwijkingen die op een lopende aanval wijzen — ongebruikelijke verzoekpatronen, herhaalde weigeringen of antwoordkenmerken die afwijken van het basisgedrag.
-
Architectuurontwerp: het fundament. Ontwerp applicatiearchitecturen die het vertrouwen in modeluitvoer minimaliseren, minimale rechten voor tooltoegang afdwingen 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 modelproviders en uitrolconfiguraties
- Impact: geslaagd misbruik kan leiden tot datablootstelling, ongeautoriseerde acties en compliance-overtredingen
- Persistentie: de onderliggende architectuureigenschappen zorgen ervoor dat deze technieken relevant blijven naarmate modellen evolueren
- Regelgeving: opkomende regelgeving (EU AI Act, NIST AI RMF) verplicht organisaties steeds vaker deze risico's te beoordelen en te mitigeren
Lopend onderzoek
Actief onderzoek op dit gebied omvat:
- Formele robuustheidsgaranties: het ontwikkelen van wiskundige raamwerken om modelgedrag onder begrensde adversariële verstoring te bewijzen
- Adversarial training op schaal: trainingsprocedures die modellen tijdens de veiligheidstraining blootstellen aan adversariële invoer om de robuustheid te verbeteren
- Door interpreteerbaarheid gestuurde verdediging: mechanistische interpreteerbaarheid gebruiken om te begrijpen waarom aanvallen op neuronniveau slagen, waardoor gerichte verdediging mogelijk wordt
- Gestandaardiseerde evaluatie: benchmarks zoals HarmBench en JailbreakBench die een systematische meting van de effectiviteit van aanvallen en verdedigingen mogelijk maken
Implementatieoverwegingen
Architectuurpatronen
Bij het implementeren van systemen die met LLM's communiceren, beïnvloeden verschillende architectuurpatronen de beveiligingshouding van de totale applicatie:
Gateway-patroon: een speciale API-gateway zit tussen de gebruikers en het LLM en handelt authenticatie, rate limiting, invoervalidatie en uitvoerfiltering af. 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 LLM-applicaties."""
input_classifier: object # Op ML gebaseerde invoerclassifier
output_filter: object # Contentfilter voor uitvoer
rate_limiter: object # Rate limiting-service
audit_logger: object # Logger voor het auditspoor
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: 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: auditlogging
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-call
passSidecar-patroon: beveiligingscomponenten draaien naast het LLM als onafhankelijke 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. De communicatie tussen agents volgt zero-trust-principes.
Prestatie-implicaties
Beveiligingsmaatregelen voegen onvermijdelijk latentie en rekenoverhead toe. Deze afwegingen begrijpen is essentieel voor uitrol in productie:
| Beveiligingslaag | Typische latentie | Rekenkosten | Impact op UX |
|---|---|---|---|
| Trefwoordfilter | <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 | Matig |
De aanbevolen aanpak is om eerst snelle, lichte controles te gebruiken (trefwoord- en regex-filters) om voor de hand liggende aanvallen te onderscheppen, gevolgd door duurdere op ML gebaseerde analyse, alleen voor invoer die de eerste filters passeert. Deze trapsgewijze aanpak biedt goede beveiliging met acceptabele prestaties.
Monitoring en observeerbaarheid
Effectieve beveiligingsmonitoring voor LLM-applicaties vereist het bijhouden van metrieken die adversariële gedragspatronen in beeld brengen:
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
# Snelheidsregistratie
_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 de blokkeerratio 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 waarschuwing rechtvaardigen."""
block_rate = self.get_block_rate()
# Waarschuw als de blokkeerratio 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
Het integreren van AI-beveiligingstests in de ontwikkelpijplijn onderschept regressies voordat ze in productie terechtkomen:
- Tests op unit-niveau: test afzonderlijke beveiligingscomponenten (classifiers, filters) tegen bekende payloads
- Integratietests: test de volledige beveiligingspijplijn van begin tot eind
- Regressietests: onderhoud een verzameling eerder ontdekte aanvals-payloads en verifieer dat ze geblokkeerd blijven
- Adversariële tests: draai periodiek geautomatiseerde red team-tools (Garak, Promptfoo) als onderdeel van de uitrolpijplijn
Opkomende trends
Huidige onderzoeksrichtingen
Het vakgebied van LLM-beveiliging evolueert snel. Belangrijke onderzoeksrichtingen die het landschap waarschijnlijk zullen vormgeven, zijn onder meer:
-
Formele verificatie voor 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, biedt begrensde verificatie van specifieke eigenschappen perspectief.
-
Adversarial training voor robuustheid van LLM's: naast standaard RLHF ontwikkelen onderzoekers trainingsprocedures die modellen tijdens de veiligheidstraining expliciet blootstellen aan adversariële invoer, wat de robuustheid tegen bekende aanvalspatronen verbetert.
-
Door interpreteerbaarheid gestuurde verdediging: onderzoek naar mechanistische interpreteerbaarheid stelt verdedigers in staat te begrijpen waarom specifieke aanvallen op neuron- en circuitniveau slagen, wat gerichtere defensieve maatregelen informeert.
-
Beveiliging van multi-agentsystemen: naarmate LLM-agents gangbaarder worden, is het beveiligen van communicatie tussen agents en het handhaven van vertrouwensgrenzen over agentsystemen heen een actief onderzoeksgebied met aanzienlijke praktische implicaties.
-
Geautomatiseerde AI-redteaming op schaal: tools zoals NVIDIA's Garak, Microsofts PyRIT en het Inspect-framework van het Britse AISI maken geautomatiseerde beveiligingstests mogelijk op een schaal die voorheen onmogelijk was, maar de kwaliteit en dekking van geautomatiseerd testen blijven een open uitdaging.
De integratie van deze onderzoeksrichtingen in systemen in productie zal de volgende generatie AI-beveiligingspraktijken bepalen.
Geavanceerde overwegingen
Het veranderende aanvalslandschap
Het AI-beveiligingslandschap evolueert snel naarmate zowel offensieve technieken als defensieve maatregelen 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 misbruikvectoren die in eerdere, alleen-tekstsystemen niet bestonden. Het principe van minimale rechten wordt steeds belangrijker naarmate de mogelijkheden van modellen toenemen.
Verbeteringen in de veiligheidstraining zijn noodzakelijk maar niet voldoende. Modelproviders investeren zwaar in veiligheidstraining via RLHF, DPO, constitutional AI en andere alignment-technieken. Deze verbeteringen leggen de lat hoger voor geslaagde aanvallen, maar elimineren de fundamentele kwetsbaarheid niet: modellen kunnen legitieme instructies niet betrouwbaar onderscheiden van adversariële, omdat dit onderscheid niet in de architectuur is vertegenwoordigd.
Geautomatiseerde red team-tools democratiseren het testen. Tools zoals NVIDIA's Garak, Microsofts PyRIT en Promptfoo stellen organisaties in staat geautomatiseerde beveiligingstests uit te voeren zonder diepgaande expertise in AI-beveiliging. Geautomatiseerde tools onderscheppen echter bekende patronen; nieuwe aanvallen en kwetsbaarheden in de bedrijfslogica vereisen nog steeds menselijke creativiteit en domeinkennis.
Druk vanuit regelgeving drijft organisatorische investeringen. De EU AI Act, NIST AI RMF en sectorspecifieke regelgeving verplichten organisaties steeds vaker AI-specifieke risico's te beoordelen en te mitigeren. Deze regeldruk drijft investeringen in AI-beveiligingsprogramma's, maar veel organisaties bevinden zich nog in de beginfase van het opbouwen van volwassen AI-beveiligingspraktijken.
Overkoepelende beveiligingsprincipes
Verschillende beveiligingsprincipes gelden voor alle onderwerpen die in dit curriculum worden behandeld:
-
Verdediging in de diepte: geen enkele defensieve maatregel is voldoende. Stapel meerdere onafhankelijke verdedigingen zodat het falen van één laag niet leidt tot compromittering van het systeem. Invoerclassificatie, uitvoerfiltering, gedragsmonitoring en architecturale controles moeten allemaal aanwezig zijn.
-
Ga uit van een inbraak: ontwerp systemen in de veronderstelling dat elk afzonderlijk component gecompromitteerd kan raken. Deze houding leidt tot betere isolatie, monitoring en mogelijkheden voor incidentrespons. Wanneer een prompt injection slaagt, moet de impactstraal door architecturale controles worden geminimaliseerd.
-
Minimale rechten: geef modellen en agents alleen de minimale mogelijkheden die nodig zijn voor hun bedoelde functie. Een klantenservicechatbot heeft geen toegang tot het bestandssysteem of code-uitvoering nodig. Buitensporige mogelijkheden 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 uitrolcyclus.
-
Standaard veilig: standaardconfiguraties moeten veilig zijn. Vereis een expliciete opt-in voor risicovolle mogelijkheden, gebruik allowlists in plaats van denylists en kies bij twijfel voor beperking in plaats van toegeeflijkheid.
Integratie met de organisatiebrede beveiliging
AI-beveiliging staat niet op zichzelf — ze moet worden geïntegreerd in het bredere beveiligingsprogramma van de organisatie:
| Beveiligingsdomein | AI-specifieke integratie |
|---|---|
| Identiteit en toegang | Beheer van API-sleutels, toegangscontroles voor modellen, gebruikersauthenticatie voor AI-functies |
| Databescherming | Classificatie van trainingsdata, PII in prompts, dataresidentie voor modelaanroepen |
| Applicatiebeveiliging | Dreigingsmodellering voor AI-functies, prompt injection in SAST/DAST, veilige AI-ontwerppatronen |
| Incidentrespons | AI-specifieke playbooks, monitoring van modelgedrag, forensisch onderzoek naar prompt injection |
| Compliance | Mapping van AI-regelgeving (EU AI Act, NIST), AI-auditsporen, modeldocumentatie |
| Supply chain | Herkomst van modellen, beveiliging van dependencies, integriteitsverificatie van adapters/gewichten |
class OrganizationalIntegration:
"""Framework voor het integreren van AI-beveiliging met organisatiebrede beveiligingsprogramma's."""
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 onderzoeks- en industrietrends zullen de evolutie van dit vakgebied vormgeven:
- Formele methoden voor AI-veiligheid: ontwikkeling van wiskundige raamwerken die begrensde garanties kunnen bieden over modelgedrag onder adversariële omstandigheden
- Geautomatiseerde AI-redteaming op schaal: voortdurende verbetering van geautomatiseerde testtools die nieuwe kwetsbaarheden kunnen ontdekken zonder menselijke sturing
- Door AI ondersteunde verdediging: AI-systemen gebruiken om aanvallen op andere AI-systemen te detecteren en erop te reageren, waardoor een dynamisch aanval-verdediging-ecosysteem ontstaat
- 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 jurisdicties heen, wat duidelijkere eisen voor organisaties oplevert
Referenties en verder lezen
- OWASP LLM Top 10 2025 — Uitgebreide gids voor 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 de voortdurende beveiligingsverbeteringen door modelproviders?