www-project-llm-verification-standard

LLMSVS v2.1 draft — OWASP Large Language Model Security Verification Standard

Status: Draft for community review. This is not an OWASP release. Cite LLMSVS v2.0 until this draft is accepted.

Publication target: next edition after 2.0.

This draft is kept in step with catalog/llmsvs-draft.json. Update the catalog and the sections below the preface together.

What this draft changes

Version 2.0 kept the February 2024 requirement numbers and tightened wording. This draft makes the catalog assessable and lines it up with the OWASP Top 10 for LLM Applications 2026 (published 4 August 2026) and the OWASP Top 10 for Agentic Applications 2026.

Requirement identifiers from 2.0 still mean the same control where the row is active. Where the level or the obligation changed, the verification note under the chapter says so.

How to use the levels

Level Use it for What “pass” means
Level 1 Any LLM-backed system The baseline controls for the features that system actually has
Level 2 Sensitive data, customer data, or internal business data Level 1 plus the Level 2 rows for those features
Level 3 High-value transactions, regulated data, or systems whose failure stops the business Level 2 plus the Level 3 rows for those features

Pick the level before testing. Do not drop a Level 1 row because it is inconvenient. Do mark a row Not Applicable when the feature is absent.

Applicability and Not Applicable

Tags used in this draft:

Tag The system has this feature when
api An application sends prompts to a model, hosted or local
self-host The organization runs inference or loads weight files
retrieval Documents or embeddings are added to the prompt
memory Conversation or long-term memory is stored across turns or sessions
training The organization trains or fine-tunes a model
online Production weights are updated from live user data
agent The model can call tools, plugins, or remote tool servers

Rules for the report:

  1. If a tagged feature is absent, every requirement that applies only to that feature is Not Applicable. Record the reason in one line (“no tools are exposed”).
  2. A requirement can also be Not Applicable when its own precondition is false, even if the parent tag is in scope. Examples: 6.12 when no tool executes code; 6.15 when agents do not exchange messages; 5.20 when prompts never leave the organization’s trust boundary; 7.5 when no artifact can deserialize arbitrary code.
  3. A requirement the system must meet and does not meet is Fail. “We do not do retrieval, so 4.3 is not applicable” is valid. “We do retrieval, but 4.3 is hard” is a fail.
  4. Pass requires the evidence described under the chapter. A vendor questionnaire or a scanner report alone is not a pass. That rule is unchanged from 2.0.

Relationship to other OWASP documents

LLMSVS is the pass/fail catalog for controls that exist because the system uses a model. The OWASP Top 10 for LLM Applications and the OWASP Top 10 for Agentic Applications are awareness lists. Cheat sheets describe implementation techniques. The OWASP Application Security Verification Standard covers the rest of the application, including ordinary authentication, session management, and web-service security. A mapping from this draft to the 2026 lists is in mappings/crosswalk.md. The ASVS citations below are the illustrative ones already published in LLMSVS 2.0; they are not a new clause-by-clause audit of ASVS 5.0.0.

Profiles for a chat assistant, a retrieval system, an agent, and a fine-tune pipeline are in profiles/. A sample assessment with pass, fail, and not applicable is in examples/worked-assessment.md.

Assessment

OWASP does not certify LLMSVS assessments. An open-book review is the expected method: access to architects, source, configuration, and one account per role that the level claims to cover. The report lists the chosen level, the features in scope, every requirement as pass, fail, or not applicable, and enough evidence for a second person to repeat the conclusion.


Front matter carried forward

About the standard

The Large Language Model Security Verification Standard is a list of AI and LLM security requirements that architects, developers, testers, security professionals, tool vendors, and consumers can use to define, build, test, and verify LLM-backed applications.

Copyright © 2024–2026 The OWASP Foundation. This draft is released under the Creative Commons Attribution-ShareAlike 4.0 International License.

Project leads

Other contributors and reviewers

