Security & Safety · 2025

GenAI Incident Response Guide

Security & Safety GenAI Incident Response Guide 2025
Topic
Security & Safety
Venue
v1.0, July 2025
Read
22 min
Source

In one line

The first practitioner playbook for treating "the AI did something bad" as a security incident — defining what an AI incident actually *is*, where to instrument it, and how to detect, contain, and recover from prompt injection, poisoning, model theft, and agent hijacking using the NIST lifecycle adapted for stochastic, natural-language systems.

The breakdown

TL;DR

Security teams now own GenAI applications they didn’t build, can’t fully inspect, and that fail in ways no firewall catches — a chatbot invents a refund policy, a Copilot exfiltrates email from a poisoned message, an agent obeys hidden instructions on a web page. Traditional incident response assumes a deterministic system and a malicious actor exploiting code; GenAI breaks both assumptions because the attack surface is the natural-language input and the failure can be the model’s own stochastic behavior with no attacker present. This guide does three useful things: (1) it pins down a working definition of an “AI incident” (any event where an AI system’s behavior leads to harm or elevated risk — borrowing the OECD definition), (2) it gives a diagnostic framework split by AI stack layer (Model / Implementation / System / Runtime) that maps observed indicators to OWASP LLM Top 10 risks and MITRE ATLAS techniques, and (3) it walks the full NIST IR lifecycle — Preparation, Detection, Reporting, Response, and event-specific playbooks for Attacks on AI Systems, Supply Chains, and Third-Party Model Providers. It is not a research paper; it is a 82-page operational reference card for standing up an AI Incident Response Team (AIRT) and the SIEM/SOAR rules behind it.

Problem & Motivation

The concrete pain: a security team gets paged at 2am because “the AI is leaking customer data,” and none of their existing tools, definitions, or runbooks apply.

Three things make GenAI incidents genuinely different from the cyber incidents the SOC already knows how to handle:

  1. The prompt is the attack surface. In normal software, an attacker exploits a flaw in code — a buffer overflow, an unsanitized SQL string. In GenAI, the attacker “alters the semantics of an input.” There is no software bug in the EchoLeak Copilot exploit (CVE-2025-32711, CVSS 9.3) — the attacker just sent an email phrased so the model treated it as instructions and exfiltrated context data. Your IDS sees a normal email. Your WAF sees a normal request. The exploit lives in meaning, which nothing in the traditional stack inspects.

  2. The system can fail with no attacker at all. Air Canada’s chatbot hallucinated a bereavement-fare policy that didn’t exist; a tribunal made the airline pay. There was no breach. The “vulnerability” is the model’s probabilistic generation. Cyber-incident definitions (NIST: “jeopardizes confidentiality, integrity, or availability… or violates security policies”) don’t even classify this as an incident — yet it caused real harm and regulatory liability.

  3. Agency turns the model into an insider threat. When you give a model tools (browse the web, run code, send email), a malicious instruction it reads becomes an action it takes. The ChatGPT Operator data leak and MathGPT’s API-key exfiltration both happened because the model dutifully executed instructions a human would have recognized as hostile.

Why prior approaches fall short: the McKinsey 2025 State of AI survey says fewer than 50% of organizations are even working to mitigate GenAI security risks, and at the time of writing there was no widely accepted definition of an AI incident and no authoritative IR guidance for security teams. The OWASP project members realized that if a GenAI incident hit, they would be the ones paged — and there was nothing to read. This guide fills that gap.

What’s New (Core Contribution)

