Detection of Web Vulnerabilities via Model Inference assisted Evolutionary Fuzzing
Détection de vulnérabilités Web par frelatage évolutionniste et inférence de modèles.
Abstract
Testing is a viable approach for detecting implementation bugs
which have a security impact, a.k.a. vulnerabilities. When the source code is
not available, it is necessary to use black-box testing techniques. We address
the problem of automatically detecting a certain class of vulnerabilities (Cross
Site Scripting a.k.a. XSS) in web applications in a black-box test context. We
propose an approach for inferring models of web applications and fuzzing from
such models and an attack grammar. We infer control plus taint flow automata,
from which we produce slices, which narrow the fuzzing search space. Genetic
algorithms are then used to schedule the malicious inputs which are sent to the
application. We incorporate a test verdict by performing a double taint inference
on the browser parse tree and combining this with taint aware vulnerability
patterns. Our implementations LigRE and KameleonFuzz outperform current
open-source black-box scanners. We discovered 0-day XSS (i.e., previously
unknown vulnerabilities) in web applications used by millions of users.
Le test est une approche efficace pour détecter des bogues d’implémentation
ayant un impact sur la sécurité, c.-à-d. des vulnérabilités.
Lorsque le code source n’est pas disponible, il est nécessaire d’utiliser
des techniques de test en boîte noire. Nous nous intéressons au problème de
détection automatique d’une classe de vulnérabilités (Cross Site Scripting
alias XSS) dans les applications web dans un contexte de test en boîte noire.
Nous proposons une approche pour inférer des modèles de telles applications
et frelatons des séquences d’entrées générées à partir de ces modèles et
d’une grammaire d’attaque. Nous inférons des automates de contrôle et de teinte,
dont nous extrayons des sous-modèles afin de réduire l’espace de recherche de
l’étape de frelatage. Nous utilisons des algorithmes génétiques pour guider
la production d’entrées malicieuses envoyées à l’application. Nous produisons
un verdict de test grâce à une double inférence de teinte sur l’arbre
d’analyse grammaticale d’un navigateur et à l’utilisation de motifs de
vulnérabilités comportant des annotations de teinte. Nos implémentations
LigRE et KameleonFuzz obtiennent de meilleurs résultats que les scanneurs
boîte noire open-source. Nous avons découvert des XSS “0-day” (c.-à-d. des
vulnérabilités jusque lors inconnues publiquement) dans des applications web
utilisées par des millions d’utilisateurs.
Loading...