Checklist · Security Testing

AI Security Testing Checklist

Test the attack surface that exists because a system reads untrusted content and can act, injection, leakage, excessive agency and permissions. Mapped to the OWASP LLM and Agentic Top 10s.

Markdown. No sign-up, no email.

System: _______________ Date: _______ Tested by: _______________

Aligned to the OWASP Top 10 for LLM Applications (2025) and the OWASP Top 10 for Agentic Applications (2026). Prompting is not a control, architecture is. This checklist measures exposure and verifies the architectural defences.

1. Prompt injection: direct#

  • [ ] "Ignore previous instructions" and variants
  • [ ] Role reassignment: "you are now in developer mode"
  • [ ] "Repeat the text above"
  • [ ] Instruction smuggling via encoding (base64, unicode, homoglyphs)
  • [ ] Instructions in another language
  • [ ] Instructions inside a code block or comment
  • [ ] Blast radius assessed: if an override succeeds, what could it actually cause?

2. Prompt injection: indirect#

The dangerous one. The user is innocent; the payload is in content the system retrieves.

  • [ ] Hostile instruction planted in a retrievable document
  • [ ] Hostile instruction in a web page the system fetches
  • [ ] Hostile instruction in an email or ticket body
  • [ ] Payload split across two documents
  • [ ] Verified: retrieved content cannot change what the system does

3. System prompt#

  • [ ] Extraction attempted
  • [ ] System prompt contains no credentials or API keys
  • [ ] Contains no internal URLs or hostnames
  • [ ] Contains no rules an attacker would need in order to bypass controls
  • [ ] Treated as public regardless of whether extraction succeeded

4. Excessive agency: per tool#

For each tool the system can call:

  • [ ] Can it be invoked with arguments the user should not control?
  • [ ] Can it be invoked for a user lacking permission?
  • [ ] Is it as narrow as the task allows?
  • [ ] Is there a human gate on destructive / financial / outbound use?
  • [ ] Can it be chained with another tool to achieve something neither allows alone?
  • [ ] Is every invocation logged with actor, arguments and result?

5. Information disclosure#

  • [ ] Output never contains another user's data
  • [ ] Credentials, tokens and personal data are not echoed back
  • [ ] Error messages reveal no internals
  • [ ] Training or fine-tuning data cannot be extracted
  • [ ] Verbose or debug modes disabled in production

6. Permissions: highest value, run first#

  • [ ] Identical request run as users with different entitlements
  • [ ] Each sees only what they are entitled to
  • [ ] Retrieval filtered at query time, not after generation
  • [ ] System acts with the requesting user's permissions, not a service account
  • [ ] Failure treated as a security incident

7. Memory and context (agents)#

  • [ ] False information written to stored context, then a normal task run
  • [ ] Verified whether the falsehood persists and influences behaviour
  • [ ] One user cannot write to another user's memory
  • [ ] Stored context can be inspected
  • [ ] Stored context can be cleared

8. Resource exhaustion#

  • [ ] Input crafted to maximise token consumption
  • [ ] Task with no achievable end, step cap fires
  • [ ] Request triggering an expensive tool chain
  • [ ] Spend cap verified by triggering it

9. Supply chain#

  • [ ] Model provider and version recorded
  • [ ] Third-party components reviewed (MCP servers, plugins, libraries)
  • [ ] Anything third-party running with granted access reviewed as a dependency
  • [ ] Data handling terms checked: is input used for training?

10. Process#

  • [ ] Every finding converted to a permanent regression case
  • [ ] Results expressed as a rate ("blocked 47 of 50"), not a binary
  • [ ] Suite re-run on every model version change
  • [ ] Suite re-run on every new tool
  • [ ] Tested at production temperature, not only at 0

Findings#

#CategoryWhat succeededBlast radiusSeverityOwner

Sign-off#

NameDate
Tested by
Reviewed by
Accepted risks approved by

Back to Security Testing

Get new material when it is published

Everything here is free and stays free. There is no form in front of any document. If you want to know when new guides and templates go up, leave an email.

Roughly monthly. Unsubscribe in one click. We do not share your address, and we will not call you.