Sécurité applicative
Fuzz testing
Aussi appelé: Fuzzing
Définition
Technique de test automatisé qui soumet un programme à de grandes quantités d'entrées malformées, aléatoires ou inattendues pour révéler des crashs, des corruptions mémoire et des vulnérabilités.
Exemples
- OSS-Fuzz exécutant libFuzzer en continu contre le parseur OpenSSL pour trouver des corruptions mémoire.
- Jazzer fuzzant un parseur JSON Java pour trouver un DoS via une entrée profondément imbriquée.
Termes liés
Fuzzing par mutation
Stratégie de fuzzing qui produit de nouvelles entrées de test en mutant aléatoirement des échantillons valides existants : flip de bits, insertion d'octets, splice de fichiers.
Fuzzing guidé par couverture
Technique de fuzzing qui instrumente la cible pour mesurer la couverture de code et fait évoluer les entrées explorant de nouveaux chemins, augmentant drastiquement l'efficacité.
Exécution symbolique
Technique d'analyse de programme qui exécute le code avec des entrées symboliques au lieu de valeurs concrètes, construisant des contraintes de chemin résolues par un solveur SMT.
DAST (Dynamic Application Security Testing)
Tests de sécurité boîte noire qui sollicitent une application en cours d'exécution via le réseau pour détecter des vulnérabilités visibles uniquement à l'exécution.
Débordement de tampon
Faille de sûreté mémoire où un programme écrit au-delà de la fin d'un tampon alloué, corrompant la mémoire adjacente et permettant souvent l'exécution de code.
Secure Coding
Secure Coding — definition coming soon.