Agent Wranglers

ASVS 5.0 mapping

Each rule in this playbook mapped to the OWASP Application Security Verification Standard 5.0 requirements it helps you meet, chapter by chapter.

The Application Security Verification Standard (ASVS) 5.0.0 was released by OWASP in May 2025. It lists about 350 requirements in 17 chapters, each marked level 1, 2 or 3. The IDs below are ASVS chapter, section and requirement numbers, such as 1.2.4 for parameterised queries. Cite them in full as v5.0.0-1.2.4, since numbers changed from version 4.

A rule with no ASVS ID covers a control that ASVS 5.0 leaves out, such as threat modelling, supply chain build integrity or AI features. Meeting a rule does not prove every word of the requirement. Check the requirement text itself, from the OWASP ASVS project.

Threat modelling

RuleTitleASVS 5.0
APS-1Plan attacks before buildingNot covered
APS-93Draw the data flows and their trust boundaries13.1.1
APS-94Find threats at every boundary with STRIDE and LINDDUNNot covered
APS-95Write abuse cases next to user storiesNot covered
APS-96Pick an ASVS level for each appThe whole standard

Input and injection

RuleTitleASVS 5.0
APS-2Use parameterised queries1.2.4
APS-3Escape everything you show1.2.1, 1.2.2, 1.3.1, 3.2.2
APS-4Never pass input to a shell1.2.5
APS-5Keep input out of templates1.3.7
APS-6Strip line breaks from headers and logs16.4.1
APS-7Turn off external entities in XML1.5.1
APS-8Never rebuild objects from untrusted data1.5.2
APS-9Block prototype pollution15.3.6
APS-97Keep query operators out of document database input1.2.4
APS-98Escape input in directory queries1.2.6
APS-99Neutralise formulas in spreadsheet exports1.2.10

Authentication and sessions

RuleTitleASVS 5.0
APS-10Slow down password guessing6.3.1, 6.3.8
APS-11Store passwords with a slow hash11.4.2
APS-12Verify every token9.1.1, 9.1.2, 9.2.1, 9.2.3
APS-13Compare secrets in constant time11.2.4
APS-14Make tokens from a secure random source7.2.3, 11.5.1
APS-15Trust an email domain only after strict parsingNot covered
APS-16Lock down session cookies3.3.4, 7.2.4, 7.3.1, 7.3.2, 7.4.1
APS-17Set cookies safely or not at all3.3.1, 3.3.2, 3.3.3, 3.3.4
APS-18Block cross-site form posts3.5.1, 3.5.2, 3.5.3
APS-19Clear cached pages and data when someone signs out14.3.1

Access control

RuleTitleASVS 5.0
APS-20Deny by default and when a check fails8.3.1, 16.5.3
APS-21Accept only the fields you expect15.3.3
APS-22Return only the fields needed8.2.3, 14.2.6, 15.3.1
APS-101Decide access in one policy module8.1.1, 8.2.1, 8.2.2, 8.3.1

Browser security headers

RuleTitleASVS 5.0
APS-23Make browsers always use HTTPS3.4.1, 3.7.4
APS-24Load nothing over plain HTTP12.2.1
APS-25Allow only the scripts you wrote3.4.3
APS-26Collect reports of blocked content3.4.7
APS-27Stop browsers guessing file types3.4.4
APS-28Refuse to be framed3.4.6
APS-29Refuse odd requests from other sites3.5.8
APS-30Keep other sites' windows apart3.4.8, 3.5.8
APS-31Share less in the Referer header3.4.5
APS-32Switch off browser features you don't useNot covered
APS-33Lock scripts to a known hash3.6.1
APS-34Send a hash of the bodyNot covered
APS-35Lock down risky DOM writes3.2.2
APS-36Sending the old XSS filter headerNot covered
APS-37Share data across sites on purpose3.4.2
APS-38Check the origin of WebSocket connections4.4.1, 4.4.2
APS-39Check the sender of every window message3.5.5
APS-40Redirect only to your own pages3.7.2
APS-100Send the security headers as one set3.4.1, 3.4.3, 3.4.4, 3.4.5, 3.4.8

Requests, files and caches

