Skip to content
Security

OWASP Top 10 for LLM applications (2025): the risks and how to fix them

The OWASP Top 10 for web apps doesn't cover what goes wrong when a language model sits in your product. The LLM list does. Here is each risk in plain English, with the controls that actually reduce it.

Caudilysis framework coverage, with the OWASP Top 10 2025 card for web application risks circled in marker.
Security

The OWASP Top 10 for LLM Applications is a community-maintained list of the most critical security risks in software that uses large language models. The 2025 edition covers prompt injection, sensitive information disclosure, supply chain, data and model poisoning, improper output handling, excessive agency, system prompt leakage, vector and embedding weaknesses, misinformation and unbounded consumption.

Key takeaways
  • It is a separate list from the classic OWASP Top 10 for web applications. An LLM feature needs both.
  • Prompt injection can't be fully prevented by prompt wording. Limit what a manipulated model is able to do.
  • Treat model output as untrusted input to every system it touches.
  • Excessive agency is the agent-era risk: narrow tools, least privilege and human approval for side effects.
  • Retrieval needs access control at query time, or an assistant becomes a way around your permissions.

What is the OWASP Top 10 for LLM applications?

It is a project of the OWASP Gen AI Security Project, first published in 2023 and updated for 2025 in November 2024. It names the risks most likely to hurt applications built on LLMs: chatbots, retrieval systems, copilots and agents. Two entries are new in 2025, system prompt leakage and vector and embedding weaknesses, reflecting how many teams now build retrieval augmented generation (RAG) and agentic systems.

It complements, rather than replaces, broader frameworks such as the NIST AI Risk Management Framework, which covers governance and organisational risk. The OWASP list is the developer's checklist.

The 10 risks at a glance

OWASP Top 10 for LLM Applications 2025
IDRiskIn one lineFirst control to add
LLM01Prompt InjectionInput changes the model's behaviour against your intent, directly or via content it readsLeast-privilege tools and approval for side effects
LLM02Sensitive Information DisclosureThe model reveals personal, confidential or proprietary dataKeep secrets out of prompts; filter retrieval by user permissions
LLM03Supply ChainCompromised or unvetted models, datasets, plugins or librariesPin and verify model and package sources
LLM04Data and Model PoisoningTampered training, fine-tuning or embedding data changes behaviourControl and review data that feeds training and indexes
LLM05Improper Output HandlingModel output passed to other systems without validationValidate and encode output like any untrusted input
LLM06Excessive AgencyAn LLM is given more tools, permissions or autonomy than it needsNarrow tools, scoped credentials, human checkpoints
LLM07System Prompt LeakageInstructions or secrets in the system prompt are exposedNever store secrets or access rules in prompts
LLM08Vector and Embedding WeaknessesWeak access control or poisoning in RAG storesPermission-aware retrieval; separate indexes per tenant
LLM09MisinformationConfident but false output that people act onGrounding, citations, evals and human review where it matters
LLM10Unbounded ConsumptionUncontrolled usage drives cost, outages or model extractionRate limits, quotas, token caps and spend alerts

LLM01: Prompt injection

Direct prompt injection is a user typing instructions that override yours. Indirect injection is worse: instructions hidden in a web page, email, document or tool result that the model reads while doing its job. Because models process instructions and data in the same channel, no prompt phrasing reliably stops it.

  • Design as if injection will sometimes succeed, and limit the blast radius: what can the model do if it obeys an attacker?
  • Give tools the user's permissions, never a shared admin token.
  • Require human confirmation for payments, deletions, outbound messages and other irreversible actions.
  • Mark retrieved and tool content as data, and log every tool call for audit.

LLM02: Sensitive information disclosure

Models can repeat what is in their context: other customers' records pulled in by retrieval, secrets pasted into prompts, or personal data from training or fine-tuning sets. Filter what reaches the model by who is asking, minimise personal data in prompts and logs, and use zero-retention or private deployments when your data requires it.

LLM03 and LLM04: Supply chain, data and model poisoning

Open-weight models, adapters, datasets and LLM libraries are dependencies like any other, and can be tampered with. Download models from verified sources, pin versions, review licences, and scan the code and packages around the model as you would any service. For fine-tuning and RAG indexes, control who can add data and review what goes in: a few poisoned documents in a knowledge base can steer answers.

