
Gryffin is a large scale web security scanning platform.
Gryffin est une plateforme de scanning de sécurité web à grande échelle. Ce n'est pas un scanner de plus. Il a été écrit pour résoudre deux problèmes spécifiques rencontrés avec les scanners existants : la couverture et l'évolutivité.
Une meilleure couverture se traduit par moins de faux négatifs. Une évolutivité inhérente se traduit par la capacité de scanner et de supporter une grande infrastructure d'applications élastiques. En termes simples, la capacité de scanner 1000 applications aujourd'hui et 100 000 applications demain grâce à une mise à l'échelle horizontale simple.
La couverture a deux dimensions - l'une pendant le crawl et l'autre pendant le fuzzing. Lors de la phase de crawl, la couverture implique la capacité de trouver autant de l'empreinte de l'application que possible. Lors de la phase de scan, ou pendant le fuzzing, elle implique la capacité de tester chaque partie de l'application pour un ensemble de vulnérabilités appliquées en profondeur.
Aujourd'hui, un grand nombre d'applications web sont pilotées par des templates, ce qui signifie que le même code ou le même chemin génère des millions d'URLs. Pour un scanner de sécurité, il suffit d'une seule des millions d'URLs générées par le même code ou chemin. Le crawler de Gryffin fait exactement cela.
Au cœur de Gryffin se trouve un moteur de déduplication qui compare une nouvelle page avec des pages déjà vues. Si la structure HTML de la nouvelle page est similaire à celles déjà vues, elle est classée comme un doublon et n'est pas crawlée davantage.
Un grand nombre d'applications aujourd'hui sont des applications riches. Elles sont fortement pilotées par JavaScript côté client. Afin de découvrir les liens et les chemins de code dans de telles applications, le crawler de Gryffin utilise PhantomJS pour le rendu et la navigation DOM.
Comme Gryffin est une plateforme de scanning, pas un scanner, il ne possède pas ses propres modules de fuzzing, même pour fuzzer des vulnérabilités web courantes comme XSS et Injection SQL.
Il n'est pas sage de réinventer la roue là où ce n'est pas nécessaire. Gryffin à l'échelle de production chez Yahoo utilise des fuzzers open source et personnalisés. Certains de ces fuzzers personnalisés pourraient être open sourcés à l'avenir, et pourraient ou non faire partie du dépôt Gryffin.
À des fins de démonstration, Gryffin est intégré avec sqlmap et arachni. Il ne les approuve pas, ni aucun autre scanner en particulier.
La philosophie est d'améliorer la couverture de scan en étant capable de fuzzer uniquement ce dont vous avez besoin.
Bien que Gryffin soit disponible en tant que package autonome, il est principalement conçu pour l'évolutivité.
Gryffin est construit sur le modèle éditeur-abonné. Chaque composant est soit un éditeur, soit un abonné, ou les deux. Cela permet à Gryffin de passer à l'échelle horizontalement en ajoutant simplement plus de nœuds abonnés ou éditeurs.
go1.13 ou ultérieur--max-msg-size=5000000go get -u github.com/yahoo/gryffin/...
(WIP)
Code sous licence de type BSD. Voir le fichier LICENSE pour les conditions.