RuleTitleASVS 5.0
APS-41Fetch only allowed addresses1.3.6, 15.3.2
APS-42Treat data from other APIs as untrusted2.2.1
APS-43Check every uploaded file5.2.1, 5.2.2, 5.3.1, 5.4.1
APS-44Keep file paths inside their folder5.3.2
APS-45Unpack archives safely5.2.3, 5.2.5, 5.3.3
APS-46Keep private pages out of shared caches14.2.2, 14.2.5, 14.3.2
APS-47Keep unkeyed headers from changing cached pages14.2.5
APS-48Make every server agree where a request ends4.2.1, 4.2.2

Limits and business logic

RuleTitleASVS 5.0
APS-49Limit how often anyone can call your APIs2.4.1
APS-50Take the client address only from proxies you run4.1.3, 15.3.4
APS-51Keep regular expressions from stalling the server1.3.12
APS-52Work out every amount on the server2.2.2, 2.2.3, 2.3.1
APS-53Make each change happen exactly once2.3.3, 2.3.4, 15.4.2

Cryptography and keys

RuleTitleASVS 5.0
APS-54Encrypt data on the wire and on disk12.2.1, 12.3.1, 12.3.3
APS-55Turn off old encryption12.1.1, 12.1.2
APS-56Use only standard cryptography11.2.1, 11.3.1, 11.3.2, 11.4.1
APS-57Keep encryption keys in a key service11.1.1, 13.3.1, 13.3.3
APS-58Encrypt the most sensitive fields11.3.2, 11.3.3, 14.2.4
APS-59Prepare your encryption for quantum computers11.1.2, 11.1.4, 11.2.2
APS-102Renew certificates automatically12.2.2, 12.3.4
APS-103Wrap data keys with a key-encryption key11.1.1, 13.3.3

Secrets and configuration

RuleTitleASVS 5.0
APS-60Keep secrets out of code13.3.1
APS-61Keep secrets out of the browser13.3.1
APS-62Give each key the least power13.2.2, 13.3.2
APS-63Keep storage buckets private8.2.2
APS-64Close debug and admin doors13.4.2, 13.4.5
APS-65Serve no hidden files13.4.1, 13.4.3, 13.4.7
APS-66Remove defaults and samples6.3.2
APS-67Keep software current and quiet13.4.6, 15.2.1
APS-68Remove DNS records you no longer useNot covered

Supply chain

RuleTitleASVS 5.0
APS-69Lock and audit dependencies15.1.1, 15.2.1
APS-70Review every new package15.1.4, 15.2.4
APS-71Keep the dependency tree small15.2.3
APS-72Wait a few days before taking new releasesNot covered
APS-73Fetch private packages only from your own registry15.2.4
APS-74Keep secrets out of builds from strangersNot covered
APS-75Publish what is in each release15.1.2
APS-76Treat a machine that installed a bad package as breachedNot covered
APS-77Use models and data from trusted sourcesNot covered
APS-104Build releases at SLSA Build Level 2 or higherNot covered
APS-105Verify signatures and provenance before you install or deploy15.2.4
APS-106Say which known holes do not affect you with VEX15.1.1

Errors, logs and vulnerabilities

RuleTitleASVS 5.0
APS-78Show short errors16.5.1, 16.5.4
APS-79Keep private data out of logs and addresses14.2.1, 16.2.5
APS-80Log attacks without personal data16.3.1, 16.3.2, 16.3.3, 16.4.3
APS-81Fix each finding within the time its severity allows15.1.1, 15.2.1
APS-107Publish a vulnerability disclosure policyNot covered
APS-108Keep a security incident runbook and rehearse itNot covered

AI features and agents

RuleTitleASVS 5.0
APS-82Resist direct prompt injectionNot covered
APS-83Resist indirect prompt injectionNot covered
APS-84Break the lethal trifectaNot covered
APS-85Give agent tools the least power they needNot covered
APS-86Treat model output as untrusted1.3.2
APS-87Keep secrets out of the system promptNot covered
APS-88Protect agent memoryNot covered
APS-89Send models only the private data they need14.2.3
APS-90Keep a switch that turns the agent offNot covered
APS-91Run code the model writes in a sandbox15.2.5
APS-92Lock local agent servers to your own machineNot covered

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/application-security/asvs-5-0-mapping">Agent Wranglers application security playbook</a>. In code you write, add a comment next to it with the same link.