What if AI could autonomously find, trace, and exploit vulnerabilities in code?
The rise of AI agents has opened many new possibilities, but one remains underexplored in security: combining static and dynamic testing in a unified, autonomous pipeline. Today’s app-sec solutions typically focus on either static analysis (SAST) or dynamic testing (DAST) In this post, we’ll dive into how AI agents – capable of reasoning, tool-use, memory, and environment-aware adaptation, can revolutionize vulnerability research end-to-end, drawing from the FAAST project.
An AI agent is an autonomous system built around an LLM that orchestrates multiple tools and actions to achieve a defined goal. But it’s more than a single-shot prompt, it features:
A lot of frameworks exist for building ai agents, like LangChain. Yet many developers opt for custom architectures to better control error-handling, edge-case logic, hallucination management, and memory hygiene, especially when chaining agents in mission-critical flows.
FAAST is a side-project aiming to break the barrier between static and dynamic security testing.
It basically means Full Agentic Application Security Testing. The main advantage of this way of combining static and dynamic security testing is to gain the benefits of both while avoiding the worst :
FAAST is composed of multiple agents that are tasked with different operations :
For now the prototype of FAAST that is publicly available in github uses LLM for reading and spotting vulnerabilites in the code. But you can easily imagine the agent having access to tools to spot vulnerabilities, such as semgrep. The great point about using those tools is that moving on we can validate if those flaws are real vulnerabilities by trying to exploit them dynamically. Finally, the architecture of FAAST makes it easy to use external static analysis tools.
For now the Tracer agent relies entirely on the LLM’s ability to understand code context, reason about execution flow, and trace vulnerabilities back to exposed entrypoints, without explicit use of static analysis tools:
The third agent uses the contextual trace data to craft realistic payloads and conduct runtime verification:
'; DROP TABLE --
for SQLi, <script>alert()
for XSS) tailored to context : HTTP parameter names, JSON bodies, headers.Confirmed
or False Positive
.We tested FAAST’s public prototype against a deliberately vulnerable web app, containing an SQL injection and a command injection. Below is how each agent performs in practice.
We launch the tool on the codebase (”vulnerable_app”).
Result : The agent flags both issues using LLM-powered pattern recognition, noting precise file locations. This output is visually represented below:
Next, the Tracer agent uses the LLM to:
This prepares the groundwork for targeted, context-aware payloads in the final step.
Finally, the Exploiter agent automates the runtime test:
' OR '1'='1
localhost; echo injected_test >/tmp/injection_test
The first vulnerability is exploited with a classic sql injection payload :
And same for the second one that is exploited with a classic command injection payload :
Finally the results are printed, confirming the two vulnerabilities that were previously found with the static vulnerability spotter :
FAAST shows how AI agents can bridge the gap between static analysis and dynamic testing in a practical, autonomous workflow. Each agent contributes to a full chain of reasoning and verification – spotting issues, tracing them to real entry points, and confirming their exploitability. It’s a step toward more intelligent and end-to-end application security, where findings are not just theoretical, but tested and contextualized.
Check out the code and try it yourself on GitHub.
Yacine Souam / @Yacine_Souam
Founded in 2021 and headquartered in Paris, FuzzingLabs is a cybersecurity startup specializing in vulnerability research, fuzzing, and blockchain security. We combine cutting-edge research with hands-on expertise to secure some of the most critical components in the blockchain ecosystem.
Contact us for an audit or long term partnership!
Cookie | Duration | Description |
---|---|---|
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |