Penso che questo sia un problema molto complesso da risolvere e tutti gli strumenti che abbiamo sono relativamente giovani. Tuttavia, penso che ci siano alcune buone opzioni là fuori, e alcune persone pioniere in questo settore.
Penso che ci siano due aspetti del problema proposto:
-
La più ovvia è la scansione. Lo strumento deve essere in grado di mappare l'intera applicazione, comprese eventuali richieste del server che potrebbe fare, al fine di ottenere una buona copertura / ampiezza. Tradizionalmente questo si ottiene semplicemente eseguendo la scansione della pagina HTML per collegamenti e moduli che puntano a più pagine, ma questo diventa difficile con le comunicazioni Ajax e le applicazioni a pagina singola.
-
Inoltre, le applicazioni client-pesanti, con un sacco di codice Javascript che esegue la logica dell'applicazione nell'agent user, hanno più probabilità di avere bug di sicurezza nel codice lato client stesso. Difetti come lo scripting cross-site basato su DOM possono verificarsi in qualsiasi applicazione che utilizzi script sul lato client, quindi gli strumenti hanno idealmente bisogno della possibilità di individuare vulnerabilità anche in questo codice.
Alcuni strumenti hanno dimostrato di possedere queste capacità e il denominatore comune è la capacità di elaborare Javascript. Ad esempio, strumenti come Crawljax possono essere utilizzati dai pentesters per mappare le applicazioni elaborando effettivamente ogni pagina come se fosse in un browser (a volte effettivamente caricando in un'istanza del browser). Abbiamo anche ottime utility come PhantomJS che consente di elaborare il codice Javascript in modalità headless.
Qui ci sono un paio di strumenti che ho usato per tentare di raggiungere quanto sopra - entrambi sono open source:
-
OWASP Zed Attack Proxy (ZAP) - OWASP ZAP include un crawler AJAX (oltre a un crawler tradizionale) che genera in realtà istanze del browser per rendere ed elaborare pagine e identificare nuovi percorsi attraverso l'applicazione. Non penso gli scanner automatici rileveranno ancora numerosi problemi relativi al codice lato client, ma ZAP ha almeno introdotto alcune funzioni utili per testarli manualmente.
-
Arachni - Questo è, a mano in giù, il miglior scanner automatico che ho usato personalmente, e un progetto davvero fantastico secondo me. Sembra fare un ottimo lavoro di scansione della maggior parte delle applicazioni HTML5 e utilizza PhantomJS per elaborare Javascript (senza testa). Anche i test per XSS basati su DOM e simili sembrano funzionare abbastanza bene.
Non penso che nessuno strumento sia particolarmente lucido quando si tratta di moderne applicazioni web HTML5, ma ci sono certamente alcuni progressi, e andranno solo meglio.
Dovrebbe essere ovvio che gli strumenti di test automatici sono molto limitati rispetto ai test di penetrazione, specialmente nell'arena appsec, e dovrebbero pertanto essere usati insieme (come ha riconosciuto l'OP). La mia risposta ha presupposto che sia necessaria una soluzione completamente automatizzata. Dove un operatore umano può essere costantemente coinvolto, qualcosa come Burp Suite è sicuramente una buona opzione.