Tecnologías de la Ciberseguridad
Application Security
Auditorías de código estático y dinámico
Auditoría de código estático
El análisis estático del código es el proceso de evaluar el software sin ejecutarlo y consiste en encontrar partes del código que puedan: reducir el rendimiento, provocar errores en el software, complicar el flujo de datos, tener una excesiva complejidad o suponer un problema en la seguridad.
Existen dos tipos de análisis estático de código. Por un lado, está el análisis automático que realiza un programa de ordenador sobre el código y, por otro, está el análisis manual realizado por un auditor experto.
Las posibilidades de mejora del código no quedan aquí. Hay otras técnicas que podemos utilizar para conseguir mejorar el código fuente de la aplicación y, con ello, el software que utilizan los usuarios como producto final:
- Tests: son una serie de procesos que permiten verificar y comprobar que el software cumple con los objetivos y con las exigencias para las que fue creado. Su misión es la de encontrar errores antes de que el software final sea utilizado por los usuarios.
- Profiling: se trata de analizar el rendimiento del software mientras se encuentra en ejecución, determinando qué recursos son utilizados en cada momento por las distintas partes del software. El objetivo es identificar qué partes del código implican una mayor carga para el sistema y, así, poder actuar en consecuencia.
Hay que tener en cuenta que el análisis estático del código no nos permite saber si el software va a hacer lo que se espera de él o no. Podemos analizar el código fuente y averiguar cómo mejorarlo, pero no sabremos si hace lo que tiene que hacer u otra cosa totalmente distinta e inesperada.
Auditoría de código dinámico
El análisis dinámico de código es un tipo de análisis de software que supone la ejecución del programa y permite observar su comportamiento (a diferencia de las técnicas estáticas de análisis que no ejecutan el software).
Igual que el análisis de código estático, el código se podría analizar de forma automática o manual. Para que el análisis dinámico resulte efectivo, el programa analizado se debe ejecutar con los suficientes casos de prueba como para producir un comportamiento interesante. Se pueden usar varias estrategias de pruebas de software para lograrlo.