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

Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France NOT!

Présentations similaires


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

1 Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France
NOT!

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

3 Passé : Chercheur et professeur
Au sujet de Ari Takanen 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

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 Le Fuzzing s’intéresse aux outils et aux vulnérabilités logicielles

6

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

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

9 Les Problèmes du Fuzzing
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 l’on doit fuzzer Expliquer l’inté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

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

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

12 Fuzzing - Définition originale
“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.”

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 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 Exemple des paramètres d’une commande
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 -v Vi mode (like "vi") -e Ex mode (like "ex") -s Silent (batch) mode (only for "ex") -d Diff mode (like "vimdiff") -y Easy mode (like "evim", modeless) -R Readonly mode (like "view") -Z Restricted mode (like "rvim")

16 Exemple d’un modèle de protocole simple

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 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 Résumé de ce qu'est le Fuzzing
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

20 Catégorisation des Fuzzers
(Mi chemin !)

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 Fuzzing : Les approches de la nouvelle génération
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)

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 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 Architecture et vue d'ensemble de Sulley

26 Utilisation de Sulley et exécution de tests

27 L'évolution du Fuzzing 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.

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 % 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 Exemples de résultats d'essai

30 Résultats de Fuzz de 1990 et 1995

31 PROTOS Results

32

33 L'efficacité contre le WiFi

34 L'efficacité contre WiMAX BS

35 Qui emploie le fuzzing ?

36 Le fuzzing et les produits/logiciels de sécurité
Environ 50% de nos clients n’appartiennent pas à des organisations d’assurance qualité (l’usage du fuzzing est quasiment similaire) : Developpeurs (tests unitaires, interopérabilité) Organisations de sécurité (audits, pen tests) Intégrateurs (tests d’inté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 d’usagers Le fuzzing aide à la priorisation des bugs, tous les problèmes trouvés étant critiques et ouverts à l’exploitation Pas de faux positif Le fuzzing est utilisé pour valider la qualité des composants open source et/ou out sourcés

37 Toutes les grandes compagnies utilisent le Fuzzing
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 l’usage d’ici à un an Forrester: décisionnaires participants Les compagnies majeures de logiciel lancent des initiatives et mentionnent le fuzzing dans leur discours de marketing From:

38 Check-list ! Métriques dans le fuzzing – WORK IN PROGRESS Sélection d’outils : 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 l’Organization Motivation des vendeurs: Exigeances, Regulations

39 Utilisateurs de logiciel Ingénieur en sécurité Academiciens
Le Buzz sur le Fuzzing – En couverture Takanen, DeMott et Miller: “Fuzzing for Software Security Testing and Quality Assurance” Vous n’avez 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 PROACTIVE SECURITY AND ROBUSTNESS SOLUTIONS
Merci – QUESTIONS? “Frissonnez d’excitation à l’évocation de la chasse ! Traquez les bugs avec soin, méthodologie et raison. Construisez leurs des pièges Testeurs! Cassez du logiciel (c’est votre devoir) et obtenez le graal - mais ne vous amusez pas de la souffrance des programmeurs.” [de Boris Beizer]


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

Présentations similaires


Annonces Google