Comparación de ciclos de vida de desarrollo de software seguro (S-SDLC)
Enviado por erikgx • 27 de Junio de 2021 • Síntesis • 2.015 Palabras (9 Páginas) • 291 Visitas
Asignatura | Datos del alumno | Fecha |
Diseño y Desarrollo de Programas Informáticos Seguros | Apellidos: Gómez Martínez | 20 de mayo de 2021 |
Nombre: Erik |
Trabajo: Comparación de ciclos de vida de desarrollo de software seguro (S-SDLC)
Introducción a los S-SDLC
El Ciclo de Vida del Desarrollo de Software (SDLC por sus siglas en inglés) es un proceso utilizado por la industria del software en el diseño, desarrollo y pruebas de software de calidad, dicho proceso coadyuva en la producción de software de alto rendimiento que cumple o , en su caso, exceda con las expectativas de los clientes.
La ISO/IEC 12207 es el estándar internacional para los SDLC y en el cual se definen todas las tareas o actividades requerida en el desarrollo y mantenimiento de software.
Este proceso consiste en un plan detallado en el cual se describa como desarrollar, mantener, reemplazar, modificar o mejorar software. El modelo típico de SDLC define una metodología a base de 6 etapas para mejorar la calidad del software (Figura 1).
[pic 1]
Figura 1. Representación gráfica de esquema típico de SDLC
Bajo este esquema de SDLC típico, es muy común realizar las pruebas orientadas a seguridad en la etapa de validación, sin embargo esto no garantizaba el encontrar fallas o vulnerabilidades a tiempo, y las cuales se presentaban en la etapa de producción o liberación generando con ello costos para la resolución de los mismos.
En este contexto es en donde se agrega la visión de seguridad en el ciclo, ahora entonces, un S-SDLC es un proceso que garantiza el aseguramiento de las actividades orientadas a la seguridad del software (Mougoue, 2016) tales como:
- Penetración
- Testing
- Revisión de Código
- Análisis de Arquitecturas
Las principales ventajas de utilizar un S-SDLC son:
- Generación de software seguro y confiable
- Concientización de la seguridad por parte de la alta gerencia o tomadores de decisiones.
- Detección temprana de fallas en el sistema
- Reducción de los costos como resultados de la detección temprana y resolución de fallas
- Reducción de riesgos para la organización
Tipos de modelos S-SDLC (Flu Project, 2014)
Entre los S-SDLC más comunes se encuentran:
McGraw's
Este modelo se orienta hacia la identificación de las siguientes prioridades asociadas a la seguridad en el desarrollo del software.
Tareas | Descripción | Etapa(s) en SDLC |
Revisión de código (code review) | Se refiere al análisis del código estático verificando temas de seguridad y el uso de buenas prácticas de programación | Implementación |
Análisis de riesgo | Esta tarea es ejecutada en tres fases y es de vital importancia en la toma de decisiones del proceso | Requerimientos, diseño y validación. |
Test de intrusión (Pentesting). | Se hace uso de la Penetration Testing que consiste en realizar ataques a diversos entornos con la intención de descubrir fallos en la seguridad o vulnerabilidades, con el objetivo de prevenir eventuales ataques. | Implementación y validación |
Test caja negra basados en riesgos | Este tipo de testing se centra en la verificación de las funcionalidades de la aplicación:
| Validación |
Casos de abuso o fuzzing | Realización de pruebas de software que implica proporcionar datos inválidos, inesperados o aleatorios a las entradas de un programa para comprobar su comportamiento. | Validación |
MS Security Development Lifecycle (MS SDL) (Microsoft, 2016)
Este modelo de SDLC fue uno de los pioneros en la materia, fue propuesto por Microsoft basándose en las fases del modelo típico de SDLC; la última versión (5.2) de este modelo fue liberada en 2012 y cuyas etapas se muestran en la Figura 2.
[pic 2]
Figura 2. Etapas del Modelo MS-SDL v 5.2
Etapa | Descripción | Etapa(s) en SDLC |
Entrenamiento | Todos los miembros de los equipos de desarrollo de software deben de contar con el entrenamiento apropiado con respecto a fundamentos de seguridad informática así como estar informados sobre las recientes tendencias en seguridad y privacidad. Cada individuo que desarrollé software debe asistir por lo menos una vez a año a cursos de seguridad informática, este tipo de entrenamientos pueden contribuir para que el software es desarrollado bajo la perspectiva de seguridad y privacidad. Algunos de los conceptos básicos de seguridad son:
| Etapa no existente en SDLC |
Requerimientos | Esta etapa inicial se debe considerar fundamentales la inclusión de la seguridad y privacidad junto con un análisis de costos del proyecto para determinar si los costos de desarrollo y soporte de la integración de seguridad y privacidad son consistentes con el modelo de negocio, esto se puede realizar mediante un modelo de evaluación de riesgos de seguridad y privacidad. Las principales ejes de esta etapa son:
| Planeación/Requerimientos |
Diseño | La etapa de diseño consiste en la elaboración de un plan para ejecutar el proyecto en las etapas que integran al SDL desde implementación hasta verificación y producción. Durante esta etapa se deben de utilizar mejores prácticas enfocadas al diseño para el seguimiento de las especificaciones y realizar un análisis de riesgos para identificar posibles amenazas y vulnerabilidades en el software. Las principales ejes de esta etapa son:
| Diseño |
Implementación | En esta etapa de crean tanto la documentación como las herramientas que el usuario utiliza para tomar decisiones sobre cómo distribuir el software de manera segura. Para este fin, en ésta etapa se establecen mejores prácticas de programación para detectar y, en su caso, eliminar fallas en seguridad y privacidad de manera temprana en el ciclo y con ello ayudar a la reducción de los costos y riesgos para la organización. | Implementación |
Verificación | Esta etapa se encarga de asegurar que el código cumpla con los principios de seguridad y privacidad (mejores prácticas) qie se establecieron en las etapas anteriores. Esto se realiza mediante pruebas (testing) de seguridad, privacidad y seguridad tipo push realizadas por un equipo enfocado en revisión de código, detección de amenazas, revisión de documentación, etc. | Validación |
Liberación | Esta etapa se refiere a cuando el software se encuentra listo para ser utilizado de manera pública. Uno de los conceptos básicos de esta etapa es la planeación y mapeo de un plan de acción en caso de que sean descubiertas vulnerabilidades a partir del uso de los clientes finales. Lo anterior puede generar nuevas versiones del producto que corrijan las fallas o vulnerabilidades, esto lo conocemos como las versiones alfa y beta que dan paso a la versión final del mismo. | Liberación |
Respuesta | Después de que un producto es liberado, el equipo desarrollador debera estar disponible para responder a cualquier falla o vulnerabilidad detectada. | Etapa no existente en SDLC |
...