METODOLOGÍAS PARA DESARROLLAR SOFTWARE SEGURO
Metodologías Enfocadas al desarrollo de Software seguro
- Correctness by Construction (CbyC) : Sus objetivos principales son obtener una taza de defectos mínima y con alta resiliencia al cambio,esto se logra a dos principios como los son; que sea difícil introducir errores y asegurarse que estos errores sean eliminados lo más pronto posible. Este método intenta producir un producto que desde su inicio sea correcto en cuanto requerimientos y comportamiento del sistema de manera sólida y verificable.
Fases CbyC
- Requerimientos: definición de funcionalidades, funcionales y no funcionales, deben tener una trazabilidad y su respectiva amenaza.
- Diseño de alto nivel: Distribución de las funcionalidades, estructura BD's , mecanismos para las transacciones y comunicaciones, se suelen utilizar métodos formales que define una descripción, comportamiento y modelo preciso.
- Especificación del Software: Documentación de especificaciones ( look and feel) del sistema, especificaciones formales y desarrollo de prototipo.
- Diseño detallado: Definición de módulos y procesos, eliminación de ambigüedades de interpretación del diseño.
- Especificación de los módulos: Definición de estado y comportamiento de los módulos que deben tener bajo acoplamiento y alta cohesión, teniendo en cuenta el flujo de información.
- Codificación: Implementación de pruebas de análisis estático al código, para eliminar errores y posible revisión al mismo, utilizando SPARK.
- Especificaciones de las pruebas: Teniendo en cuenta las especificaciones, requerimientos y el diseño se realizan pruebas de valores límites, de comportamiento y requerimientos no funcionales que son a nivel del sistema y orientadas a las especificaciones.
- Construcción del Software: Utilización del método ágil, combinado con modelos como PSP/TSP CbyC aumenta su capacidad para eliminar errores en las primeras etapas.
- Security Development Lifecycle (SDL): Modelo diseñado por Microsoft en 2004, el cual posee 16 actividades que van desde el entrenamiento sobre seguridad, análisis estático y dinámico, hasta el fuzz testing del código, este modelo es reconocido por emplear el modelado de amenazas que permite detectar vulnerabilidades o posibles ataques a partes del código.
Fases SDL
- Entrenamiento: Los desarrolladores, evaluadores y administradores de programas deben participar de una clase anual enfocada en defensa en profundidad, principio de privilegios mínimos, modelos de riesgos, saturaciones de búfer, inyección de código SQL, criptografía débil, evaluación de riesgos y procedimientos de desarrollo de privacidad.
- Requerimientos: El equipo de producción y el consultor de seguridad revisan planes de integración del desarrollo, objetivos y recomendaciones para cumplimiento de metas.
- Diseño: Se lleva a cabo un modelado de amenazas componente por componente para detectar activos que son controlados por el software y sus interfaces que acceden a esos activos, para detectar las amenazas que podrían causarles daño y establecer la probabilidad de ocurrencia y sus respectiva mitigación.
- Implementación: Se realiza la codificación por medio de estándares, se realizan pruebas con técnicas de fuzz testing y análisis de código estático a través de escaneo propio de Microsoft y se realiza integración del Software.
- Verificación: Se realiza una revisión más profunda del código y ejecutar pruebas en partes de código identificado como parte de la superficie de ataque.
- Lanzamiento: Se realiza una revisión final entre dos y seis meses antes de la entrega para verificar niveles de seguridad y la capacidad de soportar ataques.
- Respuesta: Se debe estar preparado para responder a las incidencias de seguridad y aprender de los errores cometidos después del lanzamiento del producto, ya que, no es posible entregar un software totalmente seguro.
Autor: Carlos Joaquin Brito Abundis.
Comentarios
Publicar un comentario