The 0.1 credit list is preserved here so the draft does not drop it. Names missing from that list should be added through a GitHub issue.

Name Organization
Eric Allen Lakera
Frawa Vetterli Lakera
Rory McNamara Snyk
Raul Onitza-Klugman Snyk
Moshe Ben-Nehemia Snyk
Sam Watts Lakera

The standard is built on research performed by the Snyk Security Labs team in 2023. Structure and assessment practice are adapted from the OWASP ASVS project.

Supporter note

Snyk supported the original requirements work. Lakera reviewed an early draft of the 0.1 text. See SUPPORTERS.md.


V1. Secure configuration and maintenance

Control objective

Deployed LLM systems are known, their credentials are protected, self-hosted runtimes are isolated and patched, and changes to prompts, models, tools, and corpora follow the application change process.

# Requirement Applies L1 L2 L3
1.1 Verify that credentials for model providers, vector stores, and other LLM-system dependencies are stored in the organization’s secret-management control and are not embedded in source, prompts, or client-side code. api, self-host, retrieval, agent ✓ ✓ ✓
1.2 Verify that self-hosted model services are not reachable from untrusted networks except through an explicitly approved path. self-host   ✓ ✓
1.3 Verify that a current inventory lists every deployed model, prompt template, tool, and retrieval corpus, each with an owner and a version. api, self-host, retrieval, memory, training, agent ✓ ✓ ✓
1.4 Verify that the configuration of the LLM system is reviewed on a defined schedule and that each review is recorded. api, self-host, retrieval, agent     ✓
1.5 Verify that self-hosted model runtimes and their serving software are patched on the organization’s defined cycle. self-host   ✓ ✓
1.6 Verify that changes to deployed prompt templates, model versions, tool definitions, and retrieval corpora are reviewed, versioned, and reversible under the same change process as application code. api, self-host, retrieval, training, agent   ✓ ✓

Verification notes


V2. Model lifecycle

Control objective

Organizations that train or fine-tune models control the data, the weights, and the decision to deploy. If the organization does not train or fine-tune, this chapter is Not Applicable except for 2.9, 2.10, 2.18, and 2.19 when it loads weights itself (those rows also carry the self-host tag).

# Requirement Applies L1 L2 L3
2.1 Verify that training and fine-tuning follow a documented secure development process with an owner for each stage from data collection through deployment. training   ✓ ✓
2.2 Verify that the task, the users, and the data sources of a model are recorded before training or fine-tuning starts. training   ✓ ✓
2.3 Verify that each training or fine-tuning dataset has a recorded source and is checked for untrusted or malicious content before use. training ✓ ✓ ✓
2.4 Verify that training datasets cannot be modified by parties who are not authorized to change them after acquisition. training   ✓ ✓
2.5 Verify that the origin of each training dataset and base model is recorded and retained with the model. training   ✓ ✓
2.6 Verify that cleaning and other modifications to training data are recorded with the author, the change, and the time. training   ✓ ✓
2.7 Withdrawn from the verification catalog. —      
2.8 Verify that training and fine-tuning data are scanned for sensitive data, and that data which must not be memorized is removed before training. training ✓ ✓ ✓
2.9 Verify that foundation and pre-trained weights are obtained from an approved source and stored so that unauthorized parties cannot replace them. training, self-host ✓ ✓ ✓
2.10 Verify that weights are loaded from a format that cannot deserialize arbitrary code, or that any exception is pinned to a digest, scanned, and recorded before load. training, self-host ✓ ✓ ✓
2.11 Withdrawn from the verification catalog. —      
2.12 Verify that the regulations which apply to the training data are identified in a record, and that the training environment matches that record. training   ✓ ✓
2.13 Verify that each trained or fine-tuned model has a machine-learning bill of materials covering the base model, datasets, and training code. training   ✓ ✓
2.14 Withdrawn from the verification catalog. —      
2.15 Withdrawn from the verification catalog. —      
2.16 Verify that recorded tests cover prompt injection and sensitive-data extraction for a trained or fine-tuned model’s intended use before that model is approved for deployment. training   ✓ ✓
2.17 Verify that a recorded security assessment, including the risks the owner has accepted, is completed before a trained or fine-tuned model is deployed. training   ✓ ✓
2.18 Verify that retired models have their weights and unneeded training data removed or access-revoked so they cannot be loaded or queried. training, self-host   ✓ ✓
2.19 Verify that base models, adapters, and datasets used for training or for self-hosted inference are pinned to a digest, and that the digest is checked before use. training, self-host   ✓ ✓
2.20 Verify that fine-tunes and adapters are covered by the same source, scan, and digest controls as the base model they modify. training   ✓ ✓

