La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

© CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France NOT!

Présentations similaires


Présentation au sujet: "© CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France NOT!"— Transcription de la présentation:

1 © CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France NOT!

2 2 Traduit par Jean-Philippe Gaulier (corrections to: (or:

3 3 Passé : Chercheur et professeur Université d'Oulu, Finlande Groupe de recherche OUSPG/PROTOS Présent: Entrepreneur et évangéliste 2001-aujourd'hui CTO de Codenomicon 10+ présentations de conférence, chaque année Auteur de deux livres : VoIP sécurité Le Fuzzing Au sujet de Ari Takanen

4 4 Trois mots au sujet Codenomicon Compagnie fondée en 2001, après cinq ans de recherche dans la sécurité de produits logiciels, à l'université d'Oulu ( ) Quelques références : NEMs (Cisco, Alcatel,...) La défense Finances Grands comptes 95% de notre marché : Produits de Fuzzing pour 200+ protocoles

5 5 Le Fuzzing sintéresse aux outils et aux vulnérabilités logicielles

6 6

7 7 Vision de sécurité : Fenêtre de la vulnérabilité SW – durant lanalyse de vulnérabilité SW – après la mise à disposition SW – après le process danalyse de vuln TIME Apparition de bogues Versionnage Bug trouvé Vuln trouvée Vuln rapportée Vuln patche disponible Patch versionné Avertissement émis Patch installé Exposition Zéro Exposition Limitée Exposition Publique

8 8 Point Clé ? Parler des problèmes dans le logiciel n'est pas le sujet de mon thème aujourdhui (Pas de Zero-Days aujourdhui... Passez me voir après si vous voulez en voir un)

9 9 Mesures pour le fuzzing !!! Sélection du bon outil pour réaliser les bonnes tâches Comprendre quand utiliser le fuzzing Déterminer ce que lon doit fuzzer Expliquer lintérêt du fuzzing au management Focaliser les ressources sur la recherche de nouveaux bogues plutôt que de chercher à exploiter quelques bogues mis en évidence Motiver vos vendeurs à utiliser le fuzzing Les Problèmes du Fuzzing

10 10 Ce qui est « testé » - Les trois caractéristiques 1 2 3

11 11 Le Fuzzing = Test de robustesse Qu'est-ce que c'est ? Où est-il employé ?

12 12 Le fuzzing est une technique pour tester des logiciels. L'idée est d'injecter des données aléatoires dans les entrées d'un programme. Si le programme échoue (par exemple en crashant ou en générant une erreur), alors il y a des défauts à corriger. Fuzzing - Définition originale

13 13 Fuzz par Barton Miller et al. Le Fuzzing est une technique simple pour alimenter des entrées aléatoires dans les applications. Alors que le test aléatoire est une technique consacrée, notre approche est composée de trois caractéristiques qui, une fois prise ensembles, la rend quelque peu différente d'autres approches. La différence principale entre le test aléatoire et le fuzzing est que ce dernier emploie des techniques de tests aléatoires pour trouver des problèmes de sécurité

14 14 Le Fuzzing original était aléatoire L'entrée est aléatoire. Nous n'employons aucun modèle de comportement en fonction du programme, du type d'application ou de la description de système.. [...] Le but était d'examiner des centaines d'applications, chacune avec des millions de cas de test Cependant, ils employaient un modèle ! (Paramètres de la ligne de commande)

15 15 usage: vim [arguments] [file..] edit specified file(s) or: vim [arguments] - read text from stdin or: vim [arguments] -t tag edit file where tag is defined or: vim [arguments] -q [errorfile] edit file with first error Arguments: --Only file names after this -vVi mode (like "vi") -eEx mode (like "ex") -sSilent (batch) mode (only for "ex") -dDiff mode (like "vimdiff") -yEasy mode (like "evim", modeless) -RReadonly mode (like "view") -ZRestricted mode (like "rvim") Exemple des paramètres dune commande

16 16 Exemple dun modèle de protocole simple

17 17 Le verdict des essais était très simple Notre critère de fiabilité est simple : si l'application crash ou se gèle, on la considère comme ne passant pas l'essai, autrement c'est ok. Notez que l'application ne doit pas répondre d'une façon sensible à l'entrée, elle peut cependant se terminer silencieusement. Il y avait très peu de surveillance de la cible Cependant il y avait une surveillance des crashes.

18 18 Le Fuzzing était entièrement automatisé En raison des deux premières caractéristiques, le fuzzing peut être automatisé à un degré élevé et des résultats peuvent être comparés à travers des applications, des logiciels d'exploitation, et des fournisseurs. Génération automatisée de tests. Exécution automatisée de tests. Analyse automatisée des résultats des tests.

19 19 Il y a toujours un « modèle » : Fichier gabarit, PCAP, Spécifications Il y a toujours surveillance : Détection de fuite de mémoire, Détection de la corruption de heap/stack, Contrôles de logique d'affaires Il y a toujours automatisation : La génération, L'exécution, L'analyse Résumé de ce qu'est le Fuzzing

20 20 Catégorisation des Fuzzers (Mi chemin !)

21 21 L'évolution de l'automatisation des tests Test manuel Enregistrement Test scripté Test Mot-Action Test selon model From Olli-Pekka Puolitaival, VTT, 2008

22 22 Fuzzing vs. test de robustesse Le fuzzing n'embarque pas d'aspect aléatoire Deux techniques principales de Fuzzing: Mutation (non intelligent, modification semi-aléatoire) Génération (intelligent, tests sur models ciblés) Fuzzing : Les approches de la nouvelle génération

23 23 Principaux axes de recherche de PROTOS PROTOS s'est concentré sur l'application d'une modélisation plus intelligente sur les interfaces de test afin d'éliminer la nécessité de recourir aux tests aléatoires Le langage initial de spécifications des interfaces était basée sur BNF, avant de migrer pour adopter ASN.1 et XML Le framework de génération de tests est propriétaire, le projet libère seulement les logiciels de test de produits ou protocoles. Note : Les tests de DNS sont une exception.

24 24 Le Fuzzing par bloc Explication simple : les fuzzers par bloc traitent les protocoles de manière « plate » (vs structure arborescente de protocole) Certains pensent que PROTOS est construit comme un fuzzer par bloc bien qu'il emploie une structure arborescente pour spécifier une interface de protocole Le nom vient en fait de la méthode de génération, qui est basée sur des « meta-data » issus des morceaux de données Ceci est une chaîne Ceci est un entier...

25 25 Architecture et vue d'ensemble de Sulley

26 26 Utilisation de Sulley et exécution de tests

27 27 Fuzzing par Mutation/Rejeu : capture et rejeu améliorés par la compréhension du protocole, complexité de mutation, possibilités pour le proxy fuzzing. Fuzzing Pre-généré/Scripté : plus de cas de test, de cadres d'exécution, de parallélisme. Fuzzing par bloc : ajoutez le potentiel issu des blocs de données et des structures plus complexes. Fuzzing par Model : automatisation de la construction des modèles de protocole, automatisation de la nomalisation de la syntaxe et de la sémantique de protocole. L'évolution du Fuzzing

28 28 Métrique d'efficacité du Fuzzing Comparaison entre les fuzzers basés sur la mutation et sur la génération (Charlie Miller, CanSecWest 2008): Les meilleurs fuzzer ont une meilleure compréhension des protocoles Les meilleurs fuzzers couvrent jusqu'à de 70% des bugs. La combinaison de deux fuzzers permet de couvrir de 70-90% des bogues. Résultats de PROTOS contre des cibles précédemment non-fuzzées ( ) : 80% de produits testés présentent au moins une vulnérabilité distante, dans la plupart des tests 100% des produits échoués. Jusqu'à 50% des tests sont efficaces ! ! Possibilité de crash de 50% !

29 29 Exemples de résultats d'essai

30 30 Résultats de Fuzz de 1990 et 1995

31 31 PROTOS Results

32 32

33 33 L'efficacité contre le WiFi

34 34 L'efficacité contre WiMAX BS

35 35 Qui emploie le fuzzing ?

36 36 Le fuzzing et les produits/logiciels de sécurité Environ 50% de nos clients nappartiennent pas à des organisations dassurance qualité (lusage du fuzzing est quasiment similaire) : Developpeurs (tests unitaires, interopérabilité) Organisations de sécurité (audits, pen tests) Intégrateurs (tests dintégration, acceptabilité) Equipe IT (acceptabilité, pen test) Activité des groupes de sécurité produit/logiciel et support nécessaire pour tous les types de profile dusagers Le fuzzing aide à la priorisation des bugs, tous les problèmes trouvés étant critiques et ouverts à lexploitation Pas de faux positif Le fuzzing est utilisé pour valider la qualité des composants open source et/ou out sourcés

37 37 Toutes les grandes compagnies utilisent le Fuzzing From: Tous les groupes majeurs de sécurité utilisent le fuzzing BSIMM: 9 sur 9 interviewés 40-60% des décisionnaires IT utilisent ou planifient lusage dici à un an Forrester: décisionnaires participants Les compagnies majeures de logiciel lancent des initiatives et mentionnent le fuzzing dans leur discours de marketing

38 38 Métriques dans le fuzzing – WORK IN PROGRESS Sélection doutils : Génération vs. Mutation Où utiliser le fuzzing: SDLC Qui doit utiliser le fuzzing: Testeurs ! Convaincre le management : ROI, TCO Plus de bugs non exploitables: Maturité de lOrganization Motivation des vendeurs: Exigeances, Regulations Check-list !

39 39 Le Buzz sur le Fuzzing – En couverture Takanen, DeMott et Miller: Fuzzing for Software Security Testing and Quality Assurance Vous navez pas besoin dêtre un spécialiste de la sécurité pour lire ce livre Ecrit pour enseigner les bonnes approches à la prochaine génération de testeurs : Utilisateurs de logiciel Ingénieur en sécurité Academiciens

40 40 PROACTIVE SECURITY AND ROBUSTNESS SOLUTIONS Merci – QUESTIONS? Frissonnez dexcitation à lévocation de la chasse ! Traquez les bugs avec soin, méthodologie et raison. Construisez leurs des pièges..... Testeurs! Cassez du logiciel (cest votre devoir) et obtenez le graal - mais ne vous amusez pas de la souffrance des programmeurs. [de Boris Beizer]


Télécharger ppt "© CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France NOT!"

Présentations similaires


Annonces Google