AntiFuzzing: la sécurité par l'obscurité!?

image

Pourquoi s'embêter et dépenser de l'argent et des ressources pour la sécurité? Pourquoi s'embêter à organiser un cycle de vie de développement de sécurité (SDL)? Pourquoi intégrer le fuzzing dans le processus de développement? Pourquoi se soucier des connaissances sur divers fuzzers comme AFL, libfuzz, etc.? Après tout, vous pouvez «simplement» transformer la recherche de vulnérabilités dans vos produits en torture continue et rendre la vie «douce» aux chercheurs et aux attaquants. Vous voulez savoir comment procéder? Alors bienvenue à Kat!

Avertissement: cet article doit être pris avec une certaine dose d'humour et d'ironie!

Récemment, de plus en plus d'ouvrages ont été consacrés au sujet de l'AntiFuzzing. AntiFuzzing est une action qui réduit l'efficacité et l'utilisation du fuzzing pour rechercher des vulnérabilités dans les solutions d'un développeur.

Cet article se concentrera sur le flou des applications binaires écrites en C \ C ++ qui peuvent être déployées localement et tentera de trouver des vulnérabilités liées à la corruption de mémoire.

Aujourd'hui, un grand nombre d'actions sont dirigées contre AFL fuzzer, en tant que représentant le plus frappant, bien connu et réputé de l'approche de fuzzing basée sur la rétroaction.

Après avoir étudié le problème, nous avons identifié les techniques AntiFuzzing possibles:

  • Encombrer les résultats du travail de fuzzer est la technique la plus excentrique que certains développeurs adoptent sans s'en rendre compte) Elle consiste à ajouter plus de bugs pour rendre le programme plus sûr ... Oui, nous ne pouvons malheureusement pas répondre la question est de savoir combien de nos bogues sont déjà dans le programme et à quel point ils sont dangereux, mais nous pouvons les diluer avec un tas d'erreurs inutiles pour l'attaquant!
  • Détecter un processus de fuzz est du domaine de jailbreak_detect, root_detect. L'application détermine indépendamment (et le développeur écrit une série de vérifications) qu'elle ne fonctionne pas seulement, mais est échelonnée et, par conséquent, refuse de travailler. L'industrie de la sécurité de l'information en a fait l'expérience un million de fois. Ce code est recherché et exclu de l'application assez facilement, et la technique mène au titre de «le plus inutile et le moins sophistiqué».
  • Ralentir le processus de duplication - au sein de notre entreprise, nous appelons ces choses «cacher les bogues dans les frais généraux». Même maintenant, certains logiciels fonctionnent mal non seulement sous fuzzing, donc la recherche de vulnérabilités dans celui-ci devient une tâche psychologiquement difficile pour les chercheurs)
  • La création de zones aveugles est la direction la plus intéressante qui, à notre avis, va conduire l'évolution des flous. Ainsi, dans le travail présenté à BlackHat 2018, le problème des collisions dans shared_mem est soulevé par AFL, qui l'utilise pour déterminer les sections couvertes du code. C'est-à-dire que des zones sont créées où le fuzzer ne tombe pas pendant son fonctionnement.

Ainsi, AntiFuzzing présente à la fois des avantages et des inconvénients évidents:

  • "-" Peut-être l'obscurcissement de l'esprit des développeurs de logiciels qui connaissent mal certains aspects de la sécurité de l'information et du processus de duplication.
  • "+" L' évolution des fuzzers, qui à l'avenir commencera à surmonter les mécanismes AntiFuzzing mis en place et offrira une plus grande couverture tout d'abord, s'il existe des mécanismes AntiFuzzing mis en place; deuxièmement, lorsqu'il existe des éléments dans le logiciel qui simulent des fonctions AntiFuzzing.

Pourquoi cette approche pour garantir la sécurité est-elle stupide et nuisible? Le développement d'une approche AntiFuzzing de haute qualité et son application à un logiciel réel est comparable en complexité au développement de l'algorithme lui-même pour augmenter la couverture du code avec un fuzzing basé sur le feedback. La difficulté est qu'en plus d'insérer des structures inhibitrices de phasage aux bons endroits, il est nécessaire de s'assurer qu'elles n'ont pas un schéma clair qui puisse être distingué, puis simplement exclu. AntiFuzzing n'augmente pas la sécurité de l'application elle-même ... Il est bon que même si la recherche d'AntiFuzzing n'est effectuée que dans un environnement universitaire. Dans le même temps, il existe des entreprises qui, au contraire, se concentrent sur la simplification de la recherche de bugs. Par exemple, Mozilla fournit une version spéciale de son navigateur pour ce blog.mozilla.org/security/2018/07/19/introducing-the-asan-nightly-project !

image

L'augmentation de l'intérêt pour AntiFuzzing a été causée principalement par le DARPA Cyber ​​Grand Challenge 2016. Il s'agit d'un concours où les ordinateurs sans aide humaine recherchaient les vulnérabilités, les exploitaient et les corrigeaient. La plupart des systèmes de recherche, vous l'aurez deviné, étaient basés sur le flou AFL, et toutes les cibles de la compétition étaient des applications binaires. Tout cela peut viser à contrecarrer les systèmes automatiques, et non les personnes.

Cet article est basé sur des travaux que vous pouvez étudier vous-même:

  1. «Échapper à la fuzz Évaluer les techniques de fuzzing et les duper avec AntiFuzzing» , mémoire de maîtrise en systèmes et réseaux informatiques
    2016
  2. Chaff Bugs: dissuader les attaquants en rendant le logiciel plus bogue , 2018
  3. «Blindspot d'AFL et comment résister au flou AFL pour les binaires ELF arbitraires» , BlackHat USA 2018
  4. Nous vous recommandons également de lire l'article des gars du groupe NCC «Introduction to Anti-Fuzzing: A Defence in Depth Aid» de 2014 (la première version de l'AFL vient de paraître et n'a pas encore gagné le grand amour de la communauté, et 2 ans de plus avant la finale DARPA CGC).

PS: Nous travaillons souvent avec AFL (+ libfuzz) et ses modifications lors de la recherche de logiciels et de l'implémentation de SDL pour nos clients. Par conséquent, dans l'un des articles suivants, nous parlerons davantage du fuzzing en utilisant AFL et pourquoi de plus en plus de personnes l'utilisent dans les programmes de test et comment cela augmente le niveau de sécurité du développement.

Source: https://habr.com/ru/post/fr428067/


All Articles