Chapter One - Security Testing: A Survey

https://doi.org/10.1016/bs.adcom.2015.11.003Get rights and content

Abstract

Identifying vulnerabilities and ensuring security functionality by security testing is a widely applied measure to evaluate and improve the security of software. Due to the openness of modern software-based systems, applying appropriate security testing techniques is of growing importance and essential to perform effective and efficient security testing. Therefore, an overview of actual security testing techniques is of high value both for researchers to evaluate and refine the techniques and for practitioners to apply and disseminate them. This chapter fulfills this need and provides an overview of recent security testing techniques. For this purpose, it first summarize the required background of testing and security engineering. Then, basics and recent developments of security testing techniques applied during the secure software development life cycle, ie, model-based security testing, code-based testing and static analysis, penetration testing and dynamic analysis, as well as security regression testing are discussed. Finally, the security testing techniques are illustrated by adopting them for an example three-tiered web-based business application.

Introduction

Modern IT systems based on concepts like cloud computing, location-based services, or social networking are permanently connected to other systems and handle sensitive data. These interconnected systems are subject to security attacks that may result in security incidents with high severity affecting the technical infrastructure or its environment. Exploited security vulnerabilities can cause drastic costs, eg, due to downtimes or the modification of data. A high proportion of all software security incidents is caused by attackers who exploit known vulnerabilities [1]. An important, effective, and widely applied measure to improve the security of software are security testing techniques which identify vulnerabilities and ensure security functionality.

Software testing is concerned with evaluation of software products and related artifacts to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects. Security testing verifies and validates software system requirements related to security properties like confidentiality, integrity, availability, authentication, authorization, and nonrepudiation. Sometimes security properties come as classical functional requirements, eg, “user accounts are disabled after three unsuccessful login attempts” which approximates one part of an authorization property and is aligned with the software quality standard ISO/IEC 9126 [2] defining security as functional quality characteristic. However, it seems desirable that security testing directly targets the above security properties, as opposed to taking the detour of functional tests of security mechanisms. This view is supported by the ISO/IEC 25010 [3] standard that revises ISO/IEC 9126 and introduces Security as a new quality characteristic which is not included in the characteristic functionality any more.

Web application security vulnerabilities such as Cross-Site Scripting or SQL Injection, which can adequately be addressed by security testing techniques, are acknowledged problems [4] with thousands of vulnerabilities reported each year [5]. Furthermore, surveys as published by the National Institute of Standards and Technology [6] show high cost of insecure software due to inadequate testing even on an economic level. Therefore, support for security testing, which is still often considered as a “black art,” is essential to increase its effectiveness and efficiency in practice. This chapter intends to contribute to the growing need for information on security testing techniques by providing an overview of actual security testing techniques. This is of high value both for researchers to evaluate and refine existing techniques and practitioners to apply and disseminate them. In this chapter, security testing techniques are classified (and also the discussion thereof) according to their test basis within the secure software development life cycle into four different types: (1) model-based security testing is grounded on requirements and design models created during the analysis and design phase, (2) code-based testing and static analysis on source and byte code created during development, (3) penetration testing and dynamic analysis on running systems, either in a test or production environment, as well as (4) security regression testing performed during maintenance.

This chapter provides a comprehensive survey on security testing and is structured as follows. Section 2 provides an overview of the underlying concepts on software testing. Section 3 discusses the basic concepts of security engineering and the secure software development life cycle. Section 4 provides an overview of security testing and its integration in the secure software development life cycle. Section 5 discusses the security testing techniques model-based security testing, code-based testing and static analysis, penetration testing, and dynamic analysis as well as security regression testing in detail. Section 6 discusses the application of security testing techniques to three tiered business applications. Finally, Section 7 summarizes this chapter.

Section snippets

Software Testing

According to the classic definition in software engineering [7], software testing consists of the dynamic verification that a program provides expected behaviors on a finite set of test cases, a so called test suite, suitably selected from the usually infinite execution domain. This dynamic notion of testing, so called dynamic testing, evaluates software by observing its execution [8]. The executed system is called system under test (SUT). More general notions of testing [9] consist of all life

Security Engineering

