Our new X account is live! Follow @wizwand_team for updates
WorkDL logo mark

LLMDFA: Analyzing Dataflow in Code with Large Language Models

About

Dataflow analysis is a fundamental code analysis technique that identifies dependencies between program values. Traditional approaches typically necessitate successful compilation and expert customization, hindering their applicability and usability for analyzing uncompilable programs with evolving analysis needs in real-world scenarios. This paper presents LLMDFA, an LLM-powered compilation-free and customizable dataflow analysis framework. To address hallucinations for reliable results, we decompose the problem into several subtasks and introduce a series of novel strategies. Specifically, we leverage LLMs to synthesize code that outsources delicate reasoning to external expert tools, such as using a parsing library to extract program values of interest and invoking an automated theorem prover to validate path feasibility. Additionally, we adopt a few-shot chain-of-thought prompting to summarize dataflow facts in individual functions, aligning the LLMs with the program semantics of small code snippets to mitigate hallucinations. We evaluate LLMDFA on synthetic programs to detect three representative types of bugs and on real-world Android applications for customized bug detection. On average, LLMDFA achieves 87.10% precision and 80.77% recall, surpassing existing techniques with F1 score improvements of up to 0.35. We have open-sourced LLMDFA at https://github.com/chengpeng-wang/LLMDFA.

Chengpeng Wang, Wuqi Zhang, Zian Su, Xiangzhe Xu, Xiaoheng Xie, Xiangyu Zhang• 2024

Related benchmarks

TaskDatasetResultRank
Software Vulnerability DetectionJuliet Suite DBZ (test)
Precision100
16
Software Vulnerability DetectionJuliet Suite XSS (test)
Precision100
16
Software Vulnerability DetectionJuliet Suite OSCI (test)
Precision1
16
Taint AnalysisSecBench.js
Precision94.44
4
Taint AnalysisTaintBench source-sink pairs
Precision75.38
3
Bug DetectionJuliet Test Suite C/C++
DBZ Precision85.71
1
Showing 6 of 6 rows

Other info

Follow for update