
- 01Prompt Injection and Excessive Agency now account for ~70% of real-world LLM incidents in our 2024–2025 response data; treat them as a paired control, never in isolation.
- 02Detection-based prompt-injection defenses cap out around 60–80% efficacy; architectural isolation (planner vs. view-only model) is the only pattern that holds at scale.
- 03Vector and Embedding Weaknesses (LLM08) is the new sleeper risk for RAG-heavy enterprises — embedding inversion can leak source documents from cosine-similarity APIs.
- 04Boards should track four KPIs: tool-permission coverage, irreversible-action approval rate, system-prompt egress incidents, and per-tenant token-spend anomaly count.
- 05A defensible 90-day plan focuses on LLM01, LLM02, LLM05, LLM06 first — the rest follow from the same isolation primitives.
OWASP's Top 10 for LLM Applications has become the de facto reference that boards, auditors, and platform teams now triangulate against. The 2025 update reorders the list in light of 18 months of public incidents — from indirect prompt injection via support tickets at a major SaaS, to embedding inversion attacks against open RAG endpoints, to a $2M cloud bill triggered by an unbounded agent loop.
This piece is written for two readers: the CISO who needs a 30-second board narrative, and the staff engineer who has to close out the controls by Friday. Both views are required — an LLM security program that lives only in slides will fail at the first agentic deployment, and one that lives only in code will be defunded.
The list, in 2025 attack-surface order
OWASP keeps the LLM01–LLM10 numbering, but the underlying weight of each item has shifted. Below is the 2025 ordering with the operational verdict from our incident response practice.
/OWASP_LLM_2025_RANKING
| ID | Risk | 2025 Posture | Primary Owner |
|---|---|---|---|
| LLM01 | Prompt Injection (direct + indirect) | Critical · #1 incident driver | Platform AI |
| LLM02 | Sensitive Information Disclosure | Critical · climbing | Data Security |
| LLM03 | Supply Chain (weights, fine-tunes, datasets) | High | ProdSec / SCA |
| LLM04 | Data & Model Poisoning | High · novel | ML Engineering |
| LLM05 | Improper Output Handling (XSS/SQLi via model) | High · classic appsec | AppSec |
| LLM06 | Excessive Agency | Critical · new top-5 | Platform AI |
| LLM07 | System Prompt Leakage | Medium · operational | Platform AI |
| LLM08 | Vector & Embedding Weaknesses | High · sleeper for RAG | Data Security |
| LLM09 | Misinformation | Medium · domain-bound | Product |
| LLM10 | Unbounded Consumption (cost / DoS) | High · finance impact | Platform / FinOps |
LLM01 + LLM06 — the paired control nobody plans for
Across the incidents we triaged in 2024 and the first half of 2025, two-thirds began with a prompt injection delivered through trusted-looking content (a calendar invite, a Jira comment, a PDF) and ended only because the agent had the authority to act. Either failure alone would have been a near-miss. The combination is the breach.
The architectural fix is to refuse to give a single model both untrusted text and high-authority tools. Run untrusted input through a 'view-only' model that produces a small, schema-constrained summary. A second model — the planner — receives only the summary and is the only one allowed to call tools.
If your agent reads PDFs and can also send email — you have an LLM01+LLM06 incident waiting.
The most common pattern we remediate: one LLM, system prompt + RAG context + tool list all in the same context window. A single attacker-controlled paragraph in a retrieved document can convince the model to call any tool it has access to. The fix is structural, not prompt-engineering.
The reference architecture that holds in production
Below is the simplified topology we now recommend for any agent that can take an irreversible action (write to a database, send a message, move money, deploy code). It is the single change with the largest defense-in-depth payoff per engineer-hour.
Why the isolation pattern beats input-filter defenses.
Input filters try to detect malicious instructions inside attacker-controlled text — an underspecified, ever-shifting classification problem. Isolation does not try to win that detection game. It denies the attacker any path from text to tool, regardless of how cleverly the prompt is crafted. The blast radius collapses to whatever the structured summary schema allows.
/REF_ARCH · isolated-planner
# Untrusted text NEVER reaches a tool-enabled model directly.
[ untrusted_input ] (email, ticket, PDF, web page)
│
▼
[ view_only_llm ] (no tools, no system prompt secrets)
produces strict JSON:
{ intent, entities, risk_flags, summary≤256w }
│
▼
[ schema_validator ] (zod / pydantic / proto)
│
▼
[ planner_llm ] ───► [ tools ] (least-privilege, scoped per user
sees ONLY the + per-tenant + per-resource)
structured object.
│
▼
[ irreversible_action_gate ] (human-in-the-loop OR
policy engine, e.g. OPA)
│
▼
[ audit_log + replay_index ] (SIEM-bound, tamper-evident)
LLM02 + LLM07 — sensitive disclosure and system-prompt egress
These are usually treated as separate items but they share a root cause: the model has access to information that the requesting user does not. System prompts containing API keys or business rules, retrieved RAG chunks from another tenant, training data memorized verbatim — all leak the same way: the model is asked, directly or obliquely, to repeat what it knows.
The control is data minimization at the context layer, not output filtering. If the model never sees the secret, it cannot leak it. Concretely: scope every retrieval to the calling identity, strip secrets from system prompts (use environment-bound tool authentication instead), and log every retrieved chunk with the identity it was returned to so you can audit cross-tenant exposure after the fact.
- 01Per-identity retrieval — tenant ID and ACL filters are query-time, not post-filter
- 02No secrets in system prompts — tools authenticate via the runtime, not the model
- 03Output egress monitoring — flag any response containing high-entropy strings or known secret patterns
- 04Synthetic canary documents — seeded into RAG indexes per-tenant; their appearance in another tenant's response is a P1 alert
LLM08 — embedding inversion, the sleeper risk for RAG
Vector and Embedding Weaknesses became its own LLM Top 10 entry in 2025 because attacks moved from theory into the public domain. Embedding inversion — reconstructing the original text from its vector — has been demonstrated against OpenAI, Cohere, and Sentence-BERT embeddings with reconstruction quality high enough to leak sensitive snippets.
If you expose any cosine-similarity or vector-search API to the public internet — even an internal one to authenticated users with broad scope — assume the embeddings can be exfiltrated and inverted. The mitigation is the same zero-trust playbook as any other data store: scope by identity, rate-limit aggressively, and never allow raw embeddings to leave the security boundary.
Embedding inversion in numbers.
Recent academic work (Morris et al., 2024) recovers ~92% of named entities and ~67% of full sentence content from 1536-dim OpenAI embeddings using only ~1M sample inversion pairs. Treat your vector store as PII for the purposes of access control.
LLM10 — Unbounded Consumption is a finance-team incident
Cost-side denial of service is the LLM risk that most often surprises CFOs. An agent that recursively calls itself, a token amplification attack via repeated tool returns, or a prompt-engineered loop can burn six-figure cloud spend in hours. Treat token spend like egress bandwidth: per-tenant budgets, hard ceilings, and circuit breakers that fail closed.
- 01Per-tenant per-day token budget (hard cap, not a soft warning)
- 02Per-conversation step ceiling — agents terminate at N tool calls, default N≤8
- 03Per-tool concurrency limit — prevents fan-out amplification
- 04Real-time spend anomaly detection — z-score on per-tenant token velocity
The four KPIs your board should see every quarter
Boards do not need ten LLM metrics. They need four that any non-technical director can interpret and that, taken together, prove the program is functioning.
/BOARD_KPIS
| KPI | Target | What it proves |
|---|---|---|
| Tool-permission coverage | ≥ 95% of tools scoped per-user + per-tenant | Excessive Agency is not implicit |
| Irreversible-action approval rate | 100% gated (human or policy) | No silent breach in agent flows |
| System-prompt egress incidents | 0 confirmed / quarter | Prompt leakage program is active |
| Per-tenant token anomaly count | Trending down quarter-over-quarter | Cost-DoS detection is real |
A defensible 90-day plan
- 01Days 0–30 — Inventory every LLM-touching system. For each, document: input sources (trusted/untrusted), tools available, authority level, and tenant model. This artifact alone often surfaces the LLM06 incidents you didn't know you were running.
- 02Days 30–60 — Stand up the isolated-planner pattern in front of the highest-authority agent (the one with payment, deploy, or admin scope). Add per-tenant token budgets and the four board KPIs to your existing dashboard.
- 03Days 60–90 — Move RAG retrieval behind per-identity ACL filters; instrument output egress monitoring; deploy canary documents per-tenant. Run a tabletop with the IR team using the OWASP scenarios — half will surface a control gap you can close in a sprint.
The Monday-morning version.
Pick your single highest-authority agent. List its tools. For each tool, write the worst thing an attacker could do if they could call it freely. If the answer for any tool is 'send money', 'modify production', or 'exfiltrate data', that agent must run behind the isolated-planner pattern within the quarter. Everything else is sequencing.
- ▸Identify highest-authority agent in production
- ▸Enumerate tool list and worst-case impact per tool
- ▸Commit the isolated-planner refactor to the next sprint
- ▸Add the four board KPIs to your existing security dashboard
Closing — defenses are mature; discipline is the gap
There is no 2025 LLM threat in the OWASP Top 10 for which a working defense does not exist. Every item has a published mitigation, often several. The reason organizations are still being breached is that the AI feature roadmap is being shipped two quarters ahead of the AI security program, and the controls are being retrofitted under incident pressure rather than designed in.
The CISO's job for the next year is not to invent new controls. It is to make sure the existing ones — isolation, least authority, per-identity retrieval, irreversible-action gates, token budgets — are part of the same launch readiness review that already gates a database migration or a payment-flow change. Treat LLM features like any other production system, and the Top 10 stops being a backlog.