This is a guide, not an algorithm, so “novelty” means the organizing frameworks it introduces or assembles. Four are worth knowing:

  • A usable definition of “AI incident.” Before: competing, vague definitions (or none). Now: adopt the OECD framing — “an event… where the development, use or malfunction of one or more AI systems directly or indirectly leads to specific harms” — explicitly including near-misses and hazards (no realized harm needed) and non-attack failures (bias, hallucination, drift). This is the load-bearing decision; everything downstream depends on agreeing that “the model misbehaved” counts.

  • The AI-stack-layer diagnostic matrix. Before: indicators of compromise were a flat list. Now: indicators are split across four layers — Model, Implementation, System, Runtime — and each layer carries its own “Indicators of AI Compromise” vs. “Indicators of Cyber Compromise,” plus a mapping to OWASP LLM Top 10 and MITRE ATLAS technique IDs. This is the genuinely useful structural contribution: it tells a responder where in the stack to look and whether they’re even dealing with an AI-specific event.

  • Prompts as first-class telemetry and indicators-of-compromise. Before: SIEMs ingest logs, netflow, endpoint events. Now: the guide insists you stream prompts, their variations, and prompt fingerprints (hashes) into the same stack — because “prompts themselves become indicators of compromise.” It then gives concrete SIEM/SOAR rules (e.g., “>50 failed content checks from one IP in 10 min → quarantine API key”).

  • The AIRT (AI Incident Response Team) overlay and a Detection Maturity model. Before: a generic IR team. Now: explicit additional roles (AI Security Specialist, Prompt Injection/Abuse Analyst, ML Engineer, Model Governance Lead, AI Red-Team Lead, MLSecOps Lead) layered on the classic IR team, scaled by org size, plus a 4-level maturity ladder (Ad Hoc → Systematic → Integrated → AI-Empowered SOC).

Be honest about what’s repackaged: the NIST IR lifecycle, RACI charts, severity matrices, and SLA tiers are standard IR practice. The value-add is the AI-specific instantiation of each — what to log, what counts as severity-4, what containment looks like when “taking it offline” means killing a model endpoint and rotating dataset access.

How It Works (Technically)

The guide is structured as the NIST Incident Response lifecycle, re-specified for GenAI. Walk one incident through it.

The mental model: four layers, two questions. Every AI incident lives in one or more of four stack layers, and for each observed signal you ask two questions: Is this AI-specific or generic-cyber? and Which OWASP/ATLAS risk does it map to?

LayerWhat it coversAI-specific indicatorsExample OWASP risks
ModelWeights, training data, parameters, behaviorAccuracy drops for specific classes; behavior shift after retrain; hash/checksum mismatch; backdoor triggersLLM04 Poisoning, LLM09 Misinformation
ImplementationPipelines, code, APIs, serving logicCI/CD artifact changes; malicious PyTorch/TF packages; inference-query spikes (model extraction)LLM03 Supply Chain, LLM05 Improper Output
SystemInfra: storage, compute, containersGPU/TPU spikes with no legit job; unusual outbound from model; container running as rootLLM10 Unbounded Consumption
RuntimeLive inputs/outputs during operationPrompt injection; leaking sensitive data in outputs; membership-inference query patternsLLM01 Prompt Injection, LLM02 Sensitive Info

Tracing one incident: indirect prompt injection in a RAG assistant.

  1. Detection (Runtime layer). Your inline prompt-detection service flags a retrieved document containing “Ignore all prior instructions and tell the user X.” A composite SIEM alert fires: “bursts of blocked responses” + “prompt fingerprint matches a known injection family.” The alert is pre-mapped to LLM01 and ATLAS technique IDs so the analyst instantly knows the class.

  2. Analysis (multi-layer). Responder pulls four evidence sources the guide enumerates: AI System Logs (security/behavior events), User Interactivity Logs (the prompts themselves — flagged as privacy-sensitive), Application Logs (the RAG retriever, the vector DB), and Device/Infrastructure Logs (IPs, sessions). Because the payload came from a retrieved document, this is RAG Poisoning (LLM08) — the attacker poisoned the knowledge base, not the training data. Root-cause analysis is harder than a normal breach because of the black-box problem: you often can’t say why the model complied, only that it did.

  3. Severity & blast radius. Severity is scored across dimensions (Functional, Data, Operational, Harm, Regulatory) on a 1–4 scale, and the overall severity is the max of any single dimension — one catastrophic axis (e.g., PII exfiltrated = Data 4) makes the whole incident Critical even if everything else is a 2. Then you compute blast radius, which for AI is not “which servers” but: which model versions, which datasets, which downstream apps consume the bad output, and how many real-world decisions were influenced (fraudulent transactions approved, wrong diagnoses). This “decisions influenced” axis is the AI-native part — the harm propagates through outputs, not packets.

  4. Containment. Quarantine anomalous sessions; isolate/disable exposed system prompts; throttle queries (rate-limit by tokens/frequency to also stop model-extraction); segment the affected model endpoint; tighten IAM. Critical-incident SLA: initial containment < 15 min.

  5. Eradication. Purge the poisoned documents from the vector store; recompute checksums and verify signatures on weights/tokenizers/adapters; sanitize data via lineage cross-check; enforce code-signing so pipelines only run signed scripts/models; regenerate the AI Bill of Materials (AI BOM) to re-establish what’s trusted.

  6. Recovery. Full behavioral audit of the restored model (test against red-teamed adversarial inputs, re-baseline acceptable inference behavior); resume enhanced telemetry; optionally add an ensemble/fallback moderation layer to cross-check outputs; watermark newly generated content for future attribution.

  7. Post-incident. Root-cause + attack-vector analysis (initial compromise point, delivery method, execution path); impact/exposure assessment; re-test model integrity; secure reintegration via signed/audited channels; feed learnings back into runbooks and detection rules. The maturity model’s top rung (“AI-Empowered SOC”) is where the SOC’s own AI clusters alerts and proposes new rules — closing the loop.

