ebook img

De la nécessité d'une vision holistique du code pour l'analyse statique et la correction automatique PDF

185 Pages·2017·3.11 MB·French
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview De la nécessité d'une vision holistique du code pour l'analyse statique et la correction automatique

No d’ordre : 4400 ANNÉE 2011 THÈSE / UNIVERSITÉ DE RENNES 1 sous le sceau de l’Université Européenne de Bretagne pour le grade de DOCTEUR DE L’UNIVERSITÉ DE RENNES 1 Mention : Informatique École doctorale Matisse présentée par Christophe L EVOINTURIER préparée à l’unité de recherche IRISA – UMR6074 Institut de Recherche en Informatique et Système AléatoiresIFSIC De la nécessité Thèse soutenue à L’IRISA, INRIARennes le 8 décembre 2011 d’une vision holis- devantlejurycomposéde: Antoine BEUGNARD ProfesseurHDRàTelecomBretagne/Président tique du code pour Jean BEZIVIN ProfesseurHDRàl’universitédeNantes/Rapporteur Isabelle COMYN-WATTIAU l’analyse statique Professeur HDR au Conservatoire National des Arts et Métiers(CNAM)/Rapporteur et la correction au- Frédéric CUPPENS Professeur HDR à l’École nationale supérieure des télécommunications-Bretagne(ENST)/Examinateur tomatique des Ap- François BODIN Directeurdel’IRISA,INRIARennes/Directeurdethèse Frank ROUSEE plications Web. Directeur de Projets, Orange B.S. Rennes / Co-directeurdethèse (cid:192) mes parents, partis trop t(cid:244)t pour me lire. Si vous trouvez que l’Øducation coßte cher, essayez l’ignorance. AbrahamLincoln Remerciements JeremercieM.AntoineBeugnardquimefaitl’honneurdeprésidercejury. JeremercieMme.IsabelleComyn-WattiauainsiqueM.JeanBezivind’avoirbienvoulu accepterlachargederapporteur. Je remercie M. Frédéric Cuppens et M. Antoine Beugnard d’avoir bien voulu juger ce travail. JeremercieenfinM.FrançoisBodinetM.FrankRousØequiontdirigéetconsciencieuse- mentrelumathèse. Table des matières 1 Introduction 7 1.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Objectifsdelathèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Organisationdudocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 I Contexte 13 2 QualitØ logicielle 15 2.1 Unproblèmemajeurinternational . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2 Sourcesdesproblèmesàcorrigerdansunprogrammeinformatique . . . . . . . 18 2.2.1 Permissivitédelasyntaxe . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.2 Mauvaisespratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.3 Mauvaisdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.4 Evolutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Règlesetmétriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4 Lasécurité:uncritèrequalitatif . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.1 MITRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.2 OWASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.3 JAVASEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3 Le langage Java et ses utilisations 27 3.1 PrésentationdulangageJava . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.1.2 Lesmécanismesdesécuritédulangage . . . . . . . . . . . . . . . . . 28 3.1.2.1 CritèresdesécuritédanslecadredesapplicationsWeb. . . . 28 3.1.2.2 Propriétésetélémentssupportésparlelangage . . . . . . . . 29 3.1.3 CaractéristiquesdesméthodesJava . . . . . . . . . . . . . . . . . . . 33 3.1.3.1 Signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.1.3.2 Périmètred’influence . . . . . . . . . . . . . . . . . . . . . 33 3.1.4 Propriétésobstaclesauxanalyses . . . . . . . . . . . . . . . . . . . . 34 3.1.4.1 RéflexivitéetComportementsdynamiques . . . . . . . . . . 34 3.1.4.2 Codenatif . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1 2 Tabledesmatières 3.1.5 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2 DescriptiondesapplicationsJava . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.1 Côtéclientetserveur . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.1.1 Pointd’entréed’uneapplication . . . . . . . . . . . . . . . . 36 3.2.1.2 Lesbibliothèques . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.1.3 LesBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.2 Côtéclient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2.2.1 LesApplets . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2.2.2 LesMidlets . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2.3 Côtéserveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.3.1 LesServlets . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.3.2 LesServerSideIncludes(SSI) . . . . . . . . . . . . . . . . 40 3.2.3.3 LesEnterpriseJavaBeans(EJB) . . . . . . . . . . . . . . . 40 3.2.3.4 LesJavaServerPages(JSP) . . . . . . . . . . . . . . . . . . 40 3.2.3.5 LesPortlets(JSR168) . . . . . . . . . . . . . . . . . . . . . 40 3.2.3.6 LesAglets . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.2.4 Langages,frameworksetAPIdesapplicationsWeb . . . . . . . . . . 41 3.2.4.1 Applicationssécurisées . . . . . . . . . . . . . . . . . . . . 42 3.2.4.2 APIsdecommunication . . . . . . . . . . . . . . . . . . . . 42 3.2.5 Contenuetpackagingdesapplications . . . . . . . . . . . . . . . . . . 42 3.2.5.1 JAR/JAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2.5.2 WAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2.5.3 EAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2.5.4 JNLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2.5.5 CAB,ZIP . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2.6 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4 Techniques d’analyse et outils pour le langage Java 47 4.1 Techniquesd’analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.1.1 Analysestatiqueversusdynamique . . . . . . . . . . . . . . . . . . . 47 4.1.2 LeModel checking . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.1.3 L’interprétationabstraite . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.1.4 LeProgram Slicing . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.1.5 Teintedevariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.1.6 Larecherchedemotifsdecode(pattern matching) . . . . . . . . . . 51 4.1.6.1 Naturedesmotifsdecode . . . . . . . . . . . . . . . . . . . 52 4.1.6.2 Exemple: . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.7 Fauxnégatifsetfauxpositifs:undoublecompromis . . . . . . . . . . 54 4.1.7.1 Biais-variance . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.1.7.2 Incertitudes . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.1.7.3 Limitesliéesàlafacultédegénéricité . . . . . . . . . . . . 55 4.1.8 Barrièresdulangage . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.1.9 Synthèseetconclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.2 Outilsd’analyse(audit)decodeJava . . . . . . . . . . . . . . . . . . . . . . . 59 Tabledesmatières 3 4.3 Lerefactoringdecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.3.1 Butdurefactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.3.2 Impactdurefactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.3.3 Miseenoeuvredurefactoring . . . . . . . . . . . . . . . . . . . . . . 65 4.3.4 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.4 OutilsderefactoringdecodeJava . . . . . . . . . . . . . . . . . . . . . . . . 66 4.5 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5 SØcuritØ applicative 71 5.1 Gestiondelasécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1.1 Lesfonctionsdesécurité . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1.2 Contrôled’accèsbasésurl’organisation(OrBAC). . . . . . . . . . . . 72 5.1.3 Freinsdansladétectionstatiquedefailles . . . . . . . . . . . . . . . . 72 5.1.3.1 Informationsdiscriminantes . . . . . . . . . . . . . . . . . . 72 5.1.3.2 Périmètreetspécificitésdulangageanalysé: . . . . . . . . . 73 5.2 Lesattaquesparinjections(sql,xss,xsrf,pathtraversal,...) . . . . . . . . . . 73 5.2.1 Uneinjection,qu’est-cequec’est? . . . . . . . . . . . . . . . . . . . 74 5.2.2 Ciblesd’injections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2.3 Potentield’uneattaque . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.2.4 Techniquededéfense . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.3 Aperçud’autresfaillesdesécurité . . . . . . . . . . . . . . . . . . . . . . . . 77 5.3.1 Cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.3.2 Dénideservice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.3.3 Problèmesdeconcurrence . . . . . . . . . . . . . . . . . . . . . . . . 78 5.4 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 II Une approche holistique pour l’analyse statique et la correction automatique des applications Web 81 1 RØalisation d’un prototype 83 1.1 Synthèsedel’Etatdel’art: Exigences pour un outil d’analyse statique et de transformation d’application WebJava. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 1.1.1 Codecible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 1.1.2 Tailleetmanipulationducode . . . . . . . . . . . . . . . . . . . . . . 84 1.1.3 Ergonomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 1.1.4 Typedemotifdecode . . . . . . . . . . . . . . . . . . . . . . . . . . 84 1.1.5 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 1.2 Réalisationdel’outil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 1.2.1 Parsing/UnparsingdecontenusnonJava . . . . . . . . . . . . . . . 86 1.2.2 Lecœurdusystème . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4 Tabledesmatières 1.2.3 Uneapplicationparallèle . . . . . . . . . . . . . . . . . . . . . . . . . 90 1.2.4 Ergonomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 1.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 2 RØsultats 93 2.1 Fonctionnalitésclassiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 2.1.1 Checkstyle-PMD-finbugs . . . . . . . . . . . . . . . . . . . . . . . . . 93 2.1.2 Renommage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 2.2 Correctionautomatiqueetparallèlisation . . . . . . . . . . . . . . . . . . . . . 94 2.3 Analysedecontenunon-Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 2.3.1 Travauxcontigus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 2.3.2 Vérificationducontenudesfichiers . . . . . . . . . . . . . . . . . . . 95 2.3.2.1 Fichiersdecodescompilables,interprétésoucompilés . . . . 95 2.3.2.2 Fichiersdedonnéesformatées. . . . . . . . . . . . . . . . . 98 2.3.2.3 Fichiersdedonnéesbrutes. . . . . . . . . . . . . . . . . . . 98 2.3.3 Cohérenceinter-fichiers . . . . . . . . . . . . . . . . . . . . . . . . . 99 2.3.4 Neutralitédesdonnées . . . . . . . . . . . . . . . . . . . . . . . . . . 100 2.3.5 Suppressiondefailledesécurité . . . . . . . . . . . . . . . . . . . . . 101 2.4 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 3 Conclusions et perspectives 105 3.1 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.2 Evolutionspossibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 3.2.1 Analysesavancéesd’applicationswebmulti-langage . . . . . . . . . . 106 3.2.1.1 Filtraged’injectionssurlesdonnées . . . . . . . . . . . . . 107 3.2.1.2 Certifications,labellisations,compatibilités . . . . . . . . . . 107 3.2.2 IdentificationdefaillesparInterprétationAbstraite. . . . . . . . . . . . 107 3.2.2.1 Propositiondepropriétésliéesàlasécurité . . . . . . . . . 108 3.2.2.2 Miseenœuvre . . . . . . . . . . . . . . . . . . . . . . . . . 108 3.2.3 AOPetinstrumentationdecode . . . . . . . . . . . . . . . . . . . . . 109 3.2.4 Migrationdecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 3.2.5 Autresapplications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 A MØthodologie / Environnements de dØveloppement / contextes d’exØcution 111 A.1 Méthodesagiles,extremeprogramming . . . . . . . . . . . . . . . . . . . . . 111 A.2 Utilisationdel’outildanscesdifférentesconfigurations . . . . . . . . . . . . . 113 B Versions de Java 115 C Outils existants pour Java 117 C.1 Auditdecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 C.1.1 Présentationtextuelleetapplicationderèglessimples . . . . . . . . . . 117 C.1.2 Calculsdemétriques . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 C.1.3 Analysesorientéessécuritéetfiabilité . . . . . . . . . . . . . . . . . . 122 C.2 Exemplederèglesd’auditetdemétriques . . . . . . . . . . . . . . . . . . . . 124

Description:
Professeur HDR au Conservatoire National des Arts et. Métiers(CNAM) / Rapporteur. Frédéric CUPPENS. Professeur HDR à [ABB+03] A. Abou El Kalam, R. El Baida, P. Balbiani, S. Benferhat, F. Cuppens, Y. Des- warte, A. Miège, C. Saurel, and G. Trouessin. Organization Based Access. Control.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.