=Paper=
{{Paper
|id=Vol-2933/paper28
|storemode=property
|title=Classification of Software Security Tools
|pdfUrl=https://ceur-ws.org/Vol-2933/paper28.pdf
|volume=Vol-2933
|authors=Aleksandar Dimov,Vladimir Dimitrov
}}
==Classification of Software Security Tools==
Classification of Software Security Tools Aleksandar Dimov and Vladimir Dimitrov [0000-0002-7441-253X] Sofia University „St. Kliment Ohridski”, Faculty of Mathematics and Informatics 1164 Sofia, 5 James Bourchier Blvd., Bulgaria {aldi, cht}@fmi.uni-sofia.bg Abstract. Software security is considered one of the most important quality characteristics in the modern digital society. Indeed, protection of data and software availability in cloud-oriented environment is needed in order to achieve user trust and reliably to meet their requirements. In order to better support software developers in provision of security enabled code, more studies of application of available tools that would help them is needed. In this paper, we are going to further define the sublayers of software security provision with respect to application into Software development life cycle and analyze and classify software tools with respect to their applicability to those layers. This will help professionals to better setup their security environment with respect to the particular security requirements that they have. Keywords: Software Security, Software Development Process, 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. 5 Software security tools overview In this section, we briefly present the software security tools, as identified relevant information sources, as described into previous section. All tools have references into the OWASP projects web page, so we are not going to provide links about each of them here. Subsections here correspond to the classification shown above and tools are described accordingly. Summarization is provided at the end of the section. 5.1 Security tools applicable in Design phase Security Pins is a platform that enables visualization of current investment in security features. This way it is applicable during design of software systems as it helps security professionals identify possible gaps, where security has not been taken into account and focus additional efforts there. Pytm is framework that may be used to define the design of a system via predefined elements. Then, based on this, it may generate specific UML dia- grams (Data Flow, Sequence) and this way show potential treats to the system. This tool uses a Python syntax, which makes it applicable also during develop- ment phase. 5.2 Tools applied during Development phase of SDLC CRSF Guard and CSRFProtector are programming libraries, which help developers to defend their software systems against Cross-Site Request Forgery (CSRF) attacks. 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. 5.3 Security testing tools Amass is aimed at securing the existing and legacy infrastructure of an enterprise software system. It is able to identify potentially prone to attack organizational assets and this way helps mainly software security professionals, working into the maintenance and usage phases of SDLC. Defectdojo is a tool aimed at vulnerability management and is applicable in different SDLC phases. It offers functionality that has a large amount of commer- cial and open-source representatives, which are outside the scope of our classifi- cation. However, by this reason, they are going to will be included as categories rather than specific software tools and applications. 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”. 5.5 Tools for education on security Juice Shop is a vulnerable web application, full of different exploits. This way it is well suited for education of information and cyber security professionals. This way, this tool may be classified as applicable at all phases of SDLC, however its main benefit is in early phases, where project costs may be minimized if appropriate requirements are set and the corresponding design decisions lead architecture of the system that provides the necessary security level. IoTGoat is an insecure firmware based on the embedded operating system OpenWrt and aims to facilitate learning of software developers for IoT applica- tion to find and avoid most common vulnerabilities of IoT devices. Another similar project is Node.js Goat, which enables education on how to develop web applications that avoid the Top10 security risks, enlisted by OWASP. Pygoat is a platform that have two purposes – (1) to educate software devel- opers on how to write secure code and (2) to educate software testers on how to properly test for security issues. Secure Coding Dojo is a security educational platform aimed at training software developers to find and avoid security bugs in software code. It offers lessons based on challenges in the form of attack/defense pairs. This tool is ap- plicable in development phase of SDLC. Security Shepherd is tool, which is aimed solely at education in the domain of information and cyber security. It is aimed at improving skills for penetration testing of software. It is based on Top 10 list of security threats; explains the main concept; and offers relevant security case studies. This tool is applicable at design and testing phase of SDLC. This classification considers the positive effect of education, when applied at early SDLC phases. Snakes and Ladders is an educational game that promotes security chal- lenges and risks and means to tackle them. It is also specifically targeted towards OWASP as it promotes also other project of this organization. 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 SamuraiWTF is a virtual machine, able to run on VMWare VirtualBox, which is configured to execute as a web penetration-testing engine. However, ac- cording to its creators, its main goal is to serve as a platform for training. For this purpose, it encapsulates a set of vulnerable applications and the tools necessary to learn how to assess various security risks associated with them. Sectudo is a tool that should help to learn the most common security defects that are typical for mobile applications and their Server-side APIs. It includes a security-learning guide and two versions of the same web application – the one equipped with vulnerabilities and the other one – safe. 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