In this section, we cover basic concepts of security engineering as well as an overview of the secure software development life cycle.

Security Testing

In this section, we cover basic concepts of security testing and the integration of security testing in the secure software development life cycle.

Security Testing Techniques

This section discusses the security testing techniques model-based testing, code-based testing and static analysis, penetration testing and dynamic analysis as well as regression testing in detail. For each testing technique, basic concepts as well as current approaches are covered.

Application of Security Testing Techniques

In this section, we make a concrete proposal on how to apply the security test techniques (and the tools implementing them) to a small case study: a business application using a three tiered architecture. We focus on security testing techniques that detect the most common vulnerability types that were disclosed in the Common Vulnerabilities and Exposures (CVE) index [5] over the period of the last 15 years (see Fig. 6). This clearly shows that the vast majority of vulnerabilities, such as XSS,

Summary

In this chapter, we provided an overview of recent security testing techniques and their practical application in context of a three-tiered business application. For this purpose, we first summarized the required background on software testing and security engineering. Testing consists of static and dynamic life cycle activities concerned with evaluation of software products and related artifacts. It can be performed on the component, integration, and system level. With regard to accessibility

Acknowledgments

The work was supported in part by the research projects QE LaB—Living Models for Open Systems (FFG 822740) and MOBSTECO (FWF P 26194-N15).

Michael Felderer is a senior researcher and project manager within the Quality Engineering research group at the Institute of Computer Science at the University of Innsbruck, Austria. He holds a Ph.D. and a habilitation in computer science. His research interests include software and security testing, empirical software and security engineering, model engineering, risk management, software processes, and industry-academia collaboration. Michael Felderer has coauthored more than 70 journal,