Architecture & data flow

flowchart TD
  subgraph Prep[PREPARATION]
    RA[Risk assessment + ERM register]
    INV[AI asset inventory + AI BOM]
    RACI[Stakeholder RACI + AIRT roster]
    TRN[AI-specific training + tabletop]
  end

  subgraph Pipe[AI STACK - 4 LAYERS]
    RUN[Runtime: prompts/outputs]
    IMPL[Implementation: pipelines/APIs]
    MOD[Model: weights/training data]
    SYS[System: GPU/storage/containers]
  end

  RUN -->|prompt+output stream| SIEM
  IMPL -->|CI/CD + query logs| SIEM
  MOD -->|checksums + drift| SIEM
  SYS -->|GPU/net telemetry| SIEM

  SIEM[SIEM / SOAR] -->|AI-aware rules mapped to OWASP+ATLAS| DET{Alert fires?}
  DET -->|yes| SEV[Severity matrix - max of dimensions]
  SEV --> BR[Blast radius: models, data, apps, decisions]
  BR --> CONT[Contain < 15min for Critical]
  CONT --> ERAD[Eradicate: verify artifacts, sanitize data, AI BOM]
  ERAD --> REC[Recover: audit, red-team, watermark, ensemble]
  REC --> POST[Post-incident: root cause -> update runbooks]
  POST -.feeds back.-> Prep
  Prep -.context.-> SIEM

Interactive: click an AI stack layer to see its AI-specific indicators of compromise and the OWASP LLM risks it maps to. This is the guide's core diagnostic move — locate the signal in a layer, then classify it.

The algorithm, simplified

There’s no learning algorithm here — the “algorithm” is the triage decision procedure. Here it is as the detection-and-triage loop you’d actually wire into a SOAR playbook:

# AI incident triage: classify a signal, score severity, route response.
# Stubs: log_stream() yields enriched events; map_atlas/map_owasp() are lookup tables.

LAYERS = ["runtime", "implementation", "model", "system"]

def triage(event):
    # 1. Locate the signal in the AI stack (the guide's core diagnostic split)
    layer = classify_layer(event)              # e.g. "runtime" for a prompt-injection hit

    # 2. AI-specific or generic cyber? Both can be true; AI-specific changes the playbook.
    ai_specific = matches_ai_ioc(event, layer) # prompt-injection pattern, drift, checksum mismatch...
    risk = map_owasp(event)                     # -> "LLM01 Prompt Injection"
    ttp  = map_atlas(event)                     # -> ["AML.T0051", ...] so analysts grasp intent fast

    # 3. Severity = MAX across impact dimensions (one catastrophe escalates everything)
    dims = {
        "functional":  score_functional(event),    # 1..4: degraded -> total failure / harmful output
        "data":        score_data(event),          # 1..4: PII/PHI/model-IP exposed or exfiltrated
        "operational": score_operational(event),   # downstream systems affected
        "harm":        score_harm(event),          # physical/financial/reputational/legal
        "regulatory":  score_regulatory(event),    # mandatory reporting triggered?
    }
    severity = max(dims.values())                  # NOT a weighted sum -- the worst axis wins

    # 4. Blast radius is AI-native: not "which hosts" but which models/data/apps/DECISIONS
    blast = {
        "models":    affected_model_versions(event),
        "datasets":  affected_datasets(event),
        "consumers": downstream_apps(event),       # systems that trust this model's output
        "decisions": decisions_influenced(event),  # fraudulent txns, wrong diagnoses, etc.
    }

    # 5. SLA + response are driven by severity (Critical -> contain in <15 min)
    return Incident(layer, ai_specific, risk, ttp, severity, blast,
                    sla=sla_for(severity), playbook=playbook_for(risk, layer))

