The method is guess-and-check: an LLMA large language model — the neural network behind tools like Claude and ChatGPT, trained on huge amounts of text to predict what comes next.Full definition →AI agentAn AI system that doesn't just answer once but works toward a goal in a loop — taking actions, reading the results, and deciding what to do next.Full definition → proposes a precise taint flow model for a library method, then a symbolic algorithm derives which flows must not occur for that model to be sound and tries to prove those must-not-flows.
Proofs rely on lightweight static analyses such as the type system and pointer analysis. Only when those fall short does the checker infer maximally general callee models and verify them recursively, which avoids a full inter-procedural taint analysis in most cases.
Model precision sets the checker's cost: per the authors, a more precise LLM model leaves fewer must-not-flows to verify, so better models are also cheaper to prove.
On 97 LLM-generated models for methods in 6 large Go codebases, the approach proved soundness for 93% of the methods covered, and the proven models introduced no new false positives when checking taint flow properties.
Terms in this piece · Glossary
LLM — A large language model — the neural network behind tools like Claude and ChatGPT, trained on huge amounts of text to predict what comes next.
AI agent — An AI system that doesn't just answer once but works toward a goal in a loop — taking actions, reading the results, and deciding what to do next.
Why it matters
It gives a way to trust LLM-generated taint models for security tools by symbolically proving which flows can't occur, instead of relying on unverifiable LLM output.