LLM security testing is the practice of attacking a running AI application with adversarial inputs to find flaws that only appear at runtime: prompt injection, jailbreaks, data exfiltration, insecure output handling, and excessive agency. Unlike static analysis, it observes how the model and the surrounding application behave under real attack, because those behaviors never show up in source code.
The new attack surface of LLM applications
An LLM inside your product is a new kind of component: it takes untrusted input and produces output your application may act on.
Five failure classes dominate:
- Direct prompt injection. The user overrides your system prompt through the chat interface itself.
- Indirect prompt injection. Attack instructions hide in content the model reads: a web page it summarizes, a document it processes, an email it triages.
- Jailbreaks. Crafted inputs defeat safety guardrails and produce output your policies forbid.
- Data exfiltration. The model is coaxed into revealing system prompts, other users' context, or internal data it was given.
- Insecure output handling and excessive agency. Model output flows into HTML, SQL, or shell commands unescaped, or a tool-calling agent holds permissions it can be talked into abusing.
None of these exist in a traditional web application. All of them exist the day you ship an LLM feature. The broader discipline is covered in our guide to AI red teaming.
Why static scanners miss all of it
A static scanner looks for patterns in code. LLM vulnerabilities do not live in code.
There is no grep pattern for a jailbreak. Your system prompt can read as airtight and still collapse three turns into an adversarial conversation. Whether output handling is safe depends on what the model actually emits under pressure, which is a distribution of behavior, not a line of source.
SAST and dependency scanning still matter for the application around the model. But at the model boundary itself they report nothing, because they can see nothing. The gap is structural, not a matter of better rules.
How LLM security testing works
Dynamic LLM security testing runs adversarial payloads against your running application and observes what the model and the app do next.
The test taxonomy comes from the OWASP LLM Top 10. Each category becomes a family of concrete attacks: injection strings for LLM01, exfiltration probes for LLM02, output-handling payloads that check whether model text reaches your DOM or your database unescaped. Our walkthrough of OWASP LLM Top 10 testing covers the full list category by category.
The important property is that testing observes both sides. A model refusing a payload is one signal. The application sanitizing the output anyway is another. A vulnerability is confirmed only when the full chain misbehaves, and that confirmation is what separates a finding from a guess.
Why this needs to run continuously
An annual review of an LLM application tests a configuration that will be replaced within weeks.
Prompt tweaks, model version bumps, new tools granted to an agent, changes to RAG sources: each one changes security behavior, and none of them look risky in code review. A one-word system prompt edit can reopen an injection path that was closed last sprint.
I think LLM security only works as a continuous practice. The argument for continuous penetration testing applies here with more force, because this attack surface mutates faster than any other part of your stack.
Where Sekura fits
Sekura tests LLM applications inside its 7-phase multi-agent pipeline: white-box SAST with 7 engines, recon with more than 50 Kali tools, crypto-agility and post-quantum review, vulnerability analysis with 16 concurrent agents, exploitation with 16 exploit agents, exploit-chain analysis, and reporting with CVSS v3.1 scores and SARIF output. LLM security, application security, and post-quantum crypto review run in one scan, so you do not need a separate tool for the model boundary.
Findings are evidence-only. If an injection hypothesis does not produce an observable exploit against your running application, it is not reported. Scans run in your own GitHub Actions runner, or behind your firewall on the enterprise plan.
What we do not do: model alignment research, training-data audits, or open-ended human red-team exercises. We are the automated, repeatable layer that reruns on every change. You can start with a free first scan via npx sekura init.
Models will keep changing weekly. The only security posture that survives that is one that retests just as often.