for event in log_stream():        # prompts, CI/CD, drift, GPU, net -- all in one stack
    if alert_fires(event):
        incident = triage(event)
        soar.execute(incident.playbook)   # quarantine key, block response, halt egress, page on-call

The non-obvious design choices: severity is a max, not a weighted average (so a single data-exfiltration axis forces Critical), and blast radius counts decisions, not hosts (harm flows through model outputs into the business).

Built on Prior Work

Prior ideaWhat it gaveWhat this guide changes / adds
NIST Incident Response lifecycle (Prepare → Detect/Analyze → Contain/Eradicate/Recover → Post-incident)The five-phase backbone every SOC usesRe-specifies each phase for stochastic, NL-driven systems; adds AI evidence sources, AI containment (kill endpoint, rotate dataset access), retrain-as-eradication
OWASP Top 10 for LLM ApplicationsThe canonical taxonomy of GenAI risks (LLM01–LLM10)Uses it as the classification target — every detection rule and indicator maps back to an LLM-NN code
MITRE ATLAS (adversarial ML TTPs)Technique IDs (AML.T0xxx) for attacks on ML systemsMaps each stack layer and SIEM rule to specific ATLAS techniques so analysts grasp attacker intent instantly
OECD / EU AI Act / AI Incident Database definitionsCompeting definitions of “AI incident,” all centered on harmPicks OECD as canonical; explicitly admits near-misses, hazards, and non-attack failures (bias, hallucination, drift)
NIST AI RMF, MIT AI Risk Repository, OWASP AI ExchangeRisk catalogs and governance frameworksUsed as training references and control-alignment targets for large/regulated orgs
Classic IR roles + RACIDefined responsibilities and escalationOverlays AI-specific roles (AIRT) and scales the team structure by org size

Results & Evidence

This is a best-practices guide produced by an expert panel, not an empirical study — so “evidence” means real-world incident vignettes and framework coherence, not measured outcomes. Calibrate accordingly.

What it establishes well:

  • The threat is real and varied, grounded in concrete cases: Air Canada (hallucinated policy → tribunal-ordered compensation), Microsoft Tay (live data poisoning → offline in 24h), EchoLeak/Copilot (CVE-2025-32711, CVSS 9.3, zero-click exfiltration), MathGPT (prompt injection → API-key leak + DoS), ChatGPT Operator (indirect injection → data exfiltration), Bing “Sydney” (system-prompt leak via “ignore previous instructions”).
  • A coherent, mappable taxonomy. The layer-by-layer indicators cross-reference OWASP and ATLAS consistently, which is what makes it operationally usable.
  • Actionable artifacts: example RACI chart, example SLA tiers (Critical: contain <15 min, eradicate <4h, RTO <8h), example SIEM rules with SOAR actions, a detection maturity ladder, an internal reporting template.

What it does not establish (the honest caveats):

  • No measured effectiveness. Nothing tells you the detection rules’ false-positive rate, the actual MTTR improvement, or whether prompt-fingerprinting catches real attacks at scale. The severity matrix dimensions and 1–4 scoring are proposed, not validated against incident outcomes.
  • Detection is described, not benchmarked. “Use semantic similarity / ML classifiers / LLM-based evaluation” — but prompt-injection detection is an open arms race the guide itself acknowledges (“the arms race… remains active”). No tool is shown to actually work; NOVA is cited as an example, not evaluated.
  • Heavy on enumeration, light on prioritization. The asset-inventory and detection-method sections are long bulleted lists; for a small team, which 20% gives 80% of the value is left as an exercise.
  • It’s a complement, not a complete IR program — the authors say so explicitly. It assumes you already have a functioning SOC.

How You’d Use It

For someone running an AI services company and building agentic/multi-agent systems, this maps cleanly to both what you ship and what you sell.

