Impulsar la seguridad de las aplicaciones: DAST frente a SAST frente a IAST frente a RASP
En el mundo tecnológico actual, la seguridad ha tomado protagonismo y ha tenido un impacto significativo en la forma en que las empresas desarrollaron sus aplicaciones, debido al auge y evolución en el panorama de ciberataques. Ahora es más importante que nunca identificar y mitigar las vulnerabilidades durante el ciclo de vida del desarrollo de software (SDLC). Afortunadamente, han surgido una serie de estrategias de pruebas de seguridad para mitigar el impacto que las aplicaciones vulnerables pueden tener en los usuarios finales y en la organización, técnicas como Dynamic Application Security Testing (DAST), Static Application Security Testing (SAST), Interactive Application Security Testing (IAST) y Runtime Application Self-Protection (RASP) están en el centro del escenario cuando se trata de metodologías de desarrollo de software seguro y en este artículo, vamos a profundizar en cómo estas técnicas proporcionan herramientas para fortalecer la seguridad de las aplicaciones a través y después de que se haya completado el desarrollo.
Descripción de DAST, SAST, IAST y RASP
Para entender cómo estas herramientas pueden mejorar la seguridad de la aplicación, primero veamos cómo cada herramienta contribuye a que el Ciclo de Vida de Desarrollo de Software sea más robusto.
DAST (Dynamic Application Security Testing): También se conoce como pruebas de caja negra, que evalúa la seguridad de una aplicación mientras esta se está ejecutando. Simula un ataque real con el objetivo de identificar cualquier vulnerabilidad, logrando esto mediante la interacción con la interfaz de usuario de la aplicación. Proporciona un escaneo externo, centrado en los puntos de entrada expuestos y las API. Se usa más comúnmente para probar aplicaciones web y es muy eficaz para identificar fallas de seguridad como ataques de inyección, scripting entre sitios y otros problemas de seguridad, incluidas las vulnerabilidades que se encuentran en OWASP 10; y se puede integrar muy temprano en el ciclo de vida del desarrollo de software y su enfoque es ayudar a las organizaciones a reducir y proteger contra el riesgo que las vulnerabilidades de las aplicaciones podrían causar[1].
SAST (Pruebas estáticas de Seguridad de Aplicaciones): Las pruebas de seguridad no se tratan de velocidad o performance, sino de encontrar vulnerabilidades [2] y SAST ayuda a encontrar estas vulnerabilidades mediante el análisis del código fuente de la aplicación sin ejecutarlo. Busca vulnerabilidades de seguridad, errores de codificación y fallas en el diseño del código. Mediante el uso de SAST, el equipo de desarrolladores puede identificar problemas como prácticas de codificación inseguras y problemas de validación de entradas. Y es notablemente eficaz para identificar problemas en el código en etapas muy tempranas del desarrollo, también fomenta prácticas de codificación seguras, lo que ayuda a mejorar la calidad general del software. También se le conoce como técnica de prueba de caja blanca.
IAST (Pruebas Interactivas de Seguridad de Aplicaciones): IAST combina elementos de DAST y SAST y utiliza un enfoque “similar al de un agente”, lo que significa que los agentes y sensores se ejecutan para analizar continuamente el funcionamiento de la aplicación durante pruebas automatizadas, pruebas manuales o una combinación de los dos [3] Esto proporciona detección y análisis de vulnerabilidades en tiempo real. Debido a que evalúa la aplicación mientras se está ejecutando Puede observar cómo se procesan las entradas para verificar si hay alguna vulnerabilidad. Verifica la aplicación durante el tiempo de ejecución, monitoreo de la ejecución de código, flujo de datos e interacciones con componentes externos. Esto proporciona información en tiempo real desde dentro de la aplicación lo que permite una evaluación más precisa y permite a los desarrolladores solucionar cualquier problema en un breve período de tiempo. Debido a que este método requiere la integración de un agente de prueba o sensores, puede afectar el performance y requerir un esfuerzo de desarrollo adicional.
RASP (Runtime Application Self-Protection): Este método asegura la aplicación desde adentro; lo que significa que está integrada en la aplicación mediante la forma de una biblioteca o agente dentro del entorno de tiempo de ejecución de la aplicación, RASP monitorea el comportamiento de la aplicación y puede detectar y prevenir ataques en tiempo real. En comparación con los otros métodos discutidos anteriormente, se preocupa más por asegurar la aplicación que por encontrar vulnerabilidades o problemas en el código. Y se usa después de que la aplicación ha sido liberada y una vez que identifica algún ataque, lanza una alarma, intenta mitigar el ataque, y alerta al equipo para que puedan tomar las medidas necesarias. RASP tiene como objetivo llenar el vacío dejado por las pruebas de seguridad de aplicaciones y los controles del perímetro de la red. [4]
Pros y contras
Cuando se trata de qué método implementar en el proceso de desarrollo todas estas son buenas opciones y en algunos casos cuando el dinero no es un problema, todas ellas se pueden poner en marcha, pero debido a que esta no siempre es una opción viable, por lo que corresponde a las partes interesadas decidir qué método o combinación de métodos se adapta mejor a las necesidades del proyecto tomando en consideración el alcance, presupuesto y meta.
Conclusión
Hay un viejo proverbio de un autor desconocido que dice lo siguiente:
Por no tener clavo se perdió el zapato
Por no tener un zapato se perdió el caballo.
Por no tener caballo se perdió el jinete.
Por la desgana de un jinete se perdió el mensaje.
Por no haber mensaje se perdió la batalla.
Por no haber batalla, el reino se perdió.
Y todo por la desgana de un clavo de herradura.
-Autor desconocido
Esto es similar en lo que se refiere a la seguridad dentro del ciclo de desarrollo de software, donde una sola vulnerabilidad puede impactar en gran medida la seguridad de la aplicación y por extensión la empresa, su imagen, y las partes interesadas.
Cuando se trata del desarrollo de software, tomar medidas de seguridad desde el inicio del desarrollo puede marcar la diferencia entre una aplicación que sufrió una violación masiva de datos debido a una vulnerabilidad que nunca fue remediada, desde una aplicación que logra mantener seguros todos los datos de sus usuarios debido a un enfoque centrado en la seguridad para el desarrollo de software.
Referencias
[1] Diferencias entre SAST, DAST, IAST y RASP (softwaretestinghelp.com)
[2] Diferencias entre SAST, DAST, IAST y RASP (softwaretestinghelp.com)
[3] DAST vs SAST, IAST y RASP: Guía de métodos de prueba de seguridad de aplicaciones (ptsecurity.com)
[4] ¿Cuál es la diferencia entre SAST, DAST, IAST y RASP? | Sven Ruppert
Diferencias entre SAST, IAST, DAST y RASP | Synopsys
Pauta OWASP DevSecOps - v-0.2 | Fundación OWASP
¿Qué es SAST y cómo funciona el análisis de código estático? | Sinopsis
Qué es el Dynamic Application Security Testing (DAST) | Micro Focus
Pruebas de seguridad de aplicaciones, un nuevo enfoque. Por Declan O'Riordan - YouTube