Verification notes


V3. Online learning

Control objective

Production weights do not change from live user data unless that path is approved and controlled. If weights are not updated from live traffic, every requirement in this chapter is Not Applicable. Conversation memory and retrieval are chapters V4 and V5, not this chapter.

# Requirement Applies L1 L2 L3
3.1 Verify that online weight updates from live user interactions are explicitly approved and documented before they are enabled. online ✓ ✓ ✓
3.2 Verify that samples retained from online learning are redacted of secrets and are readable only by the team that operates the learning process. online   ✓ ✓
3.3 Verify that operators can stop online learning and stop serving the updated model without a new release of the surrounding application. online   ✓ ✓
3.4 Verify that interactions used for online learning are reviewed on a defined schedule for attempts to steer the model. online   ✓ ✓
3.5 Verify that an online weight update does not serve production traffic until a person approves that update. online   ✓ ✓

Verification notes


V4. Model memory and retrieval

Control objective

Memory and retrieved documents stay inside the caller’s authority. Untrusted retrieved text is data, not an instruction. If the system has neither memory nor retrieval, this chapter is Not Applicable.

# Requirement Applies L1 L2 L3
4.1 Verify that conversational memory returned to the model belongs to the current user and the current session boundary, and not to another user. memory ✓ ✓ ✓
4.2 Verify that long-term memory is stored and read so that one user cannot retrieve or overwrite another user’s records. memory ✓ ✓ ✓
4.3 Verify that every document placed into the model context is one the current caller is authorized to read. retrieval ✓ ✓ ✓
4.4 Verify that vector stores, embedding caches, and similar retrieval components require authentication for every consumer. retrieval ✓ ✓ ✓
4.5 Verify that production retrieval components grant each consumer only the operations that consumer needs. retrieval   ✓ ✓
4.6 Verify that only authorized processes can add or replace documents and embeddings in a knowledge base. retrieval ✓ ✓ ✓
4.7 Verify that retrieved text and other untrusted content inserted into a prompt are delimited and identified to the application as data rather than as instructions. retrieval, memory, agent ✓ ✓ ✓
4.8 Verify that each addition or replacement of a document or embedding records the actor and the time. retrieval   ✓ ✓
4.9 Verify that prompt caches and embedding caches cannot return one tenant’s entries to another tenant. api, retrieval, memory   ✓ ✓

Verification notes


V5. Secure LLM integration

Control objective

The application, not the end user and not the model, decides what is trusted. Prompts are built server-side, output is validated and untrusted, hidden context is not a security boundary, and consumption is limited.