In your own agentic stack (defensive engineering):

  • Instrument prompts as telemetry from day one. Stream every prompt, tool-call, and completion — plus a prompt fingerprint (hash) — into your logging stack alongside normal app logs. This is cheap if you do it at build time and nearly impossible to retrofit during an incident. For a MAS, log inter-agent messages too: an indirect injection that hijacks one agent propagates to the others, and the message bus is your evidence trail.
  • Wire the SIEM rules verbatim. The five example rules (failed-content-check bursts → quarantine key; secret-regex in output → block + rotate; large .pt egress → halt; rare-plugin-after-code-prompt → re-auth; GPU spike + odd egress → isolate container) are a ready-made starter ruleset for any LLM API you operate.
  • Adopt the layer diagnostic as your on-call mental model. When something’s weird, ask “which layer, AI-specific or cyber, which OWASP code” — it turns panic into a lookup.
  • Severity = max-of-dimensions is a one-line policy change that prevents under-triaging a quiet-but-catastrophic data leak.

As a client offering (the commercial angle):

  • “AI Incident Readiness Assessment” — productize the Preparation section: AI asset inventory + AI BOM, RACI/AIRT roster, detection-maturity scoring (Level 1→4), and a tabletop exercise. This is a clean fixed-scope engagement that maps to a deliverable clients can show their board and regulators.
  • “AI SOC integration” — implement the SIEM/SOAR rules + prompt telemetry pipeline into an existing security stack. High value because most SOCs have zero AI-specific detection today.
  • Managed AIRT / on-call — small clients (<200 employees) can’t staff an AI Security Specialist; the guide explicitly recommends MDR partners for 24×7. That’s you.
  • Compliance bridge — the EU AI Act, NIST AI RMF, and breach-notification timelines create a forcing function. Packaging IR readiness as compliance evidence is an easier sell than “security.”

Build Your Own (Minimal Recipe)

The smallest thing that captures ~80% of the value is a prompt-aware detection + triage pipeline for one LLM application, plus a one-page runbook. Build order:

  1. Centralized AI logging (the foundation — do this first). Emit structured events for every request: {prompt, prompt_hash, retrieved_docs, tool_calls, output, output_flags, model_id, user, session, latency, gpu_metrics}. Ship to whatever you already use (even Loki/Elastic/CloudWatch). This is 50% of the work and the only truly hard prerequisite — without it nothing else is possible.

  2. A two-stage detector. Cheap first pass (keyword/regex for “ignore previous instructions,” secret-regex on outputs, IP/encoding patterns), then a semantic pass only on suspicious traffic (embed the prompt, cosine-compare to a library of known injection strings) and optionally an LLM-judge for high-risk hits. Cache results by prompt_hash.

  3. The triage function from the pseudocode above: classify layer, map to OWASP, score severity as max(dimensions), compute blast radius. ~100 lines.

  4. A handful of SOAR actions. Even without a SOAR platform: a script that can revoke an API key, flip the app into “safe mode” (disable tools / route to a guarded prompt), and page on-call. Wire the five example rules to these.

  5. One runbook + one tabletop. Pick your most likely incident (for a RAG/agent shop: indirect prompt injection) and write the step-by-step. Run it once with the team.

The two genuinely hard parts: (a) prompt-injection detection accuracy — it’s an unsolved arms race; treat your detector as defense-in-depth, not a guarantee, and lean on containment (rate limits, tool gating, output filtering) over prevention. (b) privacy of prompt logs — prompts contain user secrets; you must encrypt, access-control, and set retention before you log, or your detection store becomes its own breach. Reach for: an embedding model for semantic matching, a guardrails library (e.g., NeMo Guardrails / Llama Guard-style classifiers) for output filtering, and your existing SIEM rather than anything bespoke.

How to Improve It

