software security tools
software security tools
1 Introduction
Cyber Security by the National Institute of Standards and Technology (NIST) [7]
is “The ability to protect or defend the use of cyberspace from cyber-attacks.”
There are two aspects in cyber security: software and information protection.
Depending on the focus, some authors talk about the software security, other
about information security. Other similar aspects of cyber security are hardware
and network security, but all of them are interconnected in the sense that cyber-
attacks are based on some software vulnerability. For example, vulnerability in
the embedded software in essence may be hardware or network vulnerability etc.
In any case, the most destructive and dangerous cyber-attacks are focused
on the information and that is why the cyber security standards are focused on
information security like that of ISO 27000 series of standards [8]. However, in-
formation vulnerability is achieved usually via software vulnerability.
Software security can be accomplished in two directions: secure software de-
velopment, which is a NIST initiative [11], and software vulnerability protection.
In both cases, software security professionals face a challenge when they need to
choose and evaluate the proper tool to help them fulfil their everyday tasks.
Copyright © 2021 for this paper by its authors. Use permitted under
Creative Commons License Attribution 4.0 International (CC BY 4.0).
Main goal of this paper is to propose a classification framework for different
software tools aimed at software and cyber security provision.
The structure of the paper is as follows: Section 2 is devoted to related works;
Section 3 provides information about the background of our work; Section 4 de-
scribes the methodology of this research; Section 5 describes our classification of
software security tools; and finally, Section 6 concludes the paper and states the
directions for further research.
2 Related works
Software security is widely researched area both by academia and software
industry. Many classifications attempt to streamline the efforts to provide
security in different subdomains, like security vulnerabilities, popular attacks,
development methods, etc. However not many works exist targeted specifically at
software security tools. Mainly industrial surveys exist that are targeted towards
commercial software tools. Some of them are listed below.
In [2] a classification of the so-called DevSecOps software (DevSecOps
stands for Development Operations which includes secure development prac-
tices) categorizes tools into the following groups:
• Static Code Analysis Software.
• Container Security Software.
• Dynamic Application Security Testing (DAST) Software.
• Log Analysis Software.
• Penetration Testing Software.
• Static Application Security Testing Software.
• Vulnerability Scanner Software.
• Web Application Firewall Software.
In [4] a brief overview is provided which divides security tools into two main
categories – security scanning and runtime protection tools. These categories are
further classified as follows:
• Security scanning tools:
◦ Static Application Security Testing (SAST) – examines the code of
software, while it is not being executed as a whole.
◦ Dynamic Application Security Testing (DAST) – checks whether the
software system is vulnerable, by simulation of attacks towards it.
◦ Interactive Application Security Testing (IAST) – similar to SAST,
but makes the security scanning after build of the software.
◦ Software composition analysis (SCA) tools – checks software systems
for vulnerabilities in open source and third party components.
• Runtime Protection Tools (RPT):
◦ Web Application Firewalls (WAF).
283
◦ Bot Management.
◦ Runtime Security Self-Protection (RSSP).
A comprehensive guide to classical software security tools that are also open
source is provided in the book of Howlett [5].
Although not a classification, an interesting survey is presented in [6] that
aims to measure the adoption of security tools among software developers. This
work may be used in conjunction with ours to better study security from Software
development life-cycle point of view.
There also exist some works aimed at scrutinizing security tools from par-
ticular category, e.g. [1], [3], [10], [13].
3 Background
As stated in the introduction, here we are going to classify according to the
previously mentioned basic SDLC phases, various software tools, applications,
guidelines and standards for audit, examination and assessment of information
systems. This classification and analysis framework should help both cybersecurity
professionals and trainees, former in their everyday tasks and the latter – to
streamline better their learning path.
With respect to the classification, we are particularly interested to find out
how are software tools that deals with security related to software systems lifecy-
cle (SDLC). One of the fundamental models of SDLC is the waterfall model [9],
and its main phases are as follows:
1. Requirement’s definition – this is where the system context, goals and
objectives should be defined by all stakeholders
2. System and software design – according to the requirements, create a
plan for the development of the software system. This is done by defin-
ing the main system abstractions and relations among them. Usually, the
result of software design should be a detailed software architecture of
the software system.
3. Implementation and unit testing – this is when the code of the software
is being elaborated into some program units.
4. Integration and system testing – all program units that complete system
functionality should be integrated together into a working software sys-
tem, which should be tested upon satisfaction of the requirements from
phase 1.
5. Operation and maintenance – in a successful software system, this
should be the longest phase in SDLC. This is when the system is de-
ployed and delivered to its end users. Maintenance includes bug fixing,
improvement, and development of new system features.
284
These phases may be considered enough for the purpose of our classification,
as they appear in almost all SDLC models, even the agile methodologies. This
way, our approach is not constrained or focused on specific development method-
ology and may be taken into consideration in various environments and software
development efforts.
4 Methodology
In order to perform this survey, we have made a research on online portals
supplying articles and information to help security professionals. This research
was performed by search engines (Google and DuckDuckGo) with the following
keywords:
• Cyber/Software/Information security portal
• Cyber/Software/Information Security blog
• Software vulnerability tools
• Exploits
• Vulnerability checking
The majority of the above-listed keywords led to results about cyber-security
blogs and/or a plethora of commercial tools for strengthening security of both
individuals and enterprises. Relevant to our research information in blogs, also
leads to such tools. However, in this paper, from academicals point of view, we
are going to consider only open-source tools that have little or small number of
commercial alternatives.
Thus, this initial survey narrowed the results to only the information, resid-
ing into the following two leading security information portals that provide a
number of resources for information and cyber security:
• Open Web Application Security Project (OWASP) [11];
• National Institute of Standards and Technology (NIST) [12].
For this reason in the rest of the paper and the description of software secu-
rity tools that follow, we will consider mainly information taken from these two
sources.
As already discussed in Section 3 of the paper, existing classifications of
software security tools focus mainly on late phases of SDLC. Here we are go-
ing to extend them by inclusion of additional classification categories, for each
SDLC phase. Security tools are going to be classified with respect to their ap-
plication in these phases. Moreover, for the particular phases where already exist
classifications, we consider them here. This way, the following main categories
of software security tools, are considered:
• Tools applied during the requirements definition;
• Tools applied during design phase of software;
• Tools applied during implementation of software;
285
• Tools applied during testing (also called security-scanning tools [4]):
◦ Static Application Security Testing (SAST);
◦ Dynamic Application Security Testing (DAST);
◦ Interactive Application Security Testing (IAST);
◦ Software composition analysis (SCA) tools=
• Tools applied during maintenance and usage of the system:
◦ Malware scanners;
◦ Website security scanners;
◦ Runtime protection tools, e.g. firewalls, application lockers, etc.
• Tools used for learning about security – this category is considered hori-
zontal for the others, i.e. it is supposed that good education, higher levels
of security will be reached into all phases of SDLC.
Some of these classification categories are subject of even more granular
division of sub-categories, especially the ones that include many proprietary or
commercial tools.
286
CodePulse is a tool that supports testing of software by providing real time
visualization of code coverage during black box testing.
Attack Surface Detector – as its name suggests this tool is used to quantify
attack surface of web applications. This tool finds web applications’ endpoints,
their parameters and types, especially unused and unlinked endpoints that a po-
tential attacker could exploit. This tool is applicable during testing phase of soft-
ware development lifecycle.
Cornucopia is a card game, intended to help software engineers had better
define security requirements. It does not depend on particular software develop-
ment process. This way, this tool is applicable during requirements definition
phase in SDLC.
Enterprise Security API (ESAPI) is another program library that helps
software developers better to implement security both into new and existing ap-
plications. According to this ESAPI may be classified as a tool, applicable either
during implementation or maintenance phase of software systems.
HTML Sanitizer (also called Java HTML Sanitizer) is a tool written in Java
programming language that protects web applications against Cross-site scripting,
included into third party HTMLs that are integrated into this application.
FindSecBugs (OWASP Java Find Security Bugs) is a tool for code audits
of applications written in Java. It supports continuous integration as well as a
number of frameworks and libraries and has many built-in security bug patterns.
It is also possible to integrate it with popular Integrated Development Environ-
ments (IDEs) like Eclipse, InteliJ, Android Studio, etc.
Application Gateway is a reverse HTTP proxy that stands between the web
application and the client and facilitates developers by allowing them to focus on
coding the business logic and relieving them from the responsibility to implement
authorization and session management. By mediating the communication with
client, this tool also promotes architectural reasoning about the application and
this way it may be considered applicable during design phase of SDLC.
287
Offensive Web Testing Framework (OWTF) is a platform that aims to
increase efficiency or penetration testing. This is achieved via tools that help pen-
etration testers to improve their performance and to raise the level of test cover-
age. OWTF should be applicable in the testing phase of SDLC.
Zed Attack Proxy (ZAP) is another software tool, aimed at penetration test-
ing. It is however focused particularly on web applications. It is based mainly on
testing of Man-in-the-Middle vulnerabilities.
Dependability-check – is a Software Composition Analysis (SCA) tool that
check software dependencies against publicly available vulnerability records.
Dependency-track is a similar tool to Dependability-check, also classified
as SCA, however with bigger capabilities. It checks security issues that may arise
due to third party software components, either commercial or open source. It may
be useful also for developer and security QA engineers. It also has features that
raise notifications in case of system components that are not updated to their last
version, which makes it applicable during maintenance phase by system admin-
istrators.
Android Security Inspector is a toolset that is used to search security vul-
nerabilities of existing Android applications. It has a good graphical interface,
provides means for customization and is applicable for both DAST and SAST.
APICheck may be also considered as a DevOps tool as it provides environ-
ment for integration of tools for checking APIs. It also makes testing chain execu-
tions of such tools. It is designed as “a universal toolset for testing REST APIs,
allowing you to mix and match the tools it provides, while enabling interoper-
ability with third party tools”. As it is designed as a DevOps tool, it is considered
applicable also during development and deployment and maintenance phases of
SDLC.
Mobile Audit is a SAST tool, for android applications; however, it is also
augmented with malware detection, which makes it also suitable for the mainte-
nance phase of SDLC.
Nettacker is tool that enables to facilitate the work of penetration testers. It
automates collection of vulnerability information about a software system and
generates appropriate scan reports into a set of common file formats (like HTML,
JSON, CSV, etc.).
Purpleteam is a framework able to find security faults residing into a run-
ning web application and/or APIs. Upon finding a security issue it sends notifica-
tions about where and what it is. Purpleteam is a DAST tool and therefore lies
into the testing phase of SDLC.
secureCodeBox is platform for execution of toolchains of security testing
instruments. It is based on Kubernetes and this way is applicable as a SecDevOps
tool.
288
5.4 Tools utilized during usage of software systems
AntiSamy is an API that ensures that user uploaded HTML and CSS files
does not contain malicious issues. It ensures that users do not supply malicious
HTML when for example they make forum post, manage their profile, etc. This
way it provides security mechanisms for the software usage or maintenance phase
of SDLC.
Bug Logging Tool (BLT) facilitates maintenance by providing means for
issue tracking and management.
O-Saft (SSL advanced forensic tool) is an instrument aiming at testing of
SSL properties and connection with a website. As its page states, “it’s designed to
be used by penetration testers, security auditors or server administrators”.
289
Cyber Scavenger Hunt is a website that aims to educate penetration testers.
DevSlop is a set of tools that aims to educate people on the practices of Se-
cure DevOps (DevSecOps).
Honeypot is a repository aimed at identification of emerging attacks. Al-
though not specifically targeted at education on security but also on attack pre-
vention, there is no specific other category from our classification to put Honey-
pot in. It is actually a horizontal tool, applicable in all SDLC phases and for this
reason, it is best to put it in the education category.
Table 1. Open source software security tools, with respect to their application in SDLC.
Require- Design Implementation Testing Maintenance
ments and usage
Security CRSF Guard Amass AntiSamy
Pins
Pytm CodePulse Defectdojo BLT
Attack Surface OWTF O-Saft
Detector
Cornucopia ZAP
ESAPI Dependability-check
HTML Sanitizer Dependability-track
FindSecBugs Android Security Inspector
Application Gateway APICheck
Mobile Audit
Nettacker
Purpleteam
secureCodeBox
Education
Juice Shop, IoTGoat, Node.js Goat, Pygoat, Secure Coding Dojo, Security Shepherd,
Snakes and Ladders, Cyber Scavenger Hunt, DevSlop, Honeypot, SamuraiWTF, Sectudo
290
As seen from the Table 1, majority of the tools is targeted towards testing and
education on security, closely followed by security tools, applicable during devel-
opment. Relatively few tools are available during development phase of SDLC
and very little or no tools are targeted at security in early software development
phases. While it is not a big surprise, that most efforts were focused on ensuring
security by testing, it is somehow upsetting that so small amount of tools is avail-
able during early phases of SDLC, which are considered crucial for development
success and minimization of costs.
6 Conclusion
Software security is one of the most discussed topics by both academia and
industry in the area of software development. This is the reason why there is wide
variety of software tools aimed at provision of security at different levels. This
fact makes it difficult for software development professionals to streamline and
foster their efforts in ensuring security of developed applications.
In this paper, a classification of tools against main phases of software devel-
opment is made, together with short description of these tools. We have consid-
ered only open source, non-commercial tools, which is the reason that all of the
considered tools are available within the Open Web Application Security Project
(OWASP) framework.
Future work is needed in order to augment the taxonomy proposed here in
several directions, including, but not limited to:
• More tools should be included into the classification by study of alterna-
tive sources.
• Additional and possibly orthogonal classification categories – for exam-
ple how is educational category related to others, what is its importance,
etc. Are there other orthogonal categories of tools, applicable in all SDLC
phases.
7 Acknowledgements
This research is supported by the National Scientific Program “Information and
Communication Technologies for a Single Digital Market in Science, Education
and Security (ICTinSES)”, financed by the Ministry of Education and Science
and the Sofia University “St. Kliment Ohridski” Research Science Fund project
No. 80-10-74/25.03.2021 (“Data intensive software architectures”).
References
1. Kumar Ch. 12 Online Free Tools to Scan Website Security Vulnerabilities & Malware, 2021,
https://geekflare.com/online-scan-website-security-vulnerabilities, last accessed 24/04/2021.
291
2. Best DevSecOps Software. https://www.g2.com/categories/devsecops, last accessed
24/04/2021.
3. SourceForge, Software Composition Analysis (SCA) Tools. https://sourceforge.net/
software/software-composition-analysis-sca, last accessed 24/04/2021.
4. Peterson J. Application Security Testing: Security Scanning Vs. Runtime Protection, 2020,
https://resources.whitesourcesoftware.com/security/ast-application-security-testing, last ac-
cessed 24/04/2021.
5. Howlett, T. (2004). Open source security tools. Prentice Hall.
6. Witschey, J., Zielinska, O., Welk, A., Murphy-Hill, E., Mayhorn, C., & Zimmermann, T. (2015,
August). Quantifying developers’ adoption of security tools. In Proceedings of the 2015 10th
Joint Meeting on Foundations of Software Engineering (pp. 260-271).
7. NIST, Information Technology Laboratory, Computer Security Resource Center, Glossary, last
accessed 2021/04/16.
8. ISO, ISO/IEC 27001, Information Security Management, https://www.iso.org/isoiec-
27001-information-security.html, last accessed 2021/04/16.
9. Sommerville, I. (2016). Software Engineering. 10th edition. Pearson Education.
10. Rahman, A. A. U., & Williams, L. (2016, May). Software security in devops: synthesizing
practitioners’ perceptions and practices. In 2016 IEEE/ACM International Workshop on Con-
tinuous Software Evolution and Delivery (CSED) (pp. 70-76). IEEE.
11. OWASP, https://owasp.org, last accessed 24/04/2021.
12. NIST, Information Technology, Cybersecurity, https://www.nist.gov/cybersecurity, last ac-
cessed 24/04/2021.
13. Okun, V., Guthrie, W. F., Gaucher, R., & Black, P. E. (2007). Effect of static analysis tools on
software security: preliminary investigation. In Proceedings of the 2007 ACM workshop on
Quality of protection (pp. 1-5).
292