Creo que este es un problema muy complejo de resolver y todas las herramientas que tenemos son relativamente jóvenes. Sin embargo, creo que hay algunas buenas opciones por ahí, y algunas personas pioneras en esta área.
Creo que el problema propuesto tiene dos aspectos:
-
El más obvio es el rastreo. La herramienta debe poder trazar toda la aplicación, incluidas las solicitudes de servidor que pueda realizar, para lograr una buena cobertura / amplitud. Tradicionalmente, esto se logra simplemente rastreando la página HTML para los enlaces y formularios que apuntan a más páginas, pero esto se vuelve difícil con las comunicaciones Ajax y las aplicaciones de una sola página.
-
Además, las aplicaciones pesadas del cliente, con una gran cantidad de código Javascript que realiza la lógica de la aplicación en el agente de usuario, tienen un poco más de probabilidad de tener errores de seguridad en el código del lado del cliente. Las fallas, como las secuencias de comandos entre sitios basadas en DOM, pueden ocurrir en cualquier aplicación que utilice secuencias de comandos del lado del cliente, por lo que las herramientas también necesitan la capacidad de detectar vulnerabilidades en este código.
Se ha demostrado que algunas herramientas poseen estas habilidades, y el denominador común es la capacidad de procesar Javascript. Por ejemplo, los pentesters pueden usar herramientas como Crawljax para mapear las aplicaciones al procesar cada página como si estuviera en un navegador (a veces al cargar en una instancia del navegador). También tenemos excelentes utilidades como PhantomJS que permite que el código Javascript se procese en modo sin cabeza.
Aquí hay un par de herramientas que he usado que intentan lograr lo anterior, ambas son de código abierto:
-
OWASP Zed Attack Proxy (ZAP) : OWASP ZAP presenta un rastreador AJAX (además de un rastreador tradicional) que en realidad genera instancias de navegador para procesar y procesar páginas e identificar nuevas rutas a través de la aplicación. No creo pensar que los escáneres automáticos detectarán una gran cantidad de problemas de código del lado del cliente todavía, pero ZAP al menos ha introducido algunas buenas características para probarlos manualmente.
-
Arachni : este es, sin lugar a dudas, el mejor escáner automatizado que he usado personalmente y un Realmente un gran proyecto en mi opinión. Parece que hace un muy buen trabajo al rastrear la mayoría de las aplicaciones HTML5 y usa PhantomJS para procesar el Javascript (sin cabeza). Las pruebas para XSS basadas en DOM y similares también parecen funcionar bastante bien.
No creo que ninguna herramienta esté particularmente pulida cuando se trata de aplicaciones web HTML5 modernas, pero ciertamente hay algunos avances, y solo mejorarán.
No hace falta decir que las herramientas de prueba automatizadas son muy limitadas en comparación con las pruebas de penetración, especialmente en el campo de appsec, y por lo tanto deben usarse en conjunto (como lo ha reconocido el OP). Mi respuesta ha asumido que se requiere una solución totalmente automatizada. Cuando un operador humano puede involucrarse constantemente, algo como Burp Suite es definitivamente una buena opción.