LLM05: Improper output handling

This is where LLM risk meets classic web security. If model output is rendered as HTML, run as SQL, passed to a shell or used to build a URL, an attacker who influences the output gets cross-site scripting, injection or server-side request forgery. Validate output against a schema, encode it for its destination, and never execute it directly. Static analysis of the surrounding code, the kind Caudilysis and other SAST tools do, helps catch the unsafe sinks; it does not test how the model itself behaves. See SAST vs DAST for where each kind of testing fits.

LLM06: Excessive agency

Agents call tools. The risk grows with each tool, permission and step of autonomy you grant. A support agent that only needs to read orders should not have a tool that can update any field on any record.

  • Narrow tools: "refund this order up to the original amount", not "update order".
  • Scoped credentials per user and per task, with short lifetimes.
  • Budgets and stop conditions on steps, time and spend.
  • Human-in-the-loop for high-impact actions, with the full context shown to the approver.

Our guide to MCP server development covers the same controls for tools exposed through the Model Context Protocol.

LLM07: System prompt leakage

Assume users can extract your system prompt. The risk is not the prompt text itself but what teams put in it: API keys, internal URLs, or rules like "only show admins the salary field" that should be enforced in code. Keep secrets in a secrets manager and access rules in your application.

LLM08: Vector and embedding weaknesses

RAG systems store chunks of your documents as embeddings. If retrieval ignores who is asking, any user can surface any document. In multi-tenant products, one tenant's data can leak into another's answers. Store access labels with every chunk and filter at query time, separate tenants' indexes where you can, and control who can write to the index.

LLM09: Misinformation

Models produce fluent, confident text whether or not it is true. The harm comes when people or systems act on it. Ground answers in retrieved sources, show citations, allow "I don't know", measure faithfulness with an evaluation set, and keep a person in the loop for legal, medical, financial or safety decisions. We cover evaluation in AI features that survive production.

LLM10: Unbounded consumption

Every request costs money and capacity. Without limits, a single user, a loop in an agent or a deliberate attack can run up a large bill or degrade service, and high-volume querying can be used to copy a model's behaviour. Set rate limits and quotas per user and key, cap input and output tokens, cap agent steps, and alert on spend.

A practical checklist for LLM features

  1. Threat-model the feature: what data it reads, what tools it can call, what happens if it is manipulated.
  2. Give the model and its tools the asking user's permissions, nothing more.
  3. Require human approval for actions with side effects.
  4. Validate and encode every model output before it reaches another system.
  5. Filter retrieval by access labels; isolate tenants.
  6. Keep secrets and authorisation rules out of prompts.
  7. Pin and verify models, datasets and libraries; scan the code around the model.
  8. Rate-limit, cap tokens and steps, and alert on spend.
  9. Log prompts, retrieved sources, tool calls and outputs (minus sensitive data) for audit.
  10. Run evals for quality and for known attack prompts on every change.

Frequently asked questions

What is the difference between the OWASP Top 10 and the OWASP Top 10 for LLM applications?

The classic OWASP Top 10 lists the most critical web application risks, such as broken access control and injection. The LLM list covers risks specific to applications that use large language models, such as prompt injection and excessive agency. An LLM-powered web app should be checked against both.

What is the number one risk for LLM applications?

Prompt injection is LLM01 in the 2025 list. It covers both direct attempts by users and indirect injection through content the model reads, such as web pages, documents and emails.

Can prompt injection be fully prevented?

Not with current models. Defences reduce it, but the reliable approach is to limit what a manipulated model can do: least-privilege tools, human approval for side effects, output validation and logging.

Does static analysis find LLM vulnerabilities?

Static analysis finds flaws in the code around the model, such as unsafe handling of model output that leads to injection. It does not test model behaviour such as susceptibility to prompt injection; that needs threat modelling, design controls and adversarial testing.

Building an LLM feature and want these controls designed in from the start? See LLM development and RAG development, or hire AI agent developers who build agents with least privilege, approvals and tracing by default. For the code itself, read how to secure AI-generated code.

Written byThe Caudify team

Written by the engineers and designers who build Caudify's own products, Caudilysis and Caudify CRMS, and ship custom software, SaaS and AI for clients.

From the studio

Rather talk than read?

Book a free assessment and get our point of view on your product, directly from the people who write these essays.