OWASP Top 10 for LLM Applications
The shared vocabulary for AI security risk, refreshed for 2026 from real incident data. Learn the list, then use it as a test charter — it is the closest thing this field has to a standard checklist.
Pilots do not fly from memory. Before every flight, someone reads a checklist out loud and someone else confirms each item.
They are not incompetent. The list exists because memory is unreliable under pressure, and because the industry decided long ago that the same mistakes should not have to be rediscovered by everyone individually.
The OWASP list for LLM applications is that checklist for AI features. It is maintained by people who read real incidents, it is refreshed as the field moves, and it is free.
Your job is not to memorise it. Your job is to read it and turn it into tests.
What the list is, and what it is not
It is a categorised list of failure modes for applications built on language models, with guidance on each. It covers ground this layer has already walked through in plain words: instructions arriving as data, secrets leaking out, untrusted content steering behaviour, features being given more power than the job needs, and the supply chain behind the model itself.
It is not a compliance certificate, and it is not a tool. Nothing scans your app and prints a score. It is a checklist, and like the pre-flight one it only works if a person reads it against a specific aircraft.
Why you should care about this
Because it turns "I have a bad feeling about this feature" into a line item somebody has to answer.
An engineering team can dismiss a tester's hunch. It is much harder to dismiss "this is item four on the OWASP list for LLM applications, here is our version of it, and here is the transcript." You have not become more senior; you have borrowed the authority of a list everybody in security already respects.
It also solves the blank-page problem. Nobody can invent every risk category from scratch, and the list is the fastest route from "we should test the security of this" to a charter with ten concrete lines in it.
How you turn it into tests
1. Read the current list, once, properly. An hour. Do not skim a summary.
2. Write one line per item: how would this show up here? Most items become a specific attempt against your specific feature. Items about model supply chains and training data may not apply at all if you are consuming a hosted model — write "not applicable, we use a hosted model" and move on. That is a real answer.
3. Rank by what your feature can reach. Every item is more serious when the feature has tools, credentials or customer data. This is your blast-radius table doing double duty.
4. Attempt the ones you can, by hand. Most of them you already know how to test from this layer: instruction override, poisoned content, data leaks, unbounded permissions.
5. Record what you tried and what happened. Item, method, result, rate, evidence. A clean negative with a method is worth reporting.
6. Turn every success into a regression case. Straight into the eval set, so it can never quietly come back.
7. Re-run it when the shape of the feature changes. A new tool, a new content source or a new integration moves several items at once.
The list is not a certificate. It is the fastest way from "someone should look at this" to a charter with ten lines and a name on each of them.
Try this today
Take your feature and write the charter. One row per item, in your own words, with your own verdict. This is the whole deliverable.
FEATURE: support assistant (RAG over help centre + tickets; refund and email tools)
LIST EDITION: OWASP GenAI, LLM applications — read 2026-08-17
RISK AREA HOW IT WOULD LOOK HERE TRIED RESULT
instructions in user input user overrides the system prompt yes partial leak 3/5
instructions in content payload in a KB doc or ticket yes fired 3/3 <-- worst
sensitive info leaving system prompt / other tenant data yes cross-account 4/5
too much permission refund + email, limit in prompt review no hard limit
unsafe output handling markdown links render in answers yes yes — exit route
overreliance on the answer agents act on unverified claims yes no verification step
model supply chain hosted model, pinned version n/a documented
denial of wallet no spend cap per run review none set
misinformation to users ungrounded claims in answers yes 70% grounded
insecure plugin/tool design tool args model-controlled review yes, unbounded
OPEN QUESTIONS FOR THE TEAM
who owns the refund limit if it is not enforced in the payment service?
what is the per-run spend cap, and who is alerted?Ten rows, half of them already tested by things earlier on this layer, and two questions nobody had an owner for. That page is a security review, produced by a tester, in an afternoon.
How to show you know it
The charter, with your own wording. Not the list copied out — your feature's version of each item. It proves you read it against something real.
Verdicts including "not applicable". Knowing which items do not apply to a hosted-model app is as much a sign of understanding as finding a bug.
One finding quoted against the list. "This is the untrusted-content case, and here is the transcript." It changes how the bug is triaged.
A named edition and a date. It shows you know the list moves, which most people citing it do not.
Questions
Do I need to memorise the items?
No. Pilots do not memorise the checklist either. Know roughly what the categories cover, keep the link, and read it properly when you start on a feature.
Is there a tool that checks these for me?
Scanners exist and they help with narrow parts. Most of the list needs judgement about your specific feature — what it can reach, whose data it holds, which actions cannot be undone. That part is testing work and it is not automatable yet.
Our feature has no tools, just answers. Does this still apply?
Several items shrink to almost nothing, and you should write that down rather than leaving blanks. Leaks, poisoned content and misinformation still apply, because those need only text.
What if security already reviewed it?
Ask what they covered. Perimeter reviews often stop at authentication and network rules and never touch prompt-level behaviour. The overlap is smaller than everyone assumes.