Safeguard
AI Security•

OWASP LLM Top 10 for 2026, mapped to controls your team can ship

The 2026 edition reorders the list and renames System Prompt Leakage. Here are all ten entries with one concrete engineering control each, plus where the list stops and the agentic list begins.

Safeguard Security Team
6 min read

The OWASP GenAI Security Project released the 2026 edition of its Top 10 for LLM Applications in early August. The Cloud Security Alliance dates publication to 3 August 2026, and Help Net Security reported the release on 6 August. It is the first edition where incident data carried part of the ranking, so the order is worth reading, not just the titles.

A caveat before the table. When we checked on 18 October 2026, OWASP's llm-top-10 landing page still showed the 2025 edition. The 2026 details below come from the Help Net Security and CSA write-ups, so confirm the exact wording against the OWASP PDF before you quote it in a policy.

What's affected

Anyone shipping an LLM feature where the model is a component of an application: a chat assistant, a summarizer, a RAG search box, a classifier in a workflow. OWASP draws a line here. Once a model acts with tools, memory and downstream consequences, the risks move to the separate OWASP Top 10 for Agentic Applications.

What changed, as reported:

  • Prompt Injection (LLM01) and Sensitive Information Disclosure (LLM02) keep their first two places.
  • Excessive Agency moved up to third.
  • Unbounded Consumption rose four places.
  • Misinformation climbed two places.
  • Improper Output Handling fell from fifth to tenth.
  • System Prompt Leakage was renamed Hidden Context Exposure and widened to cover retrieved documents, memory, user information, application state and tool responses.
  • Prompt Injection now covers cross-modal attacks hidden in images or audio.
  • Ranking weight: practitioner vote carried 75%, incident data on 6,639 classified incidents carried 25%.

The list, with one control each

IDEntryA control you can ship this sprint
LLM01Prompt InjectionTreat all retrieved and user text as untrusted data. Enforce permissions outside the model, in code.
LLM02Sensitive Information DisclosureFilter what enters the context by caller entitlement before the model sees it. Log redacted prompts.
LLM03Excessive AgencyOne narrow tool per task, per-tool scopes, human approval for writes and sends.
LLM04Supply ChainPin model versions by digest, load safetensors, keep an inventory of models and datasets.
LLM05Data and Model PoisoningRestrict who can write to training and retrieval corpora. Record the source of every document.
LLM06Unbounded ConsumptionPer-user token and request budgets, max output length, timeouts, spend alerts.
LLM07MisinformationRequire citations to retrieved sources. Show uncertainty. Gate high-stakes outputs on review.
LLM08Hidden Context ExposureAssume anything in context can be extracted. Keep secrets and other tenants' data out of it.
LLM09Vector and Embedding WeaknessesApply tenant and ACL filters in the vector query itself, not after retrieval.
LLM10Improper Output HandlingNever pass model output to a shell, SQL, or HTML renderer unescaped. Validate against a schema.

The IDs follow the order given in the CSA note. Treat them as the 2026 numbering and do not mix them with the 2025 IDs in the same document.

How to check if you're exposed

Run a one-hour review per LLM feature with the table above as a checklist. For each row, write one of three answers: control in place and tested, control partly in place, or nothing. Attach a link to the code or config that proves it.

Three questions find most of the gaps fast:

  1. What can this model call, and with whose credentials?
  2. What text can an outsider put in front of the model, directly or through a document, email, ticket or web page?
  3. What does the application do with the model's output before a human reads it?

If the answers are "anything", "anyone" and "executes it", you have LLM01, LLM03 and LLM10 open at once.

What to do now

  1. Re-baseline your AI risk register against the 2026 numbering. Add Hidden Context Exposure as its own line, since it is broader than the old prompt leak entry.
  2. Audit confidentiality controls beyond the system prompt. Look at retrieved chunks, conversation memory and tool results, the places the renamed entry now covers.
  3. Inventory every LLM feature, the tools it can reach and the data it can read. CSA's note makes the same recommendation for agents.
  4. Move one enforcement decision per feature out of the prompt and into code. Permissions, tenant filters and output validation belong there.
  5. Add a budget limit to every endpoint that calls a model, so a loop or an abusive user hits a ceiling.
  6. Write down where your feature stops being an LLM application and becomes an agent. That is the point to start using the agentic list as well.

Why it matters

The most useful sentence in the coverage is OWASP's own framing, as quoted by Help Net Security: "Stop trying to build a model that cannot be fooled." Read it as an engineering instruction. The model will sometimes follow hostile text, so the controls that matter are the ones that limit what a fooled model can do.

OWASP also describes a "defense effect." Heavy mitigation work means fewer successful prompt injections reach public records, which makes the risk look smaller in incident data than it is.

One more detail is easy to miss. Misinformation was voted low by experts but ranked high in the incident data, which pushed it up. Teams that treat wrong answers as a quality issue and not a security issue may want to revisit that, especially where output feeds a decision.

Try it yourself

Pick one LLM feature in your product. Fill in the three-answer column for all ten rows and count how many say "nothing". Then map those rows to the policies and tests you already have.

Click through it at your own pace, or open it full screen.

Quick check

Which entry was renamed, and what does it cover now?

System Prompt Leakage became Hidden Context Exposure. It covers retrieved documents, memory, user information, application state and tool responses, not just the system prompt text.

Why did Improper Output Handling fall to tenth?

Reporting says it fell from fifth and absorbed more scope. A lower rank is not a lower danger: unescaped model output reaching a shell or renderer is still a code execution path.

Where do tools, memory and downstream actions get covered?

In the separate OWASP Top 10 for Agentic Applications. The LLM list covers the model as a component of an application.

Sources

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.