| 4 min de lectura
SAST (pruebas de seguridad de aplicaciones estáticas) es un tipo de prueba caja blanca en la que se utiliza un conjunto de tecnologías para analizar el código fuente, el código de bytes o los binarios de la aplicación con el fin de identificar y revelar vulnerabilidades de seguridad conocidas que puedan ser explotadas por usuarios malintencionados.
Un poco de historia
En su artículo de 1976, "Design and Code Inspections to Reduce Errors in Program Development", Michael E. Fagan explicó cómo realizar una revisión de código y, de este modo, creó el primer proceso de revisión de código del mundo. La inspección de Fagan es un proceso de ejecución formal que implica varias fases y participantes y detecta defectos en el desarrollo de software mediante la validación de criterios de entrada y salida predefinidos.
Flujo de Fagan (imagen tomada de) aquí
En 1992, en su artículo “Experience with Fagan's Inspection Method”, E.P. Doolan propuso utilizar un software que mantuviera una base de datos de errores previamente detectados y escaneara automáticamente el código en busca de ellos. Esto fue lo que dio inicio al uso de herramientas automatizadas de revisión de código.
Ciclo de vida de desarrollo de software (SDLC)
El SDLC es una serie de etapas que deben seguirse para el desarrollo de un producto de software específico. Estas etapas garantizan que la calidad, la funcionalidad y los objetivos de la aplicación cumplan las expectativas del cliente y los estándares de desarrollo.
Ciclo de vida de desarrollo de software (imagen tomada de) aquí
Desde las primeras fases del SDLC es importante utilizar metodologías de prueba que identifiquen rápidamente las vulnerabilidades de seguridad para remediarlas antes del lanzamiento de la aplicación. En los siguientes sitios web se pueden encontrar múltiples vulnerabilidades conocidas:
Imagen 3. Proyecto OWASP Top Ten vía owasp.org
Aplicando SAST podemos detectar y evitar la mayoría de las vulnerabilidades de seguridad enumeradas en los sitios web anteriores.
¿Cómo funciona SAST?
SAST puede aplicarse manualmente o mediante el uso de herramientas automatizadas.
Las pruebas manuales son realizadas por un equipo de evaluadores encargados de revisar el código en búsqueda de vulnerabilidades de seguridad conocidas. Una vez encontradas las vulnerabilidades, se reportan al equipo de desarrollo para su solución. Las pruebas manuales incluyen varias etapas:
-
Sincronización: Esta etapa incluye recibir de los desarrolladores la aplicación y una explicación completa de lo que esta hace y cómo lo hace.
-
Revisión: En esta etapa, el equipo de pruebas toma el código fuente y analiza cada línea, método, clase y archivo en búsqueda de vulnerabilidades de seguridad.
-
Reporte: En esta etapa, se eliminan los falsos positivos y la información irrelevante, y se crean y entregan reportes de hallazgos a los líderes de proyecto responsables de comunicarse con los desarrolladores, quienes luego mitigan o remedian las vulnerabilidades.
Ejemplo de un reporte de hallazgo de una prueba manual (imagen tomada de) aquí
Muchas herramientas nos permiten realizar análisis de código automatizados y nos proporcionar reportes de las vulnerabilidades descubiertas durante el escaneo. Estas herramientas flexibles pueden integrarse con diferentes entornos de desarrollo, incluidos Waterfall, integración continua/despliegue continuo (CI/CD), Agile/DevOps y repositorios, e incluso con otras herramientas de pruebas.
Las herramientas automatizadas utilizan funciones sofisticadas como el análisis de flujo de datos, el análisis de flujo de control y el reconocimiento de patrones para identificar posibles vulnerabilidades de seguridad. El resultado es que las vulnerabilidades conocidas se reportan rápidamente, algo realmente útil en proyectos complejos o con demasiadas líneas de código.
Ejemplo de un reporte de hallazgo de una prueba automatizada (imagen tomada de) aquí
Los reportes siempre deberían ser revisados por expertos, ya que las herramientas automatizadas tienden a notificar un gran número de falsos positivos que deben ser descartados para conocer los riesgos reales de una aplicación.
Según Synopsys, hay seis sencillos pasos necesarios para realizar SAST de forma eficiente en empresas que tienen un gran número de aplicaciones construidas en diferentes lenguajes, marcos y plataformas.
-
Elige una herramienta automatizada capaz de realizar revisiones de código fuente de aplicaciones escritas en los lenguajes de programación que utilices.
-
Gestiona los requisitos de licencia, establece controles de acceso y organiza la infraestructura necesaria para desplegar la herramienta.
-
Personaliza el alcance de la herramienta, añade o elimina requisitos de verificación según las necesidades de tu organización, integra la herramienta en tu entorno de desarrollo y vincula a una plataforma que te permita hacer un seguimiento de sus resultados e informes.
-
Prioriza tus aplicaciones en función de su valor y sus riesgos y realiza escaneos en ellas con la herramienta. Continúa con estas evaluaciones a lo largo de la evolución de tu software.
-
Analiza los resultados obtenidos por la herramienta y descarta los falsos positivos. Prioriza las vulnerabilidades en función del riesgo que representan y lleva a cabo su remediación.
-
Mantén a tus equipos capacitados en el uso adecuado de la herramienta dentro de tu SDLC.
Beneficios
-
SAST puede aplicarse en las primeras fases del SDLC, ya que busca vulnerabilidades en el código antes de que se compile. Siempre que haya remediación, esto puede ayudar a garantizar que muchas vulnerabilidades de seguridad no se acumulen en la aplicación justo antes de su lanzamiento.
-
Remediar vulnerabilidades identificadas con SAST desde las fases tempranas del SDLC significa menores costos en términos de tiempo y dinero en comparación con la detección y remediación tardías.
-
SAST es flexible y puede adaptarse a cualquier tipo de proyecto.
-
SAST puede integrarse completamente con los ambientes CI/CD, Agile y DevOps (DevSecOps).
Conclusiones
-
Siempre se deben realizar pruebas de seguridad a las aplicaciones para garantizar que son capaces de mantener la confidencialidad, integridad y disponibilidad de la información.
-
Realiza revisiones continuas de las aplicaciones. Las pruebas de seguridad nunca deberían realizarse solo una vez.
-
El uso de SAST ayuda a los programadores a aprender o reforzar los estándares y prácticas de codificación segura.
Blog posts recomendados
Quizá te interesen los siguientes posts similares.
Introducción a la ciberseguridad del sector de la aviación
¿Por qué calcular riesgos de ciberseguridad con nuestra métrica CVSSF?
Nuestra nueva arquitectura de pruebas para el desarrollo de software
Protegiendo tus TPV de las ciberamenazas
Los siete ciberataques más exitosos contra esta industria
Retos, amenazas y buenas prácticas para los comerciantes
Sé más seguro aumentando la confianza en tu software