# Requirement Applies L1 L2 L3
5.1 Verify that model requests are sent by a server-side component the organization controls, not by the end-user client directly to the model provider. api ✓ ✓ ✓
5.2 Verify that the client cannot supply the system instructions or the full prompt that the provider receives. api ✓ ✓ ✓
5.3 Withdrawn from the verification catalog. —      
5.4 Verify that model-provider credentials are covered by requirement 1.1 and are not placed in the prompt or the client. api, agent ✓ ✓ ✓
5.5 Verify that model output which the application parses is validated against the expected schema before it is used, and that extra fields are rejected. api ✓ ✓ ✓
5.6 Withdrawn from the verification catalog. —      
5.7 Withdrawn from the verification catalog. —      
5.8 Withdrawn from the verification catalog. —      
5.9 Verify that completions longer than the documented expected range raise an alert or are truncated before they are shown or acted on. api   ✓ ✓
5.10 Verify that responses shown to users do not include raw provider errors, stack traces, prompts, or credentials. api ✓ ✓ ✓
5.11 Verify that the application documents the check it runs on prompts and completions for suspected prompt injection, and records the cases that check is known to miss. api ✓ ✓ ✓
5.12 Verify that content from retrieval, tools, third parties, earlier model output, files, images, audio, and web pages is subject to the same controls as direct user input. api, retrieval, memory, agent ✓ ✓ ✓
5.13 Verify that model output is treated as untrusted input at every downstream sink, including queries, markup, commands, URLs, and tool arguments. api, agent ✓ ✓ ✓
5.14 Verify that each caller has a limit on how many model requests it can make in a defined period. api ✓ ✓ ✓
5.15 Verify that an alert fires when model spend passes a defined threshold. api ✓ ✓ ✓
5.16 Verify that a baseline of normal model use is defined and that departures from it generate an alert. api   ✓ ✓
5.17 Verify that unauthenticated or preview access can call only the model features intended for that access. api   ✓ ✓
5.18 Verify that authorization, tenant separation, and other security decisions are enforced in application code and still hold if the system prompt is disclosed. api, agent ✓ ✓ ✓
5.19 Verify that each model call enforces a maximum input size and a maximum output size. api ✓ ✓ ✓
5.20 Verify that prompts sent outside the organization’s trust boundary are redacted of secrets and of personal data the recipient is not approved to receive. api   ✓ ✓
5.21 Verify that the provider’s retention of prompts and its use of those prompts for training are documented, and that the configuration matches that decision. api   ✓ ✓
5.22 Verify that model output presented as fact is either limited to supplied sources or labeled as unverified before a person or another system acts on it. api, retrieval   ✓ ✓
5.23 Verify that release tests for the LLM feature include direct injection, indirect injection, sensitive-data extraction, and, where tools exist, unapproved tool use, and that the results are recorded. api, retrieval, agent, training   ✓ ✓

Verification notes


V6. Agents and tools

Control objective

Tools run with the least authority that the current task needs, their definitions cannot change unnoticed, sensitive actions are approved as concrete calls, and a run cannot loop without a limit. If the model cannot call tools, this chapter is Not Applicable.

# Requirement Applies L1 L2 L3
6.1 Verify that a task can call only the tools required for that task, and cannot call tools registered for a different task. agent ✓ ✓ ✓
6.2 Verify that custom tools are built under the same secure development process as the rest of the application. agent   ✓ ✓
6.3 Verify that third-party tools and toolkits are approved through the organization’s third-party risk process before use. agent   ✓ ✓
6.4 Verify that tool arguments are validated for type and for allowed values before the tool runs. agent ✓ ✓ ✓
6.5 Verify that credentials used by tools are covered by requirement 1.1. agent ✓ ✓ ✓
6.6 Verify that the agent runtime can hand raw prompts, tool calls, and tool results to the organization’s monitoring and injection checks. agent   ✓ ✓
6.7 Verify that a tool cannot read or change data the current user is not allowed to read or change. agent ✓ ✓ ✓
6.8 Verify that the host which runs tools cannot reach internal services that the tools do not need. agent   ✓ ✓
6.9 Verify that the host which runs tools can open outbound connections only to approved destinations. agent   ✓ ✓
6.10 Verify that each tool credential is scoped to the minimum operations that tool performs. agent ✓ ✓ ✓
6.11 Verify that a person approves the tool name and arguments of each sensitive or irreversible action before that action runs. agent   ✓ ✓
6.12 Verify that tools which execute code or shell commands run in an environment that does not share the application filesystem or the application credentials. agent   ✓ ✓
6.13 Verify that tool definitions and remote tool servers, including Model Context Protocol servers, are pinned, and that a change to the description, endpoint, or schema is reviewed before use. agent ✓ ✓ ✓
6.14 Verify that credentials the agent uses on its own behalf are distinct from the end user’s credentials, and that the agent cannot exercise the user’s authority beyond the current approved task. agent   ✓ ✓
6.15 Verify that messages accepted from another agent are authenticated and checked for integrity. agent   ✓ ✓
6.16 Verify that a run stops when it reaches a documented limit on tool-call count or on fan-out to other agents or tools. agent ✓ ✓ ✓
6.17 Verify that operators can stop an agent and block further actions when its tool use leaves the approved baseline. agent   ✓ ✓