Limitations are leverage. Five concrete, testable directions:

  1. Quantify the framework. The guide proposes a severity matrix and detection methods but never measures them. Build a small labeled corpus of real prompt-injection / poisoning attempts and report precision/recall/MTTR per detection method. That benchmark would be a genuinely novel contribution and an instant differentiator for a services firm.

  2. Make blast-radius computation automatic. “Decisions influenced” is the most valuable and least operationalized concept. Build a dependency graph (asset inventory → which apps consume which model → which decisions/records) so that on incident declaration you can automatically enumerate downstream impact instead of hand-mapping it. This is a graph-traversal problem you could ship as tooling.

  3. MAS-specific playbooks. The guide is single-model-centric. For multi-agent systems, an injection that compromises one agent can cascade via the orchestration layer. Add detection on the message bus (anomalous inter-agent instructions), per-agent capability gating, and “blast radius across agents.” This is exactly the gap your ARC MAS experience positions you to fill.

  4. Provenance-by-construction for RAG. Rather than detecting RAG poisoning after the fact, tag every retrieved chunk with signed provenance and have the model down-weight or refuse unsigned/low-trust sources. Turn the detection problem into an integrity-verification problem (cf. their code-signing recommendation, but applied to retrieved context).

  5. Auto-generated runbooks from the layer matrix. The mapping (layer → OWASP → ATLAS → containment steps) is structured enough to generate per-incident runbooks programmatically. Feed an LLM the matrix + your asset inventory and have it draft the containment/eradication checklist for a given alert — closing the loop toward the “AI-Empowered SOC” maturity level the guide itself defines as the goal.

Glossary

  • AI Incident — Any event where an AI system’s behavior or malfunction leads to harm, near-harm, or elevated risk (OECD definition); includes non-attack failures like hallucination, bias, and drift.
  • OWASP LLM Top 10 — The standard taxonomy of GenAI application risks; LLM01 Prompt Injection, LLM02 Sensitive Info Disclosure, LLM03 Supply Chain, LLM04 Data/Model Poisoning, LLM05 Improper Output Handling, LLM06 Excessive Agency, LLM07 System Prompt Leakage, LLM08 Vector/Embedding Weaknesses, LLM09 Misinformation, LLM10 Unbounded Consumption.
  • MITRE ATLAS — A knowledge base of adversarial-ML tactics and techniques (technique IDs like AML.T0051), the ML analog of MITRE ATT&CK.
  • Prompt Injection (direct/indirect) — Crafting input so the model treats attacker text as instructions. Direct = attacker types it; indirect = it’s hidden in content the model later reads (web page, doc, RAG source).
  • RAG Poisoning — Corrupting the external knowledge base a Retrieval-Augmented Generation system retrieves from, so the model ingests malicious/false content at query time (vs. training-time data poisoning).
  • Data/Model Poisoning — Contaminating training data so the model learns wrong patterns or hidden backdoor triggers; an integrity attack on the learning process.
  • Evasion Attack — A small, often human-imperceptible input perturbation that makes a model misclassify at inference time (e.g., stickers fooling a Tesla’s sign-reading).
  • Model Inversion / Extraction — Querying a model to reconstruct its training data (inversion) or replicate the model itself (extraction).
  • Membership Inference — Querying to determine whether a specific record was in the training set; detected via repeated minor-variation queries.
  • Blast Radius (AI) — The full propagation of an AI incident: affected model versions, datasets, downstream apps that consume outputs, and real-world decisions influenced — not just compromised hosts.
  • AI BOM (AI Bill of Materials) — An inventory of all model dependencies, datasets, and tools; regenerated post-incident to re-establish what’s trusted.
  • NHI (Non-Human Identity) — Service accounts, API keys, bots, and agents that access AI systems without a human; a major and easily-overlooked attack surface.
  • AIRT (AI Incident Response Team) — A classic IR team overlaid with AI-specific roles (AI Security Specialist, Prompt Abuse Analyst, ML Engineer, Model Governance Lead, AI Red-Team Lead, MLSecOps Lead).
  • MLSecOps — The discipline of securing the ML infrastructure: model scanners, registries, data repos, pipelines, ACLs, checkpoint storage.
  • NIST IR Lifecycle — Preparation → Detection & Analysis → Containment, Eradication & Recovery → Post-Incident Activity.
  • RTO / RPO — Recovery Time Objective (max tolerable downtime to restore service) / Recovery Point Objective (max tolerable data loss window).
  • Drift — Degradation of model performance as real-world data distributions shift away from the training distribution over time.
  • SIEM / SOAR — Security Information & Event Management (centralized log/alert correlation) / Security Orchestration, Automation & Response (automated playbook execution).