Prompt injection is ranked as the first risk in the OWASP Top 10 for LLM applications, and the OWASP attack writeup splits it into a direct form, where the attacker types the override, and an indirect form, where malicious prompts are embedded in content the model processes later, such as a web page or an email the OWASP prompt injection page. The same page notes that such instructions are often concealed with white text on a white background or non-printing Unicode characters, which is why "did the agent behave correctly" beats "did the agent say something suspicious" as a test criterion.
The root cause is architectural rather than a bug. Models cannot reliably separate trusted instructions from untrusted data because both arrive as natural-language text, so there is no equivalent of a parameterized query enforcing a privilege boundary a prompt injection practitioner guide. That has a direct consequence for evaluation: you cannot test your way to a clean instruction boundary, so you test for blast radius instead. When the agent reads a hostile document, page or email, does it take an action you would not have authorized?
Indirect injection is the neighboring attack surface to direct input, and it differs in three ways that shape test design. The attacker need not be a user; anyone who can put content in front of the agent is a candidate. The content type determines what the attacker can hide and what your pipeline can strip. And the failure you care about is usually an action or a data flow, not a sentence, which is what makes mechanical scoring viable for most cases. An empirical study of real web content analyzed 1.2 billion URLs from 24.8 million hosts and validated 15,300 instances across 11,700 pages, finding that most instructions target machines rather than humans, with about 70% appearing in non-rendered HTML such as headers, comments and metadata the web prevalence study.