References (145)

  • P. Ammann et al.

    Introduction to Software Testing

    (2008)
  • ISTQB

    Standard glossary of terms used in software testing

    (2012)
  • OWASP Foundation, OWASP Testing Guide v4, https://www.owasp.org/index.php/OWASP_Testing_Project (accessed March 11,...
  • G. Tian-yang et al.

    Research on software security testing

    World Acad. Sci. Eng. Technol.

    (2010)
  • R. Bachmann et al.

    Developing secure software: a holistic approach to security testing

    Datenschutz und Datensicherheit (DuD)

    (2014)
  • Information technology—open systems interconnection—conformance testing methodology and framework

    (1994)
  • M. Utting et al.

    Practical Model-Based Testing: A Tools Approach

    (2007)
  • J. Zander et al.

    Model-Based Testing for Embedded Systems

    (2012)
  • IEEE

    IEEE standard glossary of software engineering terminology

    (1990)
  • ISO/IEC/IEEE 29119 software testing

    (2013)
  • IEEE standard for software and system test documentation

    (2008)
  • I. Schieferdecker

    Model-based testing

    IEEE Softw.

    (2012)
  • Committee on National Security Systems

    National Information Assurance Glossary

    Tech. Rep.

    (2010)
  • B. Arkin et al.

    Software penetration testing

    IEEE Secur. Priv.

    (2005)
  • B. Potter et al.

    Software security testing

    IEEE Secur. Priv.

    (2004)
  • P. Herzog

    The open source security testing methodology manual 3

    (2010)
  • M.S. Lund et al.

    Model-Driven Risk Analysis

    (2011)
  • D. Verdon et al.

    Risk analysis in software design

    IEEE Secur. Priv.

    (2004)
  • M. Howard et al.

    The Security Development Lifecycle: SDL: A Process for Developing Demonstrably More Secure Software

    (2006)
  • OWASP, OpepSAMM, http://www.opensamm.org/ (accessed March 30,...
  • B. Potter et al.

    Software security testing

    IEEE Secur. Priv.

    (2004)
  • H. Shahriar et al.

    Automatic testing of program security vulnerabilities

  • H.H. Thompson

    Why security testing is hard

    IEEE Secur. Priv.

    (2003)
  • OWASP Foundation, OWASP Code Review Guide v1.1, https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project...
  • M. Utting et al.

    A taxonomy of model-based testing approaches

    Softw. Test. Verif. Reliab.

    (2012)
  • W. Grieskamp et al.

    Model-based quality assurance of protocol documentation: tools and methodology

    Softw. Test. Verif. Reliab.

    (2011)
  • A. Pretschner

    Defect-based testing

  • H. Zhu et al.

    Software unit test coverage and adequacy

    ACM Comput. Surv.

    (1997)
  • L.J. Morell

    A theory of fault-based testing

    IEEE Trans. Softw. Eng.

    (1990)
  • A. Pretschner et al.

    A generic fault model for quality assurance

  • M. Felderer et al.

    A classification for model-based security testing

  • I. Schieferdecker et al.

    Model-based security testing

  • M. Büchler et al.

    Semi-automatic security testing of web applications from a secure model

  • T. Mouelhi et al.

    A model-based framework for security policy specification, deployment and testing

  • P. Gerrard et al.

    Risk-Based e-Business Testing

    (2002)
  • M. Felderer et al.

    A taxonomy of risk-based testing

    Int. J. Softw. Tools Technol. Transf.

    (2014)
  • M.-F. Wendland et al.

    A systematic approach to risk-based testing using risk-annotated requirements models

  • J. Grossmann et al.

    Combining risk analysis and security testing

  • J. Botella et al.

    Risk-based vulnerability testing using security test patterns

  • Cited by (137)

    • A Method for Threat Modelling of Industrial Control Systems

      2024, Springer Proceedings in Complexity
    View all citing articles on Scopus

    Michael Felderer is a senior researcher and project manager within the Quality Engineering research group at the Institute of Computer Science at the University of Innsbruck, Austria. He holds a Ph.D. and a habilitation in computer science. His research interests include software and security testing, empirical software and security engineering, model engineering, risk management, software processes, and industry-academia collaboration. Michael Felderer has coauthored more than 70 journal, conference, and workshop papers. He works in close cooperation with industry and also transfers his research results into practice as a consultant and speaker on industrial conferences.

    Matthias Büchler is a Ph.D. student at the Technische Universität München. He holds a master's degree in computer science (Information Security) from the Swiss Federal Institute of Technology Zurich (ETHZ). His research interests include information security, security modeling, security engineering, security testing, domain specific languages, and usage control.

    Martin Johns is a research expert in the Product Security Research unit within SAP SE, where he leads the Web application security team. Furthermore, he serves on the board of the German OWASP chapter. Before joining SAP, Martin studied Mathematics and Computer Science at the Universities of Hamburg, Santa Cruz (CA), and Passau. During the 1990s and the early years of the new millennium he earned his living as a software engineer in German companies (including Infoseek Germany, and TC Trustcenter). He holds a Diploma in Computer Science from University of Hamburg and a Doctorate from the University of Passau.

    Achim D. Brucker is a research expert (architect), security testing strategist, and project lead in the Security Enablement Team of SAP SE. He received his master's degree in computer science from University Freiburg, Germany and his Ph.D. from ETH Zurich, Switzerland. He is responsible for the Security Testing Strategy at SAP. His research interests include information security, software engineering, security engineering, and formal methods. In particular, he is interested in tools and methods for modeling, building, and validating secure and reliable systems. He also participates in the OCL standardization process of the OMG.

    Ruth Breu is head of the Institute of Computer Science at the University of Innsbruck, leading the research group Quality Engineering and the competence center QE LaB. She has longstanding experience in the areas of security engineering, requirements engineering, enterprise architecture management and model engineering, both with academic and industrial background. Ruth is coauthor of three monographs and more than 150 scientific publications and serves the scientific community in a variety of functions (eg Board Member of FWF, the Austrian Science Fund, Member of the NIS Platform of the European Commission).

    Alexander Pretschner holds the chair of Software Engineering at Technische Universität München. Research interests include software quality, testing, and information security. Master's degrees in computer science from RWTH Aachen and the University of Kansas and Ph.D. degree from Technische Universität München. Prior appointments include a full professorship at Karlsruhe Institute of Technology, an adjunct associate professorship at Kaiserslautern University of Technology, a group manager's position at the Fraunhofer Institute of Experimental Software Engineering in Kaiserslautern, a senior scientist's position at ETH Zurich, and visiting professorships at the Universities of Rennes, Trento, and Innsbruck.

    View full text