Puede intentar buscar clases de vulnerabilidades, pero es probable que la complejidad del código lo agote antes de que agote el espacio más pequeño posible. Esta es la razón por la que existen fuzzers de aprendizaje automático de compilación.
Echa un vistazo a American Fuzzy Lop: enlace
Usted construye un programa de prueba pequeño y contenido que llama directamente a la lógica de su red con 'datos de red' proporcionados por el fuzzer. El fuzzer manipulará un 'zoológico' de muestras (archivos de datos en un directorio) realizando cambios en las muestras y llamando a su lógica. Es mejor capturar manualmente (wireshark) algunas pruebas y extraer los paquetes del cliente para cada respuesta a un archivo de muestra para el fuzzer. Es lo suficientemente inteligente como para reconocer un nonce proporcionado en las muestras.
Encontró un bucle infinito de 1 en 4.4 mil millones para mí en unos pocos segundos.
Con las opciones correctas y un poco de ingeniería, incluso puede encontrar su lectura más allá de los errores del búfer.
Ayuda si su lógica de respuesta ya está bien encapsulada y no llega a los servicios lentos (como la red) en cada mensaje.
No quieres que escriba en tu base de datos.
Es probable que esto requiera una inicialización especial de su estado para aceptar el mismo código de nonce durante la ejecución de una prueba o debe establecer forzosamente un nonce válido en los datos para cada llamada. Afortunadamente, una de las capacidades del fuzzer es copiar su estado y restablecerlo antes de cada variación. Si el nonce se establece durante la inicialización de la sesión antes de los datos de respuesta del cliente, esta opción de rendimiento lo dejará en libertad.
Si no fuera obvio, deberá omitir la funcionalidad SSL para este ejecutable de prueba.
Por supuesto, existen otras soluciones de prueba, como Selenium, pero el enfoque es diferente. ¿Desea encontrar todas las vulnerabilidades con un esfuerzo mínimo de generación de pruebas y obtener una reproducción confiable? Lop fuzzy americano.