
Gryffin è una piattaforma di scansione della sicurezza web su larga scala.
Gryffin è una piattaforma di scansione della sicurezza web su larga scala. Non è un semplice scanner. È stato scritto per risolvere due problemi specifici degli scanner esistenti: copertura e scalabilità.
Una migliore copertura si traduce in meno falsi negativi. La scalabilità intrinseca si traduce nella capacità di scansionare e supportare un'ampia infrastruttura applicativa elastica. In parole povere, la capacità di scansionare 1000 applicazioni oggi fino a 100.000 applicazioni domani mediante un semplice scaling orizzontale.
La copertura ha due dimensioni: una durante il crawling e l'altra durante il fuzzing. Nella fase di crawling, la copertura implica essere in grado di trovare quanto più possibile dell'impronta dell'applicazione. Nella fase di scansione, o durante il fuzzing, implica essere in grado di testare ogni parte dell'applicazione per un insieme applicato di vulnerabilità in profondità.
Oggi un gran numero di applicazioni web sono basate su template, il che significa che lo stesso codice o percorso genera milioni di URL. Per uno scanner di sicurezza, è sufficiente uno dei milioni di URL generati dallo stesso codice o percorso. Il crawler di Gryffin fa proprio questo.
Al cuore di Gryffin c'è un motore di deduplicazione che confronta una nuova pagina con pagine già viste. Se la struttura HTML della nuova pagina è simile a quelle già viste, viene classificata come duplicato e non viene ulteriormente esplorata.
Un gran numero di applicazioni oggi sono applicazioni ricche. Sono fortemente guidate da JavaScript lato client. Per scoprire link e percorsi di codice in tali applicazioni, il crawler di Gryffin utilizza PhantomJS per il rendering e la navigazione del DOM.
Poiché Gryffin è una piattaforma di scansione, non uno scanner, non ha moduli fuzzer propri, nemmeno per il fuzzing di vulnerabilità web comuni come XSS e SQL Injection.
Non è saggio reinventare la ruota dove non serve. Gryffin, su scala di produzione a Yahoo, utilizza fuzzer open source e personalizzati. Alcuni di questi fuzzer personalizzati potrebbero essere resi open source in futuro, e potrebbero o meno far parte del repository di Gryffin.
A scopo dimostrativo, Gryffin è integrato con sqlmap e arachni. Non promuove né loro né alcun altro scanner in particolare.
La filosofia è migliorare la copertura di scansione potendo eseguire fuzzing solo per ciò di cui si ha bisogno.
Sebbene Gryffin sia disponibile come pacchetto standalone, è costruito principalmente per la scalabilità.
Gryffin è basato sul modello publisher-subscriber. Ogni componente è un publisher, un subscriber, o entrambi. Ciò consente a Gryffin di scalare orizzontalmente semplicemente aggiungendo più nodi subscriber o publisher.
go1.13 o successivo--max-msg-size=5000000go get -u github.com/yahoo/gryffin/...
(WIP)
Codice concesso in licenza sotto la licenza BSD. Vedi il file LICENSE per i termini.