Log date · Thu
KLEECopilot: LLM-guided directed symbolic execution in KLEE (arXiv 2607.21676)
The paper uses an LLM to mark suspicious code and prioritize loop exits so KLEE reaches deeper bugs, a technique defenders can apply to their own code first.
What happened on 23 July
On 23 July 2026 at 10:54 UTC, v1 of Directed Symbolic Execution for Vulnerability Discovery: An LLM-Guided Approach in KLEE was submitted to arXiv. The authors note that KLEE's path-prioritization heuristics mostly target coverage and can exhaust the exploration budget inside loops. Their KLEECopilot uses an LLM to mark potentially vulnerable code and steer path prioritization, and adds loop-exit prioritization. According to the abstract, compared with baselines such as Empc it improved basic block coverage by 42.24% and line coverage by 125.82%, and found 1,335 violations, 87 of them unique; results depended on the model family but only marginally on model scale.
Meaning and limits for defenders
The work reflects a trend: the LLM does not perform the analysis alone but tells traditional engines such as symbolic execution or fuzzing where to look, lowering the cost of deep analysis. The limits matter. KLEE operates on LLVM bitcode, the evaluation uses programs with source available, and the abstract does not address obfuscated or binary-only targets, so the results do not transfer directly to shipped apps. The more practical meaning for developers is that the technique pays off most on your own code first: native parsers, protocol handlers and file-format code shipped inside apps are risks if they contain bugs, obfuscated or not. Hiding an implementation does not fix its defects.
Checks you can run
First, list the native code in your app that handles external input, such as image and document parsers, crypto wrappers and private protocols, and put it under fuzzing or symbolic execution with corpora kept in CI. Second, if you adopt LLM-assisted analysis tools, record the model and prompts used so results can be reproduced; the paper shows effectiveness depends on model family, so re-evaluate after switching models. Third, after fixing what you find, rerun regression tests on the hardened or obfuscated build to confirm the transformation introduced no behavioral differences.
Your checklist
- Put native code that handles external input under fuzzing or symbolic execution
- Record models and prompts used in LLM-assisted analysis for reproducibility
- Rerun regression tests on the hardened build
Primary sources
- arXiv: Directed Symbolic Execution for Vulnerability Discovery: An LLM-Guided Approach in KLEE (2607.21676) · Source date 2026-07-23 · Checked 2026-10-12