Published July 16, 2026
| Version v2
Dataset
Open
Mind the Gap: Do SAST Tools Cover High-Frequency CWEs across Programming Languages?
Authors/Creators
Description
## Mind the Gap: Do SAST Tools Cover High-Frequency CWEs across Programming Languages?
This repository contains the data, evaluation criteria, and experimental results for the research paper: "Mind the Gap: Do SAST Tools Cover High-Frequency CWEs across Programming Languages?". This study presents a large-scale empirical analysis of nine popular Static Application Security Testing (SAST) tools to evaluate their coverage of language-specific high-frequency CWEs across C/C++, Java, and Python.
Project OverviewStatic Application Security Testing (SAST) tools are critical for identifying vulnerabilities early, but existing evaluations often focus on language-agnostic rankings like the MITRE CWE Top 25. This project addresses the mismatch between tool capabilities and developers' actual security needs by:Constructing Language-Specific Datasets: Identifying high-frequency CWEs from 197,016 CVEs reported over the past decade. Evaluating Coverage Gaps: Analyzing 9 popular SAST tools to identify where they fail to detect common vulnerabilities. Assessing Migration Potential: Investigating how multi-language tools can reuse existing checkers to fill coverage gaps.
## Repository Structure
The project is organized into the following core components:
CVEData/ Contains the raw and processed vulnerability data used to identify high-frequency CWEs.Primary Source: 197,016 labeled CVE entries from the National Vulnerability Database (NVD) covering 2016 to 2025.Heuristic Labeling: Implementation of the automated labeling process—using file extensions, language names, and 167 manually selected keywords—to map CVEs to specific languages.Accuracy: Manual validation confirms an overall labeling accuracy of 91.5%.
CWEView1000/ Contains the hierarchical data for CWE View 1000 (Research Concepts).Comprehensive Set: Includes 944 CWE types organized by their underlying causes and patterns. Root Categories: Systematic organization of all CWEs into 10 root categories (e.g., CWE-664, CWE-707, CWE-284) to ensure a holistic evaluation.
ToolData/ Technical specifications and checker data for the nine evaluated SAST tools.Analyzed Tools: CodeQL, Semgrep, SonarQube, Cppcheck, Clang Static Analyzer (CSA), Flawfinder, Insider, SpotBugs + FindSecBugs, and Bandit. Tool Metadata: Includes descriptions of analysis paradigms (e.g., Datalog-based semantic engines, symbolic execution, pattern matching) and the specific CWE checkers each tool implements.
RQ Results.xlsx Detailed results for the three core Research Questions (RQs)
## Key Findings
Language Sensitivity: Vulnerability patterns are highly language-dependent; Jaccard similarity between C/C++ and other languages is only 0.17 to 0.18.C/C++
Priority: SAST coverage is lowest for C/C++, highlighting a critical need for tool improvement in this area.
Complementary Strengths: No single tool achieves complete coverage; practitioners should combine tools based on their specific detection goals.
Migration Potential: Leveraging checker migration between languages is a cost-effective way to extend CWE coverage, especially for multi-language tools.
Files
artifact.pdf
Files
(141.2 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:3b1963b3e8f2c3e4fc6dfca29959328e
|
376.3 kB | Preview Download |
|
md5:f92e8a423c0ad344edc439363b0f3a87
|
1.5 kB | Preview Download |
|
md5:dcd5d959f4a0609dd02a88124cf9d5b3
|
4.8 kB | Preview Download |
|
md5:11d038879124b40f288319032fc52159
|
1.2 kB | Preview Download |
|
md5:7cf7008a618b9e19bdd74aef72a9dda7
|
1.4 kB | Preview Download |
|
md5:d3c6a56f5bcf7fe6372c18951aecd3d8
|
140.8 MB | Download |