Mi pregunta es bastante genérica. Es probable que las personas rechacen la pregunta y los administradores se sientan tentados a cerrarla en off-topic
, etc. Pero, no pude evitar hacer la pregunta para buscar algunas respuestas fructíferas.
Se encuentran diariamente numerosos errores de software / vulnerabilidades / vulnerabilidades. Los foros de seguridad y las listas de correo se ven abrumados al recibir la cantidad de publicaciones que los investigadores / usuarios / ingenieros publican diariamente. Las bases de datos CVE / NVD se están llenando a la velocidad de la luz. Lo que me ha sorprendido durante bastante tiempo es cómo la gente está encontrando tantos errores en un corto período de tiempo, a menos que un gran número de software sea explorado / buscado sistemáticamente en busca de lagunas. Por ejemplo, este tipo ha reportado seis errores en este año hasta ahora.
En lo que respecta a las técnicas de búsqueda de errores, puedo pensar en lo siguiente:
- Fuzzing de caja negra (para productos de código abierto y cerrado (COTS))
- Fuzzing de caja blanca (solo para productos de código abierto)
- Búsqueda guiada de ejecución simbólica (no tan escalable, que yo sepa)
- Ingeniería inversa (agitado, muchas horas de trabajo involucradas)
- Alcanzar un error por casualidad (probablemente aplicable a los casos reportados por la mayoría de los usuarios finales)
- Tutorial del código (necesita acceso al código fuente, adecuado para auditorías internas o productos de código abierto)
- Herramientas de análisis estático que ayudan a encontrar errores de patrones conocidos
- Herramientas de análisis dinámico (no muy familiarizadas con esto)
Todavía me pregunto si alguna combinación de todo lo anterior puede llevar al descubrimiento de tantos errores a una velocidad tan rápida. ¿Hay / hay técnicas principales que me faltan?