Soundness Checking of Taint Flow Models
- Source
- arxiv.org
- Author
- Samarth Kishor, Victor Nicolet, Joey Dodds
- Date

Context
This taint-analysis study separates an AI's proposed code summary from the proof that makes it usable. Taint analysis follows data through software, for example checking whether user input can reach a log. The summarizes a function's possible data flows; a symbolic checker then tries to prove that flows omitted from the summary cannot occur.
The generated 97 summaries across six Go codebases and proved them sound for 93% of the methods they cover. The paper states that its proofs hold relative to assumptions, including the absence of unsafe memory operations and reflection, and that the analyzed programs are free of data races. This lets automation assist summary writing while verification remains a separate step.
- The method is guess-and-check: an LLM 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.
- 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.
- eval — A repeatable test for AI quality — a set of tasks plus scoring — used the way software teams use test suites, because model output is too variable to judge by eyeballing.
- 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.
articleFlowCheck: Helping End-Users Specify and Verify Intent in Vibe-Coded Web AppsReya Vir, Lydia Chilton, Zhuo Zhang, Eugene Wu
articleWhen Code Becomes an LLM Call: An Empirical Study of Call-Site Contracts in Agentic SystemsShihao Weng, Longtian Wang, Yang Feng, Mingfei Cheng, Jia Liu, Chao Shen, He Ye, Federica Sarro, Xiaofei Xie
articleHow effective are traditional test criteria at detecting bugs in large language models generated code?Asma Hamidi, Michael Konstantinou, Renzo Degiovanni, Mike Papadakis
Checking sign-in…
Loading comments…