Title: Codenomicon Products Roadmap
1Fuzzing passé, présent et futurAri
Takanen, CTO, Codenomicon4 Juin 2009SSTIC,
Rennes, France
NOT!
2Traduit par Jean-Philippe Gaulier (jpgaulier_at_point
-libre.org)
(corrections to attak_at_iki.fi)(or
ari.takanen_at_codenomicon.com)
3Au sujet de Ari Takanen
- 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
4Trois 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
5Le Fuzzing sintéresse aux outils et aux
vulnérabilités logicielles
6(No Transcript)
7Vision 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 lanalyse de vulnérabilité
Exposition Limitée
SW après le process danalyse de vuln
Exposition Publique
8Point 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)
9Les 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 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
10Ce qui est testé - Les trois caractéristiques
1
3
2
11Le Fuzzing Test de robustesse
Qu'est-ce que c'est ? Où est-il employé ?
12Fuzzing - Définition originale
- 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.
13Fuzz 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é
14Le 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)
15Exemple des paramètres dune 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")
16Exemple dun modèle de protocole simple
17Le 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.
18Le 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.
19Ré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
20Catégorisation des Fuzzers
(Mi chemin !)
21L'évolution de l'automatisation des tests
From Olli-Pekka Puolitaival, VTT, 2008
22Fuzzing 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)
23Principaux 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.
24Le 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
- ...
25Architecture et vue d'ensemble de Sulley
26Utilisation de Sulley et exécution de tests
27L'é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.
28Mé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 !
29Exemples de résultats d'essai
30Résultats de Fuzz de 1990 et 1995
31PROTOS Results
32(No Transcript)
33L'efficacité contre le WiFi
34L'efficacité contre WiMAX BS
35Qui emploie le fuzzing ?
36Le 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
37Toutes 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 lusage dici à un an - Forrester 2000 décisionnaires participants
- Les compagnies majeures de logiciel lancent des
initiatives et mentionnent le fuzzing dans leur
discours de marketing
From http//www.google.com/googlebooks/chrome/
38Check-list !
- 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
39Le 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 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
40PROACTIVE 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