¿Por qué el fuzzing es tan efectivo, aunque es un método tan ingenuo?

Estoy de acuerdo con Jon Pincus. He encontrado que el fuzzing es efectivo principalmente porque:

  • Es muy difícil para un desarrollador probar todas las entradas del usuario, especialmente en una aplicación grande. El software de fuzzing automatizado puede probar todas las entradas del usuario, proporcionando así una buena cobertura
  • Es difícil escribir una buena validación de entrada de la lista blanca, especialmente cuando, por ejemplo, tiene que aceptar texto libre, hipertexto, comandos del sistema operativo como entrada legítima sin un conjunto conocido. Esto significa que los desarrolladores recurren a una combinación de listas negras y stripping. La codificación de URL, la doble codificación, el cambio de juego de caracteres y varias otras técnicas pueden evitar estos métodos y las asistencias fuzzing para atrapar algunos de estos agujeros. Por ejemplo, mire cuántas formas hay de probar XSS: http://ha.ckers.org/xss.html
  • Los desarrolladores a menudo olvidan limitar la longitud de entrada aceptada, especialmente si no están utilizando una única rutina de validación centralizada o algo así como las bibliotecas EASPI. Entonces, si el lenguaje es susceptible a desbordamientos del búfer, el fuzzing puede ayudar a detectar estos
  • Una gran cantidad de código al tratar con excepciones estándar puede fallar al abrirse cuando se bombardea con entrada no estándar. Fuzzing es muy bueno para mostrar estos

Fuzzing es una de las pruebas de seguridad automatizadas más efectivas que puede realizar, cada proyecto de desarrollo que le aconsejo, ocupa un lugar destacado en mi lista de prioridades.

Fuzzing es efectivo porque ejerce rutas a través del espacio de programa / datos que los desarrolladores no han considerado y que generalmente no están cubiertas por las pruebas tradicionales.

Sin embargo, una cosa que señalaría: un buen fuzz no es ingenuo. A menudo es técnicamente muy complicado obtener entradas difusas más allá de los filtros de validación, y es un verdadero arte saber dónde poner su atención.