Formación de Seguridad con Security Development Lifecycle de Microsoft

Esta es la tercera entrega de la serie de seguridad Informática en la ingeniería de software que nos envía el amigo Pablo Andrés Garzón, si no has leído los anteriores artículos, te invito que lo hagas.

El tercer artículo cubrirá el primer nivel tratado en el SDL el cual se enfoca en la capacitación de seguridad que deben tomar los miembros de un equipo de Desarrollo (Software) pero que tan cumplido es esto si tenemos en cuenta que la mayoría de proyectos no cubren este aspecto de capacitación a sus miembros en temas de seguridad ya que en la mayoría de veces la excusa es la falta de tiempo o la prioridad a otras fases del proyecto, pero estos equipos no saben el gran error que están cometiendo ya que en cada fase se incrementara el tiempo ajustado al cronograma que se tenía estimado.

Pero que debe conocer el equipo de Desarrollo de software en temas de seguridad para esto los grandes aspectos a considerar y tener en cuenta por el equipo son los siguientes.

Conceptos Básicos:

Seguridad de diseño, que incluye los siguientes temas:

  • Superficie de reducción de ataque.
  • Defensa en profundidad.
  • Principio de privilegios mínimos.
  • Valores predeterminados de seguridad.

Modelado de amenazas, incluyendo los siguientes temas:

  • Visión general de modelado de amenazas.
  • Diseño de un modelo de amenazas.
  • Codificación a un modelo de amenazas.
  • Pruebas para un modelo de amenazas.

Segura de codificación, incluidos los temas siguientes:

  • Saturaciones de búfer.
  • Errores de entero aritméticos.
  • Cross site scripting.
  • Inyección de SQL.
  • Criptografía débil.
  • Cuestiones de código administrado (Microsoft .NET y Java).

Pruebas de seguridad, incluidos los temas siguientes:

  • Pruebas frente a pruebas funcionales de seguridad.
  • Evaluación del riesgo.
  • Metodologías de prueba automatización de pruebas.

Privacidad, incluyendo los siguientes temas:

  • Tipos de datos de privacidad.
  • Las mejores prácticas de diseño de privacidad análisis de riesgos.
  • Mejores prácticas de desarrollo de privacidad.
  • Pruebas de las mejores prácticas de privacidad.

Para estos temas se recomienda la guía de OWASP donde cubre los aspectos en temas de seguridad en aplicaciones webs donde se tratan algunos temas de los mencionados anteriormente y ya que es la guía fundamental en temas de seguridad por la comunidad involucrada en software.

Por lo general los equipos de software no manejan la mayoría de temas básicos en seguridad llegando así a cometer errores en diseño, Arquitectura y codificación produciendo un nivel bajo en nivel de calidad teniendo en cuenta que un producto de calidad debe tener los aspectos de seguridad cubiertos en cada proceso realizado.

Conceptos Avanzados:

Definición de arquitectura y diseño en temas de seguridad.

  • Arquitectura y diseño de seguridad
  • Diseño de la interfaz de usuario
  • Problemas de seguridad en detalle
  • Procesos de respuesta de seguridad
  • Aplicación de factores atenuantes amenaza personalizado

Los temas avanzados en seguridad deberían ser manejados y conocidos completamente por los arquitectos de software ya que ellos deben cubrir estos temas en sus definiciones para así llegar a tener una arquitectura que respete cuanto temas de negocio, técnicos y de seguridad pero esto no quiere decir que los otros miembros del equipo deben desconocer estos conceptos ya que cualquiera puede realizar la implementación de cada tema de seguridad y no estaría bien solo conocer el aspecto técnico, negocio si no también la parte de seguridad avanzada.

Tratando este tema y teniendo en consideración los grandes aspectos en cuanto a seguridad en el ciclo de vida del software cada equipo de Desarrollo debe contar con un analista de seguridad en software para la realización de las pruebas, manejo y definición de las diferentes métricas para tener en cuenta en cada ciclo de vida del software, cubriendo aspecto tanto técnicos, arquitectónico y conceptuales que mejoren el nivel de calidad del producto de software a desarrollar por el equipo.

En la anterior imagen podemos observar las grandes estimaciones de corrección de código que se realiza después de su liberación en la cual puede tener a lugar a 30 veces el costo de las revisiones realizadas durante la fase de diseño, pero que pasaría si implementamos sdl las vulnerabilidades tienen más posibilidad de ser encontradas antes de su implementación lo que reduciría el costo total del desarrollo.

Pero para mas consideración observemos la siguiente imagen donde podemos concluir que después de tres años de la liberación de SQL Server 2005 Microsoft solo ah publicado tres boletines de seguridad reduciendo la complejidad que se tenía en temas de seguridad en su motor de base de datos, con esto podemos analizar las mejoras que se ah tenido con la implementación de SDL en los productos Microsoft de acuerdo a esto los arquitectos, gerentes de proyectos, Desarrolladores deberían implementar el sdl en sus proyectos de software para así reducir la complejidad que se han presentados en temas de seguridad.

Escrito por:
Pablo Andrés Garzón Vera
Ingeniero de Sistemas (Universidad Manuela Beltrán)
Magister en Dirección Estratégica en Ingeniería de software (Universidad de León).
Para La Comunidad DragonJAR

Subir