OWASP LLM Top 10 v2 · what changed and what to ship
v2 of the LLM Top 10 reorganised around how teams actually get hit. Here is what moved, what is new, and the default controls we ship.
v2 of the LLM Top 10 reorganised around how teams actually get hit. Here is what moved, what is new, and the default controls we ship.
The OWASP LLM Top 10 v1 dropped in 2023 and was useful, if a little theoretical. v2 landed in 2026 with three years of incident data behind it. The reorganisation reflects how teams actually get hit · agentic tool use, model and data supply chain, and the line between excessive agency and prompt injection are the moves that matter.
Below is the v2 list with notes on what changed and what we ship by default. This is a field guide, not a textbook · skip the entries that do not apply to your stack.
Stays at #1, now explicitly split. Direct injection is the user typing 'ignore previous instructions'. Indirect injection is a hostile string in retrieved content, a tool's output, an email body, a website you scraped. Indirect is now where most real incidents come from.
Models trained on, or finetuned with, data the user should not see. Or RAG that retrieves cross-tenant. v2 clarifies the boundary · this is about what comes out, not about training-data extraction attacks specifically.
v2 expands this to include model provenance and dataset provenance, not just dependency CVEs. Where did the model weights come from? Who fine-tuned them? On what data? Is the chain attestable? After a couple of high-profile poisoned-model incidents, this matters.
Combined the v1 'Training data poisoning' and the v1 'Model DoS' entries into one. Now covers anything that corrupts the model's behaviour through the data pipeline · poisoned RAG sources, malicious finetuning data, adversarial embeddings.
Treating model output like trusted data. v2 highlights it as the second-most-common real incident class · the LLM emits an XSS payload, an SQL string, a path-traversal URL, and the surrounding code happily renders or executes it.
v1 had this folded into prompt injection. v2 promotes it: even with no injection, an over-permissioned agent does damage on its own when the model is wrong. This is the entry our consultancy book opens to most often.
Promoted to its own entry. The system prompt is rarely a secret in itself, but it often contains tool descriptions, customer schemas, or 'never do X' rules that competitors and attackers love to read.
New in v2. Covers cross-tenant retrieval, embedding inversion, and adversarial embeddings that smuggle instructions past the chunker.
v1 talked about overreliance abstractly. v2 names it: confidently wrong output, especially in regulated domains, especially in chains where the second tool consumes the first tool's hallucination.
Renamed and broadened from 'Model DoS'. Covers cost runaways, infinite tool-call loops, prompt-amplification attacks. The CFO entry of the list.
v2 is reorganised around production reality. Three things to call out: agentic concerns moved out of prompt injection, supply chain became broader than packages, and embedding security got its own entry. The naming choices (no more 'Model Theft' as its own item, 'Misinformation' instead of 'Overreliance') reflect what teams actually report.
If you map your current LLM project to v2 and find more than two 'we have not thought about this' rows, schedule a half-day with security before the next release. v2 reorganised exactly the things teams have been quietly missing.
v2 will not stop the next incident, but it does make the post-mortem fit on a page · 'we missed control X under LLM06' is a more useful sentence than 'something something prompt injection'. The list is short on purpose. Treat it as a checklist, not a manifesto, and ship the controls before you need them.

Founder, DField Solutions
I've shipped production products from fintech to creator-tooling · for startups and enterprises, from Budapest to San Francisco.
Let's talk about your project. 30 minutes, no strings.