This book provides an overview of software security analysis in a DevOps cycle including requirements formalisation, verification and continuous monitoring. It presents an overview of the latest techniques and tools that help engineers and developers verify the security requirements of large-scale industrial systems and explains novel methods that enable a faster feedback loop for verifying security-related activities, which rely on techniques such as automated testing, model checking, static analysis, runtime monitoring, and formal methods. The book consists of three parts, each covering a different aspect of security engineering in the DevOps context. The first part, "Security Requirements", explains how to specify and analyse security issues in a formal way. The second part, "Prevention at Development Time", offers a practical and industrial perspective on how to design, develop and verify secure applications. The third part, "Protection at Operations", eventually introduces tools for continuous monitoring of security events and incidents. Overall, it covers several advanced topics related to security verification, such as optimizing security verification activities, automatically creating verifiable specifications from security requirements and vulnerabilities, and using these security specifications to verify security properties against design specifications and generate artifacts such as tests or monitors that can be used later in the DevOps process. The book aims at computer engineers in general and does not require specific knowledge. In particular, it is intended for software architects, developers, testers, security professionals, and tool providers, who want to define, build, test, and verify secure applications, Web services, and industrial systems. Part Security Requirements Engineering 1 Taxonomy of Vulnerabilities, Attacks, and Security Solutions in Industrial PLCs Eduard Paul Enoiu, Kejsi Biçoku, Cristina Seceleanu, and Michael Felderer 2 Natural Language Processing with Machine Learning for Security Requirements Practical Approaches Andrey Sadovykh, Kirill Yakovlev, Alexandr Naumchev, and Vladimir Ivanov 3 Security Requirements Formalization with RQCODE Andrey Sadovykh, Nan Messe, Ildar Nigmatullin, Sophie Ebersold, Maria Naumcheva, and Jean-Michel Bruel Part Prevention at Development Time 4 Vulnerability Detection and Current Status and New Approaches Ángel Longueira-Romero, Rosa Iglesias, Jose Luis Flores, and Iñaki Garitano 5 Metamorphic Testing for Verification and Fault Localization in Industrial Control Systems Gaadha Sudheerbabu, Tanwir Ahmad, Dragos Truscan, and Jüri Vain 6 Interactive Application Security Testing with Hybrid Fuzzing and Statistical Estimators Ramon Barakat, Jasper von Blanckenburg, Roman Kraus, Fabian Jezuita, Steffen Lüdtke, and Martin A. Schneider Part Protection at Operations 7 A Tool for Continuous Threat Analysis and Management
Laurens Sion, Dimitri Van Landuyt, Koen Yskout, Stef Verreydt, and Wouter Joosen 8 A Tool for Real-Time Security Attack Detection Tanwir Ahmad, Dragos Truscan, and Jüri Vain 9 A Stream-Based Approach to Intrusion Detection Sylvain Hallé 10 Toward Anomaly Detection Using Explainable AI Manh-Dung Nguyen, Vinh-Hoa La, Wissam Mallouli, Ana Rosa Cavalli, and Edgardo Montes de Oca