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.
- ¿Cómo es trabajar en ciberseguridad?
- ¿Es 'Shadow IT' responsable de más problemas de seguridad que la TI corporativa convencional?
- ¿A través de qué técnicas se puede evitar que la información 'se vea comprometida incluso en los entornos de contrainteligencia de mayor amenaza'?
- ¿Con quién compartirías tus contraseñas?
- ¿Qué se entiende por "ataques teóricos" en la seguridad informática y de Internet?