Cómo descubrir vulnerabilidades de seguridad
En primer lugar, debe quedar claro que las vulnerabilidades de seguridad son un subconjunto de defectos de software y que todos los métodos de prueba de software son útiles para descubrir vulnerabilidades de seguridad. Hoy en día, se pueden seguir las rutinas de varios métodos de descubrimiento de vulnerabilidades utilizados por los "hackers":
pruebas difusas (pruebas de caja negra), que realizan pruebas automatizadas mediante la construcción de datos de entrada en el programa que pueden causar problemas.
Auditoría de código fuente (pruebas de caja blanca), ahora existe una gama de herramientas que pueden ayudar a detectar vulnerabilidades de seguridad en los programas, la herramienta más sencilla es la última versión del compilador de C que tengas.
Auditoría de desensamblado de IDA (prueba de caja gris), que es muy similar a la auditoría de código fuente anterior, la única diferencia es que muchas veces puede acceder al software, pero no puede obtener el código fuente para la auditoría, y IDA es una plataforma de desensamblaje muy poderosa que le permite realizar auditorías de seguridad basadas en código ensamblador (efectivamente equivalente al código fuente).
El análisis de seguimiento dinámico, es decir, registrar todas las operaciones (como operaciones de archivos) realizadas por un programa en diferentes condiciones relacionadas con problemas de seguridad, y luego analizar estas secuencias de operaciones para ver si hay problemas, es el descubrimiento de clases de condiciones de carrera Uno de los principales métodos de vulnerabilidad, otros rastros de propagación de contaminación también entran en esta categoría.
Comparación de parches: Los problemas con el software del fabricante generalmente se resuelven en parches. Comparando el código fuente (o código de desensamblaje) de los archivos antes y después del parche, se pueden entender los detalles específicos de la vulnerabilidad.
No importa qué método se utilice, hay un punto clave en juego: para encontrar una ruta de cobertura integral del proceso, se requiere un análisis manual. Las técnicas de análisis varían, incluido el análisis de documentos de diseño, el análisis del código fuente, el análisis del código de desmontaje y la depuración dinámica de programas.