+ All Categories
Home > Documents > © CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO,...

© CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO,...

Date post: 03-Apr-2015
Category:
Upload: internet
View: 103 times
Download: 1 times
Share this document with a friend
Popular Tags:
40
© CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France NOT!
Transcript
Page 1: © CODENOMICON Confidential and Proprietary. Fuzzing : passé, présent et futur Ari Takanen, CTO, Codenomicon 4 Juin 2009 SSTIC, Rennes, France NOT!

© CODENOMICON Confidential and Proprietary.

Fuzzing : passé, présent et futur

Ari Takanen, CTO, Codenomicon

4 Juin 2009SSTIC, Rennes, France

NOT!

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

WWW.CODENOMICON.COM2

Traduit par Jean-Philippe Gaulier

([email protected])

(corrections to: [email protected])(or: [email protected])

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

3WWW.CODENOMICON.COM

Passé : Chercheur et professeur• 1998-2002• 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

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

4WWW.CODENOMICON.COM

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 (1996-2001)

Quelques références :

• NEMs (Cisco, Alcatel, ...) • La défense • Finances • Grands comptes

95% de notre marché : Produits de Fuzzing pour 200+ protocoles

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

WWW.CODENOMICON.COM5

Le Fuzzing s’intéresse aux outils et aux vulnérabilités logicielles

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

6WWW.CODENOMICON.COM

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

7WWW.CODENOMICON.COM

Vision de sécurité : Fenêtre de la vulnérabilité

SW – durant l’analyse de vulnérabilité

SW – après la mise à disposition

SW – après le process d’analyse de vuln

TIME

Apparition de boguesVersionnageBug trouvé

Vuln trouvéeVuln rapportéeVuln patche disponible

Patch versionnéAvertissement émisPatch installé

Exposition Zéro

ExpositionLimitée

ExpositionPublique

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

WWW.CODENOMICON.COM8

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)

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

9WWW.CODENOMICON.COM

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

Les Problèmes du Fuzzing

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

WWW.CODENOMICON.COM10

Ce qui est « testé » - Les trois caractéristiques

1

2

3

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

WWW.CODENOMICON.COM11

Le Fuzzing = Test de robustesse

Qu'est-ce que c'est ? Où est-il employé ?

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

12WWW.CODENOMICON.COM

http://fr.wikipedia.org/wiki/Fuzzing

“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

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

WWW.CODENOMICON.COM13

Fuzz par Barton Miller et al.

http://pages.cs.wisc.edu/~bart/fuzz/fuzz.html

“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é

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

WWW.CODENOMICON.COM14

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)

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

15WWW.CODENOMICON.COM

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")

Exemple des paramètres d’une commande

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

16WWW.CODENOMICON.COM

Exemple d’un modèle de protocole simple

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

WWW.CODENOMICON.COM17

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.

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

WWW.CODENOMICON.COM18

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.

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

19WWW.CODENOMICON.COM

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

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

WWW.CODENOMICON.COM20

Catégorisation des Fuzzers

(Mi chemin !)

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

WWW.CODENOMICON.COM21

L'évolution de l'automatisation des tests

Test manuel

Enregistrement

Test scripté

Test Mot-Action

Test selon model

From Olli-Pekka Puolitaival, VTT, 2008

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

22WWW.CODENOMICON.COM

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

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

WWW.CODENOMICON.COM23

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.

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

WWW.CODENOMICON.COM24

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• ...

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

WWW.CODENOMICON.COM25

Architecture et vue d'ensemble de Sulley

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

WWW.CODENOMICON.COM26

Utilisation de Sulley et exécution de tests

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

27WWW.CODENOMICON.COM

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

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

28WWW.CODENOMICON.COM

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 (1998-2001) :

• 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% !

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

WWW.CODENOMICON.COM29

Exemples de résultats d'essai

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

WWW.CODENOMICON.COM30

Résultats de Fuzz de 1990 et 1995

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

WWW.CODENOMICON.COM31

PROTOS Results

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

WWW.CODENOMICON.COM32

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

33WWW.CODENOMICON.COM

L'efficacité contre le WiFi

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

WWW.CODENOMICON.COM34

L'efficacité contre WiMAX BS

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

WWW.CODENOMICON.COM35

Qui emploie le fuzzing ?

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

36WWW.CODENOMICON.COM

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

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

37WWW.CODENOMICON.COM

Toutes les grandes compagnies utilisent le Fuzzing

From: http://www.google.com/googlebooks/chrome/

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: 2000+ décisionnaires participants

Les compagnies majeures de logiciel lancent des initiatives et mentionnent le fuzzing dans leur discours de marketing

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

38WWW.CODENOMICON.COM

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

Check-list !

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

WWW.CODENOMICON.COM39

Le Buzz sur le Fuzzing – En couverture

http://www.fuzz-test.com/book/

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

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

WWW.CODENOMICON.COM40

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]


Recommended