MISC N°
Numéro
39

Fuzzing : injectez des données et trouvez les failles cachées

Temporalité
Septembre/Octobre 2008
Article mis en avant

Résumé

La recherche de vulnérabilités par techniques de fuzzing est devenue extrêmement populaire. Trouver des vulnérabilités avec des techniques qui peuvent être triviales – et donc à moindres coûts – est à la fois séduisant et effrayant. Bien qu'il soit utopique de penser que le fuzzing est une technique miracle, il faut avouer qu'elle reste néanmoins pertinente dans de nombreux cas et en particulier lors de tests en boite noire. Nous décrirons dans cet article les principales techniques utilisées dans le domaine du fuzzing et tenterons d'étayer ce que le fuzzing peut apporter.

Dans ce numéro...


Grâce à la prise de conscience générale de l'importance de la sécurité informatique, le nombre de mécanismes de protection dédiés aux applications userland n'a cessé d'augmenter (adresse aléatoire de la pile, Canary, SafeSEH…). Il est devenu difficile, avec des droits restreints, d'exploiter les programmes les plus privilégiés. En effet, leur exécution est de plus en plus restreinte et leur sécurité est plus étudiée.Les systèmes d'exploitation ont été créés selon un modèle en couches : les programmes utilisateurs font appel à des fonctionnalités du noyau qui, lui, dialogue avec les périphériques. Dans ce modèle, le noyau a le niveau de privilège le plus élevé.L'exploitation d'une vulnérabilité noyau permet de faire exécuter du code arbitraire avec les privilèges les plus élevés. Cette exploitation permet une escalade de privilèges en contournant les contrôles d'accès habituels, propres au niveau utilisateur. Le fait que la vulnérabilité se trouve dans l'espace noyau implique des difficultés supplémentaires telles que l'impossibilité d'accèder la libC [2].Dans cet article, nous allons voir comment un attaquant peut exploiter une vulnérabilité du noyau afin d'en détourner le fonctionnement normal dans le but d'exécuter du code arbitraire. Nous allons prendre l'exemple de la faille vmsplice publiée le 09/02/2008.
Les atteintes aux données personnelles touchent indistinctement entreprises, institutions publiques et privées, acteurs civils et militaires, révélant l’existence de failles importantes dans l’organisation des systèmes et processus de sécurisation des données. Ces données attisent bien des convoitises en raison de leur nature spécifique, en raison de leur valeur propre. L’analyse des évènements les plus marquants en matière d’atteintes aux données permet de mettre en exergue les caractéristiques de cette forme d’incident (§1). Mais ces atteintes aux systèmes et aux données sont-elles uniquement des actes de délinquance ? Ne pourrait-on envisager qu’elles puissent être, dans certains cas, des agressions lancées contre l’espace informationnel d’un adversaire ? Ne doit-on pas s’interroger sur le possible recours à ces atteintes aux données dans le cadre d’opérations de guerre de l’information (§2) ?
Décomposer le nombre 767 en produits de facteurs premiers est assez simple, mais qu'en est-il pour le nombre 214 465 394 374 108 286 597 905 734 489 835 068 072 488 263 267 274 573 651 ? Ce nombre de 57 chiffres n'est pourtant pas très grand comparé à ceux de plus de 300 utilisés par les systèmes de chiffrement actuels. Les techniques de factorisation évoluent et deviennent de plus en plus efficaces. Nous nous intéressons à la méthode de factorisation qui s'appuie sur les courbes elliptiques, objet mathématique déjà bien connu dans la cryptographie moderne.
Cet article est la suite de l'article « Comment réaliser un fuzzer » (MISC 36). Maintenant que les bases sont posées, voyons la mise en pratique. Fusil le fuzzer est une boîte à outils libre pour écrire ses propres fuzzers. Nous allons voir comment mettre en place l'environnement pour fuzzer une application, puis comment faire muter un fichier ou bien générer des données. Les sondes et le fonctionnement de Fusil seront détaillés pour bien comprendre ce qui se passe. Pour finir, l'exécution du fuzzer Python sera expliquée.
Depuis quelques années, rechercher et trouver (ou pas) des vulnérabilités grâce au fuzzing devient extrêmement commun. Nous présentons dans cet article un framework de fuzzing très populaire : le Sulley Fuzzing Framework. Nous montrerons que développer des fuzzers grâce à Sulley s'avère à la fois facile, efficace et pérenne grâce à la réutilisation des briques déjà développées.
La voix sur IP (VoIP) s’impose aujourd’hui comme l’une des technologies clefs de l’Internet actuel et futur. Dans cet article, nous partageons l’expérience pratique acquise ces deux dernières années par notre équipe de recherche sur l’automatisation des processus de découverte de vulnérabilités dans le monde VoIP. Nous dressons un portrait relativement sombre de la sécurité actuelle de la sphère VoIP en présentant les vulnérabilités les plus dangereuses capables d’aboutir à la compromission de réseaux entiers. Toutes les vulnérabilités présentées dans cet article ont été publiées par notre équipe de recherche et ont été découvertes à l’aide de notre propre suite logicielle de fuzzing appelée « KIF ». Toute vulnérabilité présentée dans l’article est également accompagnée d’une présentation d’une solution permettant de s’en prémunir.
Comme l’indiquent plusieurs articles de ce dossier, des techniques de fuzzing peuvent être appliquées aux protocoles. Elles permettent alors de détecter des vulnérabilités sur des implémentations particulières. Mais qu’en est-il de la détection des erreurs de conception ? Comment s’assurer qu’un nouveau protocole est sain d’un point de vue purement logique avant même de disposer de son implémentation ? Les techniques récentes de vérification automatique de protocoles s’avèrent à cet égard très utiles. Plusieurs outils d’animation et de vérification existent : tout au long de cet article, nous utilisons conjointement SPAN (http://people.irisa.fr/Thomas.Genet/span/) et AVISPA (http://www.avispa-project.org/). D’une certaine manière, l’animation est à la spécification ce que le fuzzing est à l’implémentation.
Nous présentons dans cet article quelques techniques de construction de topologie réseau de niveau 2 et 3, sur un cœur de réseau MPLS, permettant d’assurer une protection par isolation.
Sortez les vieux dossiers, soufflez fort pour enlever la poussière et cherchez en quoi cela peut nous servir aujourd'hui ! Au programme : comment une vulnérabilité de 1999 peut nous aider à pénétrer une architecture sans fil apparemment conforme à l'état de l'art de la sécurité des réseaux sans fil (802.11i [1]). Nous allons ici exploiter une faiblesse, déjà montrée il y a quelques années, sous certaines conditions.

Magazines précédents

Les derniers articles Premiums

Les derniers articles Premium

Sécurisez vos applications web : comment Symfony vous protège des menaces courantes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les frameworks tels que Symfony ont bouleversé le développement web en apportant une structure solide et des outils performants. Malgré ces qualités, nous pouvons découvrir d’innombrables vulnérabilités. Cet article met le doigt sur les failles de sécurité les plus fréquentes qui affectent même les environnements les plus robustes. De l’injection de requêtes à distance à l’exécution de scripts malveillants, découvrez comment ces failles peuvent mettre en péril vos applications et, surtout, comment vous en prémunir.

Bash des temps modernes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les scripts Shell, et Bash spécifiquement, demeurent un standard, de facto, de notre industrie. Ils forment un composant primordial de toute distribution Linux, mais c’est aussi un outil de prédilection pour implémenter de nombreuses tâches d’automatisation, en particulier dans le « Cloud », par eux-mêmes ou conjointement à des solutions telles que Ansible. Pour toutes ces raisons et bien d’autres encore, savoir les concevoir de manière robuste et idempotente est crucial.

Présentation de Kafka Connect

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Un cluster Apache Kafka est déjà, à lui seul, une puissante infrastructure pour faire de l’event streaming… Et si nous pouvions, d’un coup de baguette magique, lui permettre de consommer des informations issues de systèmes de données plus traditionnels, tels que les bases de données ? C’est là qu’intervient Kafka Connect, un autre composant de l’écosystème du projet.

Le combo gagnant de la virtualisation : QEMU et KVM

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

C’est un fait : la virtualisation est partout ! Que ce soit pour la flexibilité des systèmes ou bien leur sécurité, l’adoption de la virtualisation augmente dans toutes les organisations depuis des années. Dans cet article, nous allons nous focaliser sur deux technologies : QEMU et KVM. En combinant les deux, il est possible de créer des environnements de virtualisation très robustes.

Body