AI-anomaliedetectie
Jailbreakpogingen, ongebruikelijke gebruikspatronen, uitvoerdrift en anomalieën in de embeddingruimte detecteren in AI-systemen via statistische en op ML gebaseerde methoden.
Het anomaliedetectieprobleem voor AI
Anomaliedetectie in traditionele software is relatief eenvoudig: definieer "normaal" (responstijd onder 200ms, foutpercentage onder 1%) en alarmeer wanneer waarnemingen afwijken. Voor AI-systemen is "normaal" veel moeilijker te definiëren, omdat de uitvoer van het systeem inherent variabel is — twee identieke prompts kunnen verschillende antwoorden produceren, en een breed scala aan onderwerpen en gespreksstijlen is allemaal legitiem.
Jailbreakpogingen detecteren
Jailbreakdetectie is de meest onmiddellijk bruikbare vorm van AI-anomaliedetectie. Verschillende complementaire benaderingen kunnen worden gecombineerd:
Op classifier gebaseerde detectie
Train een speciale classifier om onderscheid te maken tussen goedaardige en adversariële invoer.
| Aanpak | Voordelen | Nadelen |
|---|---|---|
| Gefinetunede transformer | Hoge nauwkeurigheid op bekende patronen | Mist nieuwe aanvallen; vereist gelabelde trainingsdata |
| Zero-shot-classificatie | Geen trainingsdata nodig; detecteert intentie | Lagere precisie; hoge fout-positieve rate |
| Ensemble-classifier | Combineert meerdere signalen voor robuustheid | Hogere latentie; complexere inzet |
Op perplexiteit gebaseerde detectie
Adversariële invoer, met name GCG-achtige achtervoegsels en gecodeerde payloads, heeft vaak een abnormaal hoge perplexiteit — het model vindt ze "verrassend" omdat ze niet op natuurlijke taal lijken.
def detect_adversarial_by_perplexity(text: str, threshold: float = 100.0) -> bool:
"""Markeer invoer met ongewoon hoge perplexiteit."""
tokens = tokenizer.encode(text)
with torch.no_grad():
outputs = model(torch.tensor([tokens]))
log_probs = outputs.logits.log_softmax(dim=-1)
# Bereken perplexiteit
token_log_probs = [
log_probs[0, i, tokens[i+1]].item()
for i in range(len(tokens) - 1)
]
perplexity = math.exp(-sum(token_log_probs) / len(token_log_probs))
return perplexity > thresholdBeperking: Op perplexiteit gebaseerde detectie vangt verhaspelde adversariële strings op, maar mist natuurlijke-taal-jailbreaks die vloeiende tekst met lage perplexiteit gebruiken.
Detectie op semantische gelijkenis
Vergelijk binnenkomende prompts met een database van bekende jailbreaktemplates met behulp van embeddingsimilariteit:
- Bereken embeddings voor alle bekende jailbreakprompts
- Bereken voor elke binnenkomende prompt zijn embedding en vind de dichtstbijzijnde buren in de jailbreakdatabase
- Markeer prompts met cosinusgelijkenis boven een drempel ten opzichte van een bekende jailbreak
Beperking: Effectief tegen varianten van bekende aanvallen, maar kan werkelijk nieuwe technieken niet detecteren.
Detectie van gedragspatronen
In plaats van individuele invoer te classificeren, volg je gedragspatronen over een gebruikerssessie:
| Patroon | Wijst op | Detectiemethode |
|---|---|---|
| Snel itereren op vergelijkbare prompts | Jailbreakzoektocht | Bewerkingsafstand tussen opeenvolgende prompts |
| Escaleren van goedaardige naar gevoelige onderwerpen | Crescendo-aanval | Onderwerpclassificatie per beurt |
| Frequente verzoeken om rollenspel of persona | Op rol gebaseerde jailbreak | Intentieclassificatie voor persona-wisseling |
| Ongewoon lange invoer | Uitbuiting van contextvenster | Monitoring van invoerlengte |
| Gecodeerde of geobfusqueerde inhoud | Ontwijkingspoging | Analyse van entropie en tekendistributie |
Ongebruikelijke gebruikspatronen detecteren
Naast individuele jailbreakpogingen onthullen geaggregeerde gebruikspatronen systematische adversariële activiteit.
Anomalieën op gebruikersniveau
| Signaal | Normaal bereik | Afwijkend | Mogelijke oorzaak |
|---|---|---|---|
| Verzoeken per uur | 5-50 | 500+ | Geautomatiseerd scannen of extractie |
| Gemiddelde invoerlengte | 20-200 tokens | 2000+ tokens | Volstoppen van context of payloadlevering |
| Gemiddelde uitvoerlengte | 50-500 tokens | 4000+ tokens | Extractie of data-exfiltratie |
| Unieke onderwerpen per sessie | 1-5 | 50+ | Systematisch sonderen |
| Weigeringspercentage | 0-5% | 30%+ | Actieve jailbreakpoging |
| Verhouding tool-aanroepen | 10-30% | 90%+ | Toolmisbruik via injectie |
Temporele anomalieën
- Activiteit buiten kantooruren: Geconcentreerd gebruik tijdens uren waarop de gebruikersbasis normaal inactief is
- Burstpatronen: Korte periodes van intense activiteit gevolgd door lange pauzes (kenmerkend voor geautomatiseerde tools die in batches draaien)
- Periodieke patronen: Regelmatige intervallen tussen verzoeken die wijzen op gescripte toegang
- Anomalieën in sessielengte: Zeer lange sessies of sessies met een ongewoon aantal beurten
Op cohort gebaseerde anomalieën
Vergelijk individuele gebruikers met hun cohort in plaats van met globale baselines:
- Een ontwikkelaar die een code-assistent met 200 verzoeken/uur gebruikt, kan normaal zijn voor ontwikkelaars maar afwijkend voor klantenservicemedewerkers
- De onderwerpdistributie zou moeten worden vergeleken met gebruikers met vergelijkbare rollen of gebruikssituaties
- Nieuwe accounts met gedragspatronen die overeenkomen met bekende aanvalstools zouden moeten worden gemarkeerd
Detectie van uitvoerdrift
Uitvoerdrift treedt op wanneer de antwoorden van het model geleidelijk veranderen in karakter, kwaliteit of alignment. Dit kan wijzen op modeldegradatie, vergiftigde fine-tuning of corruptie van RAG-bronnen.
Soorten uitvoerdrift
| Drifttype | Beschrijving | Detectiemethode |
|---|---|---|
| Kwaliteitsdrift | Uitvoer wordt na verloop van tijd minder coherent of minder nauwkeurig | Geautomatiseerde kwaliteitsscoring (perplexiteit, BLEU, semantische coherentie) |
| Alignmentdrift | Uitvoer raakt minder afgestemd op veiligheidsbeleid | Periodieke veiligheidsbenchmark-evaluatie |
| Onderwerpdrift | Uitvoer verschuift naar onverwachte onderwerpen | Onderwerpclassifier toegepast op de uitvoerdistributie |
| Toondrift | Sentiment of formaliteit van de uitvoer verandert | Sentimentanalyse over voortschrijdende vensters |
| Feitelijkheidsdrift | Uitvoer bevat meer ongegronde beweringen | Feitencontrole tegen de kennisbank |
Methoden voor driftdetectie
Statistische tests: Pas distributievergelijkingstests toe (KL-divergentie, Jensen-Shannon-divergentie, Kolmogorov-Smirnov-test) op distributies van uitvoerkenmerken over tijdvensters.
Op referentie gebaseerde monitoring: Onderhoud een "golden set" van verwachte antwoorden op canonieke query's. Herevalueer het model periodiek tegen deze golden set en alarmeer bij significante veranderingen.
Embeddingdrift: Volg het zwaartepunt en de variantie van uitvoerembeddings in de tijd. Een verschuivend zwaartepunt wijst op systematische drift; toenemende variantie wijst op afnemende consistentie.
Embeddingruimte-monitoring
Op embeddings gebaseerde monitoring biedt een krachtig zicht op systeemgedrag op representatieniveau:
Monitoring van invoerembeddings
Plot invoerembeddings in de tijd om verschuivingen te detecteren in waar gebruikers naar vragen:
- Clusteropkomst: Nieuwe clusters van invoer die verschijnen en historisch niet aanwezig waren, kunnen wijzen op gecoördineerde adversariële activiteit
- Clusterdrift: Bestaande clusters die van locatie verschuiven, kunnen wijzen op geleidelijke onderwerpevolutie of manipulatie
- Uitschietersdetectie: Invoer ver van enig bestaand cluster kan een nieuwe aanval zijn
Monitoring van uitvoerembeddings
Volg uitvoerembeddings om veranderingen te detecteren in wat het model produceert:
- Alignmentcorridor: Definieer een verwachte regio van de embeddingruimte voor acceptabele uitvoer. Uitvoer die buiten deze corridor valt, kan het beleid schenden.
- Verboden regio's: Definieer regio's van de embeddingruimte die overeenkomen met bekende categorieën schadelijke inhoud. Uitvoer nabij deze regio's triggert alarmen.
- Gelijkenis met bekend-schadelijke inhoud: Bereken de gelijkenis tussen uitvoer en een database van schadelijke voorbeelden.
Monitoring van RAG-bronnen
Monitor voor retrieval-augmented generation-systemen de embeddingruimte van opgehaalde documenten:
- Broncontaminatie: Nieuwe documenten die in het ophaalcorpus verschijnen en clusteren nabij adversariële inhoud
- Ophaaldrift: Veranderingen in welke documenten het vaakst worden opgehaald
- Injectiedetectie: Documenten die ingebedde instructies bevatten (hoge gelijkenis met prompt-injectietemplates)
Een anomaliedetectiepijplijn bouwen
Baselines vaststellen
Verzamel 2-4 weken aan data van normale werking. Bereken statistische baselines voor alle belangrijke metrieken. Identificeer natuurlijke patronen (dagcycli, weekcycli, seizoenspatronen).
Detectiemethoden selecteren
Kies voor elk dreigingstype passende detectiemethoden. Combineer meerdere methoden voor defense in depth. Prioriteer methoden op basis van de meest waarschijnlijke aanvalsvectoren voor jouw systeem.
Initiële drempels instellen
Begin met conservatieve drempels (lage gevoeligheid, minimale fout-positieven). Gebruik historische data om detectiegraden te kalibreren.
Monitoring inzetten
Implementeer realtime-monitoring voor kritieke signalen en batch-monitoring voor trendanalyse. Zorg ervoor dat monitoring geen significante latentie introduceert.
Afstemmen en itereren
Beoordeel alarmen wekelijks. Pas drempels aan op basis van fout-positieve/fout-negatieve rates. Voeg nieuwe detectieregels toe naarmate nieuwe aanvalspatronen opkomen. Verwijder regels die consequent fout-positieven produceren.
Anomaliedetectie ontwijken
Red teamers zouden moeten begrijpen hoe anomaliedetectie kan worden omzeild:
- Baselinevervuiling: Introduceer geleidelijk adversariële patronen tijdens de baselineverzamelingsperiode zodat ze "normaal" worden
- Nabootsing: Bestudeer normaal gebruikersgedrag en stem je aanvalspatronen erop af (verzoektiming, onderwerpdistributie, invoerlengte)
- Gedistribueerde aanvallen: Gebruik meerdere accounts of IP-adressen om metrieken per gebruiker binnen normale bereiken te houden
- Geleidelijke escalatie: Verander gedrag langzaam genoeg dat driftdetectie niet wordt getriggerd (de "kikker in kokend water"-aanpak)
- Ruisinjectie: Meng adversariële verzoeken met legitieme verzoeken om statistische signalen te verdunnen
Verwante onderwerpen
- AI-monitoring en observability — de bredere monitoringarchitectuur
- Logging-architectuur — de data vastleggen die anomaliedetectie nodig heeft
- In-/uitvoerfiltering — preventieve controles die anomaliedetectie aanvult
- Prompt shields — inline detectiebenaderingen
Referenties
- "Detecting LLM Jailbreak Attempts Using Perplexity-Based Methods" - Jain et al. (2024) - Research on using perplexity as a signal for detecting adversarial LLM inputs
- "Embedding Space Anomaly Detection for LLM Safety" - Chen et al. (2025) - Methods for detecting harmful outputs through embedding space monitoring
- "Data Drift Detection for ML Systems" - Huyen (2024) - Comprehensive overview of drift detection methods applicable to AI monitoring
- "Baseline Defenses for Adversarial Attacks Against Aligned Language Models" - Alon & Kamfonas (2023) - Survey of detection approaches for adversarial inputs to LLMs
Waarom is op perplexiteit gebaseerde detectie effectief tegen GCG-achtige adversariële achtervoegsels maar niet tegen natuurlijke-taal-jailbreaks?