Documentmetadata-injectie
Injecteer vijandige content via documentmetadatavelden die door multimodale AI-systemen verwerkt worden.
Overzicht
Injecteer vijandige content via documentmetadatavelden die door multimodale AI-systemen verwerkt worden.
Dit onderwerp vertegenwoordigt een kritiek gebied in AI-beveiliging dat het onderwerp is geweest van significant onderzoek en exploitatie uit de praktijk. Het begrijpen van de concepten, technieken en verdedigingsmaatregelen die hier behandeld worden, is essentieel voor iedereen die in AI-beveiliging werkt, of dat nu in offensieve of defensieve rollen is.
Zou et al. 2023 — "Universal and Transferable Adversarial Attacks" (aangepast voor multimodaal) biedt fundamentele context voor de kwetsbaarheidsklasse die in dit artikel verkend wordt.
Kernconcepten
Fundamentele principes
De beveiligingsimplicaties van dit onderwerp komen voort uit fundamentele eigenschappen van hoe moderne taalmodellen ontworpen, getraind en ingezet worden. Dit zijn geen geïsoleerde implementatiefouten maar eerder systemische kenmerken die alle transformer-gebaseerde taalmodellen in verschillende mate beïnvloeden.
Het begrijpen van deze fundamentele eigenschap is de sleutel tot het begrijpen van waarom de technieken die in dit artikel beschreven worden werken en waarom ze effectief blijven ondanks voortdurende verbeteringen in modelveiligheidstraining. Veiligheidstraining voegt een gedragslaag toe die modellen minder geneigd maakt om duidelijk schadelijke instructies op te volgen, maar deze laag opereert bovenop dezelfde architectuur en kan beïnvloed worden door dezelfde attentiemechanismen die legitieme input verwerken.
Technische verdieping
Het mechanisme dat ten grondslag ligt aan deze kwetsbaarheidsklasse opereert op de interactie tussen het vermogen om instructies op te volgen en bronauthenticatie. Tijdens de training leren modellen instructies op te volgen die in specifieke formaten en contexten gepresenteerd worden. Een aanvaller die vijandige content kan presenteren in een formaat dat overeenkomt met de geleerde instructie-opvolgingspatronen 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 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 aanpakt
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 algehele 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 begrijpen van het aanvalsoppervlak is essentieel voor zowel offensief als defensief werk:
| Aanvalsvector | Toegangspunt | Typische impact | Verdedigingsaanpak |
|---|---|---|---|
| Directe injectie | Gebruikersberichtinput | Systeempromptextractie, veiligheidsbypass | Inputclassificatie |
| Indirecte injectie | Externe gegevensbronnen (web, documenten, tools) | Data-exfiltratie, ongeautoriseerde acties | Datasanitatie |
| Misbruik van function calling | Injectie van toolparameters | Ongeautoriseerde API-aanroepen, datatoegang | Tool-sandboxing |
| Geheugenmanipulatie | Gespreksgeschiedenis, persistent geheugen | Persistentie over sessies heen, valse context | Geheugenvalidatie |
| Contextmanipulatie | Beheer van het contextvenster | Override van instructieprioriteit | Contextisolatie |
Praktische toepassing
Implementatieaanpak
Het in de praktijk toepassen van deze concepten 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 doel."""
self.tested_vectors.add(vector)
# Stuur 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:
"""Stuur de payload naar het doel (implementatie varieert per doel)."""
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 getriggerd werd."""
passVerdedigingsoverwegingen
Het begrijpen van verdedigingsmaatregelen is even belangrijk:
-
Inputvalidatie: De eerste verdedigingslinie. Zet inputclassifiers in die binnenkomende prompts beoordelen op vijandige patronen voordat ze het model bereiken. Moderne classifiers combineren trefwoordherkenning, regex-patronen en ML-gebaseerde detectie voor uitgebreide dekking.
-
Outputfiltering: Het vangnet. Verwerk alle modeluitvoer na om lekkage van gevoelige data, systeempromptfragmenten en andere beleidsschendingen te detecteren en te verwijderen. Outputfilters zouden onafhankelijk moeten zijn van inputfilters om defense-in-depth te bieden.
-
Gedragsmonitoring: De detectielaag. Monitor modelinteractiepatronen op anomalieën die wijzen op lopende aanvallen — ongebruikelijke verzoekpatronen, herhaalde weigeringen of responskenmerken die afwijken van het baselinegedrag.
-
Architectuurontwerp: Het fundament. Ontwerp applicatie-architecturen die het vertrouwen in modeluitvoer minimaliseren, least privilege afdwingen voor tooltoegang en duidelijke beveiligingsgrenzen tussen componenten handhaven.
Relevantie uit de praktijk
Deze concepten zijn direct toepasbaar op productie-AI-systemen in alle sectoren. De volgende factoren maken dit onderwerp bijzonder relevant:
- Alomtegenwoordigheid: De kwetsbaarheidsklasse beïnvloedt alle grote modelproviders en implementatieconfiguraties
- Impact: Succesvolle exploitatie 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) vereist steeds vaker dat organisaties deze risico's beoordelen en mitigeren
Huidig onderzoek
Actief onderzoek in dit gebied omvat:
- Formele robuustheidsgaranties: Het ontwikkelen van wiskundige frameworks om modelgedrag te bewijzen onder begrensde vijandige verstoring
- Vijandige training op schaal: Trainingsprocedures die modellen tijdens veiligheidstraining blootstellen aan vijandige inputs 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 systematische meting van aanvals- en verdedigingseffectiviteit mogelijk maken
Implementatieoverwegingen
Architectuurpatronen
Bij het implementeren van systemen die met LLM's interacteren, beïnvloeden verschillende architectuurpatronen de beveiligingshouding van de algehele applicatie:
Gateway-patroon: Een dedicated API-gateway bevindt zich tussen gebruikers en het LLM en verzorgt authenticatie, rate limiting, inputvalidatie en outputfiltering. Dit centraliseert beveiligingscontroles maar creëert een enkel faalpunt.
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 # ML-gebaseerde inputclassifier
output_filter: object # Outputcontentfilter
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:
"""Verwerk een verzoek door alle beveiligingslagen."""
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 het LLM als onafhankelijke services, elk verantwoordelijk voor een specifiek aspect van beveiliging. Dit biedt betere isolatie en onafhankelijke schaling maar verhoogt de systeemcomplexiteit.
Mesh-patroon: Voor 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 rekenkundige overhead toe. Het begrijpen van deze afwegingen is essentieel voor productie-implementaties:
| Beveiligingslaag | Typische latentie | Rekenkundige kosten | 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 | Significant |
| Volledige pijplijn | 100-500ms | Hoog | Matig |
De aanbevolen aanpak is om eerst snelle, lichtgewicht controles te gebruiken (trefwoord- en regex-filters) om voor de hand liggende aanvallen te vangen, gevolgd door duurdere ML-gebaseerde analyse alleen voor inputs die de initiële filters passeren. Deze cascade-aanpak biedt goede beveiliging met acceptabele prestaties.
Monitoring en observability
Effectieve beveiligingsmonitoring voor LLM-applicaties vereist het bijhouden van metrieken die vijandige gedragspatronen 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
# Snelheidstracking
_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 blokkeerpercentage 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 het blokkeerpercentage 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
Het integreren van AI-beveiligingstesten in de ontwikkelingspijplijn vangt regressies op voordat ze de productie bereiken:
- Tests op unitniveau: Test individuele beveiligingscomponenten (classifiers, filters) tegen bekende payloads
- Integratietests: Test de volledige beveiligingspijplijn end-to-end
- Regressietests: Onderhoud een suite van eerder ontdekte aanvalspayloads en verifieer dat ze geblokkeerd blijven
- Vijandige tests: Voer periodiek geautomatiseerde red team-tools (Garak, Promptfoo) uit als onderdeel van de implementatiepijplijn
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 frameworks voor het bewijzen van eigenschappen over modelgedrag onder vijandige omstandigheden. Hoewel volledige formele verificatie van neurale netwerken onhandelbaar blijft, toont begrensde verificatie van specifieke eigenschappen belofte.
-
Vijandige training voor LLM-robuustheid: Naast standaard-RLHF ontwikkelen onderzoekers trainingsprocedures die modellen tijdens veiligheidstraining expliciet blootstellen aan vijandige inputs, wat de robuustheid tegen bekende aanvalspatronen verbetert.
-
Interpreteerbaarheidsgestuurde verdediging: Onderzoek naar mechanistische interpreteerbaarheid stelt verdedigers in staat te begrijpen waarom specifieke aanvallen slagen op neuron- en circuitniveau, wat gerichtere verdedigingsmaatregelen informeert.
-
Multi-agent-beveiliging: Naarmate LLM-agents prominenter worden, is het beveiligen van communicatie tussen agents en het handhaven van vertrouwensgrenzen over agentsystemen heen een actief onderzoeksgebied met aanzienlijke praktische implicaties.
-
Geautomatiseerd red teaming op schaal: Tools zoals NVIDIA's Garak, Microsoft's PyRIT en het Inspect-framework van de UK AISI maken geautomatiseerd beveiligingstesten mogelijk op schalen die voorheen onmogelijk waren, maar de kwaliteit en dekking van geautomatiseerd testen blijven een open uitdaging.
De integratie van deze onderzoeksrichtingen in productiesystemen zal de volgende generatie AI-beveiligingspraktijken bepalen.
Geavanceerde overwegingen
Het evoluerende aanvalslandschap
Het AI-beveiligingslandschap evolueert snel naarmate zowel offensieve technieken als defensieve maatregelen vorderen. Verschillende trends bepalen de huidige stand van zaken:
Toenemende modelcapaciteiten creëren nieuwe aanvalsoppervlakken. Naarmate modellen toegang krijgen tot tools, code-uitvoering, surfen op het web 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 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 succesvolle aanvallen maar elimineren de fundamentele kwetsbaarheid niet: modellen kunnen legitieme instructies niet betrouwbaar onderscheiden van vijandige, omdat dit onderscheid niet in de architectuur gerepresenteerd is.
Geautomatiseerde red teaming-tools democratiseren het testen. Tools zoals NVIDIA's Garak, Microsoft's PyRIT en Promptfoo stellen organisaties in staat geautomatiseerd beveiligingstesten uit te voeren zonder diepgaande AI-beveiligingsexpertise. Geautomatiseerde tools vangen echter bekende patronen; nieuwe aanvallen en kwetsbaarheden in bedrijfslogica vereisen nog steeds menselijke creativiteit en domeinkennis.
Regelgevende druk stimuleert 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 regelgevende druk stimuleert investeringen in AI-beveiligingsprogramma's, maar veel organisaties bevinden zich nog in de vroege stadia van het opbouwen van volwassen AI-beveiligingspraktijken.
Overkoepelende beveiligingsprincipes
Verschillende beveiligingsprincipes zijn van toepassing op alle onderwerpen die in dit curriculum behandeld worden:
-
Defense-in-depth: Geen enkele verdedigingsmaatregel is voldoende. Stapel meerdere onafhankelijke verdedigingen zodat het falen van een enkele laag niet leidt tot compromittering van het systeem. Inputclassificatie, outputfiltering, gedragsmonitoring en architecturale controles zouden allemaal aanwezig moeten zijn.
-
Veronderstel inbreuk: Ontwerp systemen ervan uitgaande dat elk individueel component gecompromitteerd kan worden. Deze mindset leidt tot betere isolatie-, monitoring- en incidentresponscapaciteiten. Wanneer een prompt-injectie slaagt, zou de blast radius geminimaliseerd moeten worden door architecturale controles.
-
Least privilege: Verleen modellen en agents alleen de minimale capaciteiten die nodig zijn voor hun beoogde functie. Een chatbot voor klantenservice heeft geen toegang tot het bestandssysteem of code-uitvoering nodig. Overmatige capaciteiten vergroten de impact van succesvolle 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 ontwikkelings- en implementatielevenscyclus.
-
Veilig standaard: Standaardconfiguraties zouden veilig moeten zijn. Vereis expliciete opt-in voor riskante capaciteiten, gebruik allowlists in plaats van denylists en kies bij twijfel voor restrictie in plaats van toegeeflijkheid.
Integratie met organisatorische beveiliging
AI-beveiliging bestaat niet in isolatie — het moet integreren met het bredere beveiligingsprogramma van de organisatie:
| Beveiligingsdomein | AI-specifieke integratie |
|---|---|
| Identity en Access | Beheer van API-sleutels, modeltoegangscontroles, gebruikersauthenticatie voor AI-functies |
| Databescherming | Classificatie van trainingsdata, PII in prompts, dataresidentie voor modelaanroepen |
| Applicatiebeveiliging | Dreigingsmodellering van AI-functies, prompt-injectie in SAST/DAST, veilige AI-ontwerppatronen |
| Incidentrespons | AI-specifieke playbooks, monitoring van modelgedrag, forensisch onderzoek van prompt-injectie |
| Compliance | AI-regelgevingskoppeling (EU AI Act, NIST), AI-audittrails, modeldocumentatie |
| Toeleveringsketen | Modelherkomst, afhankelijkheidsbeveiliging, integriteitsverificatie van adapter/gewichten |
class OrganizationalIntegration:
"""Framework voor het integreren van AI-beveiliging met organisatorische beveiligingsprogramma's."""
def __init__(self, org_config: dict):
self.config = org_config
self.gaps = []
def assess_maturity(self) -> dict:
"""Beoordeel de AI-beveiligingsvolwassenheid 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 frameworks die begrensde garanties kunnen bieden over modelgedrag onder vijandige omstandigheden
- Geautomatiseerd red teaming op schaal: Voortdurende verbetering van geautomatiseerde testtools die nieuwe kwetsbaarheden kunnen ontdekken zonder menselijke begeleiding
- 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
- Regelgevingsharmonisatie: Convergentie van AI-regelgevingskaders over jurisdicties heen, wat duidelijkere eisen voor organisaties biedt
Referenties / Verder lezen
- OWASP LLM Top 10 2025 — Comprehensive guide to LLM security risks (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" (adapted for multimodal)
- Anthropic 2024 — "Many-shot Jailbreaking" technical report
- Inspect AI (UK AISI) — AI safety evaluations (github.com/UKGovernmentBEIS/inspect_ai)
Wat is de meest effectieve verdedigingsstrategie tegen de aanvalsklasse die in dit artikel beschreven wordt?
Waarom blijven de technieken die in dit artikel beschreven worden effectief ondanks voortdurende beveiligingsverbeteringen door modelproviders?