Assisting in Secure Application Development and Testing Loukmen Regainia
Total Page:16
File Type:pdf, Size:1020Kb
Assisting in secure application development and testing Loukmen Regainia To cite this version: Loukmen Regainia. Assisting in secure application development and testing. Cryptography and Se- curity [cs.CR]. Université Clermont Auvergne, 2018. English. NNT : 2018CLFAC018. tel-01959245 HAL Id: tel-01959245 https://tel.archives-ouvertes.fr/tel-01959245 Submitted on 18 Dec 2018 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. UNIVERSITE CLERMONT AUVERGNE ECOLE DOCTORALE SCIENCES POUR L’INGENIEUR DE CLERMONT-FERRAND T h è s e Présentée par Loukmen REGAINIA pour obtenir le grade de D O C T E U R D’ U N I V E R S I T É SPECIALITE : INFORMATIQUE Assistance au développement et au test d’applications sécurisées Assisting in secure application development and testing Soutenue publiquement le 12/06/2018 devant le jury : Pr. Ana Rosa CAVALLI Rapporteur et examinateur Pr. Jean-Michel BRUEL Rapporteur et examinateur Pr. Michel MISSON Examinateur Dr. Barbara KORDY Examinateur Dr. Cédric BOUHOURS Encadreur Pr. Sébastien SALVA Directeur de thèse Tous les mots du monde ne sauraient exprimer l’immense amour que je vous porte, ni la profonde gratitude que je vous témoigne pour tous les efforts et les sacrifices que vous n’avez jamais cessé de consentir pour mon instruction et mon bien-être. En ce jour mémorable, pour moi ainsi que pour vous, recevez ce travail en signe de ma vive reconnaissance et mon profond estime. à mes chères parents, à ma tendre épouse, à ma petite Jana et à mes deux frères . Acknowledgements Research supported by the industrial chair on Digital Confidence Recherche prise en charge par la chaire industrielle de confiance numérique http://confiance-numerique.clermontuniversite.fr Remerciements Je voudrais tout d’abord remercier grandement mon directeur de thèse, Sébastien SALVA, pour toute son aide. Je suis ravi d’avoir travaillé en sa compagnie car outre son appui scien- tifique, il a toujours été là pour me soutenir et me conseiller au cours des années dethèse. Je tiens à remercier mon encadrant Cédric BOUHOURS, pour sa proximité, sa disponibilité permanente et pour les nombreux encouragements qu’il m’a prodiguée. Il a été pour moi un mentor dans le monde de l’enseignement et la recherche scientifique. J’adresse tous mes remerciements à Madame Ana Rosa CAVALLI, Professeur à l’institut Mines-Telecom/TELECOM SudParis, ainsi qu’à Monsieur Jean-Michel BRUEL, Professeur à l’Institut de Recherche en Informatique de Toulouse, de l’honneur qu’ils m’ont fait en acceptant d’être rapporteurs de cette thèse. J’exprime ma gratitude à Madame Barbara Kordy, Maître de conférences à l’institut National des Sciences Appliquées de Rennes et à Monsieur Michel MISSON Professeurs à l’Université Clermont-Auvergne, qui ont bien voulu être examinateurs. Il m’est impossible d’oublier toute l’équipe du département informatique: Pascale, François, Chafik, Carine, Laurent, Guenal, Abdel, Nathalie, Isabelle, pour leur accueil et toutes leschoses qu’ils m’ont appris au long de mes premières années d’expérience en enseignement. Je remercie toutes les personnes avec qui j’ai partagé ces années de thèse: Xavier, Hamadoun, Thomas, Pape, David, William, Illiot, Anne, Samir, vi Abstract Assisting in the development and testing of secure applications by Loukmen REGAINIA Ensuring the security of an application through its life cycle is a tedious task. The choice, the implementation and the evaluation of security solutions is difficult and error prone. Security skills are not common in development teams. To overcome the lack of security skills, developers and designers are provided with a plethora of documents about security problems and solutions (i.e, vulnerabilities, attacks, security principles, security patterns, etc.). Abstract and informal, these documents are provided by different sources, and their number is constantly growing. Developers are drown in a sea of documentation, which inhibits their capacity to design, implement, and the evaluate the overall application security. This thesis tackles these issues and presents a set of approaches to help designers in the choice, the implementation and the evaluation of security solutions required to overcome security problems. The problems are materialized by weaknesses, vulnerabilities, attacks, etc. and security solutions are given by security patterns. This thesis first introduces a method to guide designers implement security patterns and assess their effectiveness against vulnerabilities. Then, we present three methods associating security patterns, attacks, weaknesses, etc. in a knowledge base. This allows automated extraction of classifications and help designers quickly and accurately select security patterns required to cure a weakness or to overcome an attack. Based on this knowledge base, we detail a method to help designers in threat modeling and security test generation and execution. The method is evaluated and results show that the method enhances the comprehensibility and the accuracy of developers in the security solutions choice, threat modeling and in the writing of security test cases. Keywords. Security patterns, weaknesses, attacks, principles, life cycle, model checking, security testing. vii Résumé Assistance au développement et au test d’applications sécurisées par Loukmen REGAINIA Garantir la sécurité d’une application tout au long de son cycle de vie est une tâche fastidieuse. Le choix, l’implémentation et l’évaluation des solutions de sécurité est difficile et sujette a des erreurs. De plus, les compétences en sécurité ne sont pas répandues dans toutes les équipes de développement. Pour pallier à ces difficultés, les développeurs ont à leurs dispositions une multitude de documents décrivant des problèmes de sécurité et des solutions requises (vulnérabilités, attaques, principes de sécurité, patrons sécurité, etc.). Ces documents, proposés par des sources hétérogènes, sont souvent abstraits et informels. De plus, leur nombre est en constante croissance. Les développeurs sont noyés dans une multitude de documents ce qui fait obstruction a leur capacité à choisir, implémenter et évaluer la sécurité d’une application. Cette thèse aborde ces problématiques et propose un ensemble de méthodes pour aider les développeurs à choisir, implémenter et évaluer les solutions de sécurité face à des problèmes de sécurité. Ces derniers sont matérialisés par des vulnérabilités, des attaques, etc., et les solutions fournies par des patrons de sécurité. Cette thèse introduit en premier une méthode pour aider les développeurs dans l’instantiation de patrons de sécurité dans un modèle et l’estimation de leurs efficacités face aux vulnérabilités. Puis, elle présente trois méthodes associant patrons de sécurité, vulnérabilités et attaques au sein d’une base de connaissance. Cette dernière permet une extraction automatique de classifications de patrons et améliore la rapidité et la précision des développeurs dans le choix des patrons de sécurité. En utilisant la base de connaissance, nous présentons une méthode pour aider les développeurs dans la modélisation de menaces ainsi que la générations et l’exécution de cas de test de sécurité. L’évaluation de la méthode montre qu’elle améliore l’efficacité, la viii compréhensibilité et la précision des développeurs dans le choix des patrons de sécurité et l’écriture des cas de test de sécurité. Mots-clés. Patrons de sécurité, failles, attaques, principes de sécurité, cycle de vie, vérifica- tion des modèles, test de sécurité. ix Table of contents List of figures xv List of tables xix 1 Introduction1 1.1 General Context . .1 1.2 Open issues . .2 1.3 Contributions . .4 1.4 Overview of the thesis . .5 2 State of the art7 2.1 Introduction . .7 2.2 Security concepts and databases . .8 2.2.1 Weaknesses . .9 2.2.2 Vulnerabilities . .9 2.2.3 Threats . 10 2.2.4 Attacks . 11 2.2.5 Security principles . 11 2.2.6 Security by design . 13 2.3 Patterns . 13 2.3.1 Design patterns . 14 Table of contents 2.3.2 Patterns selection . 16 2.3.3 Patterns instantiation . 18 2.4 Security patterns and Security patterns classifications . 18 2.4.1 Security patterns . 20 2.4.2 Security pattern instantiation . 25 2.4.3 Inter-patterns relationships . 28 2.4.4 Security patterns classifications . 32 2.4.5 Classification schemes . 33 2.4.6 Classification quality criteria . 35 2.5 Security modeling . 37 2.5.1 Vulnerability Cause Graphs (VCG) . 37 2.5.2 Security Activity Graphs (SAG) . 40 2.5.3 Attack Defense Trees ADTree . 42 2.6 Chapter conclusions . 45 3 Assisting Designers in Security Pattern Integration 47 3.1 Introduction . 47 3.2 Context and Motivations . 48 3.3 Prerequisites . 50 3.4 Assisting designers in the security pattern instantiation . 52 3.5 Case study . 59 3.6 Discussion . 69 3.7 Chapter Conclusions . 72 4 Security analysis with patterns and pattern classifications 75 4.1 Introduction . 75 4.2 Context and motivations . 76 xii Table of contents 4.3 Data-stores architectures . 78 4.3.1 Data sources . 78 4.3.2 Data-stores Meta-models . 79 4.4 Data integration . 82 4.4.1 Integrating security patterns and security principles . 84 4.4.2 Integrating security patterns and weaknesses . 87 4.4.3 Attacks and security patterns integration (v1)............. 90 4.4.4 Attacks and security patterns integration (v2)............. 92 4.5 Classification extraction and SAG/ADTree generation . 96 4.5.1 Weakness Security Patterns Classification (WSPC) . 96 4.5.2 Security Activity Graph (SAGs) generation . 98 4.5.3 Attacks and Security Patterns Classification (v1)..........