
to identify vulnerabilities. Static code analysis scans
the entire source code of a system to uncover potential
security vulnerabilities. This method infers the be-
havior of a program without executing it. Static code
analysis detects vulnerabilities while the software is
still in the development phase. On the other hand, dy-
namic code analysis is performed after the developer
executes the source code. As observed by many soft-
ware developers and researchers, static code analysis
has proven to be more efficient than dynamic code
analysis in identifying software security vulnerabili-
ties (Macedo and Salgado, 2015).
Static Application Security Testing (SAST) tools
analyze a snippet of code or its compiled version
to identify security issues, including suspicious con-
structs, unsafe API usage, dangerous runtime errors,
bugs, duplications, and bad smells (Wheeler, 2015).
SAST tools assist developers in detecting security
vulnerabilities during the coding phase, where iden-
tifying and addressing security issues in the source
code is relatively less expensive. For this reason,
SAST tools are becoming increasingly crucial in the
software development lifecycle (Fagan et al., 2020).
Several tools claim to perform “security analysis”, in-
cluding AppScan Source, Checkmarx, Fortify, Sem-
grep, Bandit, and SonarQube. However, most SAST
tools are commercial and web-based, requiring the
source code to be sent to a “trusted” remote server.
In this paper, our goal is to investigate the fea-
sibility of using open-source and standalone SAST
tools for detecting security vulnerabilities in C/C++
projects. To achieve this goal, we conducted an
empirical study in which we examined 30 C/C++
projects using two open-source and standalone SAST
tools: Flawfinder (FF)
2
and Visual Code Grep-
per (VCG)
3
. Additionally, the study adopted guide-
lines provided by the Common Weakness Enumera-
tion (CWE)
4
and the Open Web Application Security
Project (OWASP)
5
to identify and analyze vulnerabil-
ities in the source codes made available in these repos-
itories. The results demonstrate the potential of using
open-source and standalone SAST tools as a means
of evaluating the security risks of a software product
without manually reviewing all findings.
The remainder of this paper is organized as fol-
lows. Section 2 discusses the main related works.
Section 3 presents the methodology used in this re-
search. Section 4 analyzes the results obtained. Fi-
nally, Section 5 presents the conclusions and points to
directions for future work.
2
https://github.com/david-a-wheeler/flawfinder
3
https://github.com/nccgroup/VCG
4
https://cwe.mitre.org/
5
https://owasp.org/
2 RELATED WORKS
In (Baca et al., 2008), the authors used a commer-
cial SAST tool called Coverity Prevent to evalu-
ate three private C++-based telecommunications soft-
ware projects from the same company. The case study
involved implementing a code security verification
step within the software development lifecycle, where
developers used the reports generated by the Coverity
Prevent tool to fix vulnerabilities. The authors con-
cluded that incorporating the security verification step
and using the analyzed tool provided improvements in
the quality and security of the developed software.
In the study presented in (Woody et al., 2020), the
authors discuss the challenges of adopting DevSec-
Ops and the importance of incorporating a security
step into the software development lifecycle within
organizations of the United States Department of De-
fense. They found that using DevSecOps allowed for
mitigating security risks by detecting and analyzing
vulnerabilities in an automated pipeline that acceler-
ated the secure delivery process of the software.
In (de Franc¸a and da Silva, 2022), the authors de-
scribe a case study aimed at comparing two develop-
ment processes. The first process involves DevOps
without the security analysis step, while the second
corresponds to DevSecOps, which includes a dedi-
cated security step. The results revealed that, in both
pipelines, the product was delivered. However, in the
process using DevSecOps, it was possible to avoid de-
livering a vulnerable application, demonstrating that
integrating continuous security into DevOps work-
flows is not only feasible but can also provide signifi-
cant benefits to organizations.
In the work presented in (Rahul et al., 2019), the
authors integrated code security analysis as part of the
software development process, preventing attacks and
creating a secure environment and a more protected
system. They used the open-source platform JENK-
INS and code analysis plugins that perform SAST
checks.
In (Shi et al., 2024), a methodology was pro-
posed to produce and optimize a knowledge graph
that aggregates information from common threat
databases (CVE, CWE, and CPE). The threat knowl-
edge graph was applied to predict associations be-
tween threats, specifically between products and vul-
nerabilities. The authors demonstrated the ability of
the threat knowledge graph to uncover many associa-
tions that are currently unknown.
In (Esposito et al., 2024), the authors aim to eval-
uate the effectiveness of vulnerability identification
mechanisms based on SASTs versus machine learn-
ing alternatives. They investigated the use of eight
Evaluating the Use of Open-Source and Standalone SAST Tools for Detecting Vulnerabilities in C/C++ Projects
395