Verification notes


V7. Dependencies and components

Control objective

Models, adapters, and libraries that implement LLM features come from approved sources, are pinned, and are patched. This chapter covers the supply chain of components. Dataset and weight provenance for training also sits in V2.

# Requirement Applies L1 L2 L3
7.1 Verify that software composition analysis runs against third-party components used by the LLM feature, and that known vulnerable versions in use have a recorded remediation decision. api, self-host, training, agent   ✓ ✓
7.2 Verify that models, adapters, and libraries that implement LLM features are obtained only from sources on an approved list. self-host, training, agent ✓ ✓ ✓
7.3 Verify that a documented patch process covers third-party components used by the LLM feature. api, self-host, training, agent   ✓ ✓
7.4 Verify that a software bill of materials lists the third-party components, licenses, and versions used by the LLM feature. api, self-host, training, agent   ✓ ✓
7.5 Verify that any model artifact capable of deserializing arbitrary code is scanned before load and the scan result is recorded. self-host, training ✓ ✓ ✓
7.6 Verify that private package registries used for LLM components are configured so a public package of the same name cannot be substituted. self-host, training, agent   ✓ ✓
7.7 Verify that model files are rejected at load time when their digest does not match the recorded value. self-host, training   ✓ ✓

Verification notes


V8. Monitoring and response

Control objective

Operators can see which model, prompt version, caller, tools, and documents were involved, without collecting secrets, and they have a response path when that activity is abused.

# Requirement Applies L1 L2 L3
8.1 Verify that usage of the LLM feature is monitored for departures from the expected volume and output pattern, and that those departures alert. api   ✓ ✓
8.2 Verify that alerts exist for suspected prompt leakage, unexpected tool use, and model cost above the defined threshold. api, agent   ✓ ✓
8.3 Verify that security logs for each model call record the model identity, prompt-template version, caller, tool names, and retrieval-document identifiers, and omit secrets and raw sensitive prompt or completion text. api ✓ ✓ ✓
8.4 Verify that LLM security logs are retained for a documented period and cannot be changed by the application role that writes them. api   ✓ ✓
8.5 Verify that the incident process describes the response to a prompt-injection campaign, poisoning of retrieved or training data, tool abuse, and unplanned model cost. api, retrieval, training, agent   ✓ ✓

Verification notes


Appendix A: Requirement changes in this draft

New identifiers: 1.5, 1.6, 2.19, 2.20, 4.7, 4.8, 4.9, 5.18, 5.19, 5.20, 5.21, 5.22, 5.23, 6.13, 6.14, 6.15, 6.16, 6.17, 7.7, 8.3, 8.4, 8.5.

Withdrawn identifiers, which must not be reused: 2.7, 2.11, 2.14, 2.15, 5.3, 5.6, 5.7, 5.8.

Active identifiers keep their v2.0 numbers. Verification notes record where the level or the obligation changed. The full crosswalk to the 2026 Top 10 lists is in mappings/crosswalk.md.

Appendix B: Guidance that is not verified

These items were requirements or “consider” rows in v2.0. They are not pass/fail rows in this draft.

Appendix C: Glossary

Terms used by the requirements. Textbook machine-learning definitions are left to other references.